Escolar Documentos
Profissional Documentos
Cultura Documentos
ORIENTE OBJET
JAVA
Plan du Cours
Chapitre 8 : Lhritage
Chapitre 9 : Gestion des exceptions
Chapitre 10 : Threads
Chapitre 11: Les Swing GUI
Chapitre 12 : Entres Sorties
Chapitre 13: Collections et algorithmes
Chapitre 14 : Applets
Chapitre 15 : JDBC
Mr SYLLA. Ingenieur en informatique
3
Chapitre 1
Introduction Java
C, pascal,cobol,
C++, smalltalk,
java
-PORTABILIT
- FIABILIT
EVOLUTIBITE
REUTISABILITE
Compilation
Programme crit en X
Programme crit en X
Interprteur de X
Compilateur de X
en langage machine
Programme en langage
machine
Programme crit en X
Compilateur de X en Y
(plus proche du langage
Machine)
Programme en
Langage de Y
Interprteur de Y
..
.
Compilation en
PSEUDO-CODE
(byte-code)
processeurs cot
utilisateurs
java-compiler( javac)
Interprtation par la
Machine virtuelle Java pour
les
Systmes dexploitation
PC
Macintosh
Mr SYLLA. Ingenieur en informatique
.....
..
Le pseudo-code est
universel cest dire
indpendant du
compilateur et de
lordinateur o a lieu
cette compilation.
UNIX
8
Programmation structure
Structures
de donnes
( indpendantes
des procdures)
Constitu
Champs
Programmation objet
Constitu
objets
( donnes)
Mthodes
Mr SYLLA. Ingenieur en informatique
Concept de classe
10
La P.O.O :l encapsulation
Principe dencapsulation
des donnes
respect du
Impossible
dagir
directement
sur les
donnes
11
12
-Applications
J2SE( Java2 Standard dition)
-Applet
13
L API
L'A.P.I. (Application Programming Interface) est un ensemble de classes et
interfaces prdfinies utilisables par le programmeur .Elles sont prsentes
dans des packages (java.lang, java.math, java.util, etc..
Un programme JAVA est constitu d'un certain nombre de classes :
- des classes prdfinies de l'API (environ un millier de classes)
(Application Programming Interface) .
- des classes dfinies par l'utilisateur
Un programme utilise
au maximum
les fonctionnalits
prsentes dans l'A.P.I.
PROGRAMME
classes dfinies
pour ce
programme
classe : type de
donnes
+ fonctions pour
les manipuler
API
Mr SYLLA. Ingenieur en informatique
14
Application WEB
15
Programme interface
console
Programme interface
graphique : GUI
(Graphical User Interface)
FIN DU CHAPITRE
Linteraction programme-oprateur se
fait essentiellement via des composants
graphiques. Cest la programmation
vnementielle :le programme ragit
des vnements provoqus par lutilisateur.
Mr SYLLA. Ingenieur en informatique
16
Chapitre 2
17
package home.user.java.essai ;
public class HelloWorld
{
public static void main(String [ ] args)
{
System.out.println("Hello World !");
}
}
en-tte de la classe
Dfinition de la classe
avec une seule mthode
(la mthode main)
18
19
Paquetage de la classe
La notion de paquetage se dfinit comme tant un regroupement ( ensemble) de classes
en une structure commune.
La classe dfinit ici (HelloWorld ) appartient au paquetage nomm :
home.user.java.essai
La classe a un nom simple : HelloWorld
Le nom complet de la classe est : home.user.java.essai.HelloWorld
20
Contenu du programme
System.out.println (argument)
Classe
System du
package
java.lang
System.out.print (argument)
Mthode dinstance de la
classe PrintStream du package
java.io
21
22
javac HelloWorld.java
HelloWorld.class
extension indispensable
java HelloWorld
aucune extension ne doit figurer
Commande java pour excuter le byte
code
ATTENTION: en pratique, on tiendra toujours
compte
des variables denvironnement
Mr SYLLA. Ingenieur
en informatique
23
PATH et CLASSPATH (cf. diapos suivantes).
javac :
java :
24
Catgories dinstructions
package info.fst.sylla.pro;
public class TypesInstructions
{ public static void main(String args [] )
Instruction simple termine
{ System.out.print("instruction simple" );
par un point-virgule
int i = 0;
if ( i > 1000)
System.out.print("instruction de structuration ");
Instruction de structuration
( if, for,.)
static { int tab[ ] = new int[12] ;
for (i = 0;i < tab.length; i++)
Instruction en bloc
tab[i] = i +10;
(prsence des { } )
}
}
Mr SYLLA. Ingenieur en informatique
25
Clavier
valeur_5
_total
_56
$total
2nombre
Ligne .
26
boolean
char
do
final
implements
long
private
static
throw
void
break
class
double
finally
import
native
protected
super
throws
volatile
byte
const
else
float
instanceof
new
public
switch
transient
27
int
nombreEntier =12
, i =1;
28
29
30
31
// un premier programme
// Ceci est un commentaire sur une seule ligne
/* la version JAVA du classique /* ceci est un commentaire pouvant encadrer
Hello World
un nombre quelconques de caractres
*/
sur un nombre quelconque de lignes */
public class HelloWorld {
public static void main(String [ ] args) {
System.out.println("Hello World !");
}
}
Mr SYLLA. Ingenieur en informatique
32
balises de commentaires
JAVADOC
de fonction
@param <nom paramtre> <description>
@return <description>
@exception <nom exception> <description>
@since <n de version>
@deprecated
Mr SYLLA. Ingenieur en informatique
33
La commande javadoc
GENERATION DE LA DOCUMENTATION
javadoc -d <rpertoire o doivent tre mis les fichiers gnrs>
-sourcepath <rpertoire(s) de base des fichiers sources>
<nom du paquetage>
- sourcepath
le(s) rpertoire(s) de base des sources
(s'il y en a plusieurs, sparer par des ; (Windows) ou : (linux))
35
FIN DU CHAPITRE
36
Chapitre 3
Java dispose dun certain nombre de types de base dits primitifs, permettant de
manipuler des entiers, des flottants, des caractres et des boolens.
Ce sont les seuls types du langage qui ne sont pas des classes.
Les types primitifs(au nombre de 8) se rpartissent en quatre grandes catgories
selon la nature des informations quils permettent de manipuler:
- nombres entiers,
- nombres flottants,
- caractres
- boolens
Le type entier
Ils servent reprsenter les nombres entiers relatifs, ils sont au nombre de 4.
BYTE (1 octet) SHORT (2 octets) INT (4 octets) LONG (8 octets)
byte 8 bits : 128
127
short 16 bits : 32768
32767
int
32 bits : 2147483648
2147483647
long 64 bits : 9223372036854775808
9223372036854775807
Les types lmentaires ont une taille idenique quelque soit la plateforme
d'excution.
Le type flottant
Exemple :
float pi = 3.141f; // ncessaire de suffixer par la lettre f sinon erreur de compilation
double v = 3d ;
Le type caractre
40
Le type boolen
41
(1/2)
Exemple :
int nombre;
// dclaration de la variable nombre
nombre = 100; //initialisation de la variable nombre
int nombre = 100; //dclaration et initialisation de la variable nombre
valeur
nom
= oprateur daffectation
type
Remarque :
Une variable manipule dans une mthode (variable locale) ou un bloc devra
toujours tre initialise avant toute utilisation.
La dclaration dune variable rserve de la mmoire pour stocker sa valeur .
Mr SYLLA. Ingenieur en informatique
42
(2/2)
boolean
false
float, double
0.0
char
u\000
classe
null
Mr SYLLA. Ingenieur en informatique
43
}}
Mr SYLLA. Ingenieur en informatique
44
variables finales
(le mot cl final)
Java permet de dclarer que la valeur dune variable ne doit pas tre
modifie pendant lexcution du programme
package home.user.java.essai ;
Une fois convenablement
public class VariableFinale
initialise une variable finale
ne peut pas voir sa valeur volue .
{ final long NOMBRE ;
final double MAX = 100 ; // variable finale = constante
public static void main(String [ ] args)
{
System.out.println(" utilisation de variable constante" );
}
public void affiche( )
{ NOMBRE = 1000 ; // initialisation diffre de la variable NOMBRE
System.out.println(" valeur de MAX= "+MAX);
}
}
45
Les Oprateurs
(arithmtiques binaires)
package home.user.java.essai ;
public class Op_Arith_Binaire
{ public static void main(String [ ] args)
{ int a =100, b = 50 ;
int addit = a + b ,
soustr = a b ,
div
/ b,
a*b;
= a
+ - * / sont des
oprateurs arithmtiques
binaires qui portent sur deux
oprandes de mme type et
renvoient un rsultat du mme
type que le type des oprandes ..
multi =
System.out.println(" addit =" +addit );
System.out.println(" soustr =" +soustr );
System.out.println(" div =" +div );
System.out.println(" multi =" +multi );
}
}
addit
soustr
div
multi
= 150
= 50
= 2
= 5000
46
Les Oprateurs
(unaire et modulo)
package home.user.java.essai ;
public class Op_Unaire_et_Modulo
Oprateur modulo:
{ public static void main(String [ ] args)
fournit le reste de la
{ int a =100, b = 50 ;
division de deux
oprandes.
int _modulo = 100 % 50 ;
System.out.println(" le reste de la division de " +a+" par" +b+" est" +_modulo );
float x =
+ 10.2f ;
double d=
- 50.2 ;
System.out.println (" x et d sont des oprateurs unaires portant sur un seul oprande" );
}
}
Les Oprateurs
(priorit)
48
package home.user.java.essai ;
/* test sur la division par zero de nombres entiers */
public class Test {
public static void main (String args[])
{
int valeur=10;
double rsultat = valeur / 0;
System.out.println("index = " + rsultat);
}
}
Exception in thread main
java.lang.ArithmeticException:/
by zro at Test.main ( Test.java:9
49
50
Conversions implicites(1/5)
Les oprateurs arithmtiques ne sont dfinis que lorsque leurs deux oprandes
sont de mme type. Mais, vous pouvez crire des expressions mixtes dans
lesquelles interviennent des oprandes de types diffrents.
public class ConversionLegale01 {
public static void main(String args [])
{ int a = 10 ;
float p =14 ;
double d= p + a;
System.out.println("la valeur de l'expression mixte (p+a) est :"+d);
}
}
La valeur de lexpression mixte (p+a) est : 24.0
Mr SYLLA. Ingenieur en informatique
51
Conversions implicites(2/5)
double d= p + a;
tape 1: a est converti en float, p reste float
+
tape 2: on effectue p+a qui sera de type float
tape 3: le rsultat est converti
en double
tape 4: le rsultat est stock (affectation)dans la variable d
Mr SYLLA. Ingenieur en informatique
52
Conversions implicites(3/5)
53
Conversions implicites(4/5)
Promotions numriques
les oprateurs numriques ne sont pas dfinis pour les types byte, char
et short.
Toute opration qui utilise lun de ces types ncessite une conversion
pralable dans le type int
Cette conversion porte le nom de promotion numrique .
54
Conversions implicites(5/5)
55
Oprateur
signification
<
<=
>
>=
==
!=
infrieur
infrieur ou gal
suprieur
suprieur ou gal
gal
diffrent de
56
57
Le rsultat est
toujours un
boolen.
Oprateur
Signification
!
&
^
|
&&
||
ngation
et
ou exclusif
ou inclusif
et(avec cout-circuit)
Ou inclusif(avec court-circuit
58
59
60
Oprateurs
dincrmentation et de dcrmentation(1/2)
incrmentation
int i = 10 ;
post incrmentation
En fait en crivant :
int n= i++ ;
on a :
//mais i vaut 11
int j = 10 ;
n= i ;
i = i+1 ;
Et en crivant :
int p= ++j ;
on a:
j = j+ 1 ;
p =j ;
61
Oprateurs
dincrmentation et de dcrmentation(2/2)
Les oprateurs dincrmentation et de dcrmentation permettent dallger lcriture
de certaines expressions et ils nappliquent aucune conversion leur oprande.
package home.user.java.essai ;
public class TestIncrementation {
public static void main(String args [])
{ byte n = 10 ;
int s =n +1 ; // ici on ne peut pas crire n = n+ 1
System.out.println("Affichage 1 :" + ++n); // n reste byte
System.out.println("Affichage 2 :"+ s); // n est converti en int
}
}
Affichage 1 : 11
Affichage 2 : 11
Mr SYLLA. Ingenieur en informatique
62
Oprateurs
daffectation largie
int i= 20 ;
i = i + 1 ; // i vaut 21
i += 1 ; //i vaut aussi 21
Leur rle =
condenser les
expressions.
Pas de conversion.
byte b = 2 ;
b *=2 ; // on value b * 2 en int
// mais le rsultat est
//converti en byte
+= -= *= /= |= ^=
&= <<=
>>=
>>>=
63
Oprateur
de cast
On a vu quil ntait pas possible dcrire :
byte b = 10;
b = b + 1 ; //erreur de compilation
// incompatible type for =. Explicit cast
//needed to convert int to short.
Mais on peut faire ceci :
byte b = 10;
b =(byte) (b + 1) ; // OK
b +=1
64
Oprateurs
de manipulation de bits (1/3)
Oprateur Signification
&
|
^
<<
>>
>>>
~(unaire)
Et (bit bit)
Ou inclusif(bit bit)
Ou exclusif(bit bit)
Dcalage gauche
Dcalage arithmtique droite
Dcalage logique droite
Complment un (bit bit)
Oprande 1
Oprande 2
0
0
0
1
1
0
1
1
&
65
Oprateurs
de manipulation de bits (2/3)
Oprateur de dcalage <<
n (de type int)
n<<2
On dcale
de deux bits
vers la gauche
Rsultat :
0111001101111111011101001110111
0111001101111111011101001110111
011100110111111101110100111011100
deux bits zro droite
perdus
1100110111111101110100111011100
66
Oprateurs
de manipulation de bits (3/3)
Oprateur de dcalage >> et >>>
n (de type int)
n>>3
rsultat
n>>>3
rsultat
1111001101111111011101001110111
1111001101111111011101001110111
1110111001101111111011101001110
0000111001101111111011101001110
67
Oprateur
Conditionnel
?:
if(ciel == bleu)
temps ="beau"
else
temps=" mauvais"
68
()
++ -- --
+ -
<< >>
69
==
l'oprateur OU exclusif
l'oprateur ET
&
l'oprateur OU
l'oprateur ET logique
&&
l'oprateur OU logique
||
FIN DU CHAPITRE
!=
+=
-=
70
Chapitre 4
CHOIX :
if .. else
Branchement inconditionnel
switch
BOUCLES :
for ,
while
do while
break
continue
71
Choix :
if else
switch
package home.user.java.essai ;
public class Exemple_If_Else{
int final MIN = 100;
int final Max = 1000;
int solde ;
public static void main(String args [ ])
{ if ( solde < MIN)
System.out.println("solde insuffisant" ) ;
else
if (solde = = MAX)
System.out.println("solde suffisant" ) ;
}
}
package home.user.java.essai ;
public class Exemple_Switch{
int final MIN = 100;
int final Max = 1000;
int choix , solde;
public static void main(String args [ ])
{ switch(choix)
{ case 1: solde = MIN;
System.out.println("solde insuffisant" ) ;
break;
case 2: solde = MAX ;
System.out.println("solde suffisant" ) ;
break;
default : break
} }}
72
Syntaxes :
if else
switch
if (condition)
Condition boolenne ( true / false )
instruction_1
[ else
instruction_2 ]
Expressions quelconques
Les crochets renferment des instructions
facultatives.
switch (expression)
{
Expression constante d un
type
compatible par affectation
avec
Mr SYLLA. Ingenieur en informatique
le type de expression
73
Linstruction
do while
package home.user.java.essai ;
import java.util.Scanner ; // importation de classe de l API
public class Exemple_Do_While{
public static void main (String args [ ])
{ Scanner clavier = new Scanner (System.in) ;
do
{ System.out.println ("saisir un entier strictement positif " ) ;
n = clavier.nextInt ( ) ; // saisir partir du clavier
if ( n < 0) System.out.println ("la saisie est invalide: recommencez" ) ;
}
while ( (n < 0) || (n = = 0) );
}}
do
instruction
while (condition) ;
Expression quelconque
Condition boolenne
Mr SYLLA. Ingenieur en informatique
74
Linstruction
while
package joseph.cours.java ;
public class Exemple_While{
public static void main(String args [ ])
{ while ( n < = 0)
{ System.out.println ("saisir un entier strictement positif " ) ;
n = clavier.nextInt( ) ; // saisir partir du clavier
if ( n < 0) System.out.println ("la saisie est invalide: recommencez" ) ;
}
}
}
while (condition) ;
instruction
Condition boolenne
Expression
Mr SYLLA. Ingenieur en
informatique
quelconque
75
Linstruction
for
package joseph.cours.java ;
public class Exemple_For{
public static void main (String args [ ])
{ int tab [ ] = new int [ 100] ; // tableau dentiers de taille 100
for( int i = 0 ; i < 100 ; i ++ )
{
tab [ i ] = i + 1;
}
}
}
76
Branchement inconditionnel
break / continue
break
package joseph.cours.java ;
public class Exemple_Break{
public static void main (String args [ ])
{ int tab [ ] = new int [ 10] ; // tableau dentiers de taille 10
for( int i = 0 ; i < 10 ; i ++ )
{ if ( i = = 5 ) break ;// initialiser seulement les 5 premiers elts du tableau
tab [ i ] = i + 1;
//
lments du tableau:
1 2 3 4 5 0 0 0 0
0
77
En cas de boucles
imbriques,
linstruction break
fait sortir uniquement
de la boucle la plus
interne.
78
79
Continue ordinaire
continue
package joseph.cours.java ;
public class Exemple_Continue_Ord{
public static void main (String args [ ])
{ int tab [ ] = new int [ 10] ; // tableau dentiers de taille 10
for( int i = 0 ; i < 10 ; i ++ ) //
ici
{ if ( i = = 5 ) continue ;// on poursuit la boucle for
tab [ i ] = i + 1;
}
for ( int i = 0 ; i < 10 ; i ++ )
System.out.println (" lments du tableau:" +" "+tab [ i] );
}
}
lments du tableau:
1 2 3 4 5 0 6 7 8 9 10
80
FIN DU CHAPITRE
81
Chapitre 5
Le concept de classe
Une classe est la description dun ensemble de donnes et de fonctions
regroupes au sein dune mme entit (appele objet).
On peut dfinir une classe comme tant aussi une description abstraite
dun objet du monde rel.
Un objet sera dfini comme tant une entit concrte ou abstraite du
monde rel. Les objets contiennent des attributs et des mthodes.
Chaque objet sera caractris par son jeu de donnes( on parlera d
attributs ou aussi de champs). Les fonctions qui agissent sur les
donnes de lobjet sont aussi appeles mthodes.
82
83
lextrieur :
principe de lencapsulation des
donnes. Les donnes ne seront
public class Point
accessibles que par lintermdiaire
{
private int x ; // champ x dun objet Point de mthodes prvues cet effet.
private int y ; // champ y dun objet Point
public void initialise ( int abs, int ord )
{ x = abs ;
y = ord ;
}
Une mthode qui ne
} // fin de la classe
fournit aucun rsultat:
void
84
Remarques
Une mthode peut tre dclare private : dans ce cas elle nest visible
qu lintrieur de la classe o elle est dfinie. Pour pouvoir lutiliser dans
un autre programme, il faut ncessairement passer par une mthode
publique de sa classe ayant lappele.
Il est fortement dconseill de dclarer des champs avec lattribut public ,
cela nuit lencapsulation des donnes.
85
new Point ( ) ;
new :
on pourra crire :
// la variable a
?
?
x
y
objet
Point
86
Manipulation dobjets
Une fois qune rfrence un objet est convenablement initialise,
on peut appliquer nimporte quelle mthode lobjet correspondant .
87
88
Le constructeur (1/3)
89
Le constructeur (2/3 )
class Point02
{
private int x ; // champ x dun objet Point
private int y ; // champ y dun objet Point
public Point02 ( int abs, int ord ) // un constructeur deux
arguments
{ x = abs ;
y = ord ;
}
public void deplace (int dx, int dy )
{ x += dx ; y += dy ;
}
public void affiche( )
{ System.out.println("Point de coordonnes" + x + " et " +y);
}
} //fin de la classe Point02
Mr SYLLA. Ingenieur en informatique
90
Le constructeur ( 3/3)
public class TestPoint02
{ public static void main( String args [ ] )
{ Point02 a = new Point02 ( 10, 12 ) ; // le champ x aura la valeur 10 et
y 12
a.affiche( ) ;
a.deplace( 10,12 ) ;
a.affiche( ) ;
Point de coordonnes : 10 et 12
} // fin de la classe TestPoint02
Point de coordonnes : 20 et 24
91
Une classe peut disposer de plusieurs constructeurs: ils se diffrencieront par le nombre
et le type de leurs arguments.
Une classe peut ne pas disposer de constructeur; dans ce cas on peut instancier des
objets comme sil existait un constructeur par dfaut sans arguments et ne faisant rien.
Mais ds quune classe possde au moins un constructeur, ce constructeur par dfaut
ne peut plus tre utilis, dans le dernier exemple on ne pouvait pas faire :
Point a = new Point ( ) ;// incorrect sil ya un constructeur
Une classe peut disposer dun constructeur sans arguments qui est bien diffrent du
constructeur par dfaut (appel souvent pseudo-constructeur).
Un constructeur peut appeler un autre constructeur de la mme classe (A VOIR).
Un constructeur peut tre dclar public ou priv.
Mr SYLLA. Ingenieur en informatique
92
nombre = 0
diviseur =0
93
Type du champ
boolen
char
entier(byte, short, int, long)
flottant( float, double)
objet
false
caractre de code nul
0
0.f ou 0
null
94
final
public class ChampFinal
{ private final int NOMBRE ;// initialisation diffre
private final float MAX ; // initialisation diffre
private final int DIVISEUR = 12 ;// valeur fixe la dclaration
public ChampFinal( int nbre)
{ NOMBRE = nbre ;// la valeur de NOMBRE dpendra de celle de nbre
MAX = 20 ;
// la valeur de MAX est fixe 20 une seule fois.
}
public float diviser( )
{ return (float) NOMBRE / DIVISEUR ;
}
ATTENTION: chaque objet possdera son propre champ NOMBRE,
}
malgr que ce dernier est dclar final.
Mr SYLLA. Ingenieur en informatique
95
Contrat et implmentation
96
Affectation dobjets
Point a ;
12
10
11
14
a=b;
Sera candidat au
ramasse-miettes
sil nest plus rfrenc
12
10
11
14
97
null
class Point03
{
private int x ; // champ x dun objet Point
private int y ; // champ y dun objet Point
public Point03 ( int abs, int ord ) // un constructeur deux arguments
{ x = abs ;
Les variables locales doivent
y = ord ;
toujours tre initialises avant toute
}
utilisation.
public Point03 coincide (Point03 p )
{ Point03 t = null ; // t est locale donc il est ncessaire de linitialiser
if ((p.x = = this.x) && ( p.y = = this.y ))
t = this;
else
t = null;
return t ;
}
} //fin de la classe Point03
Mr SYLLA. Ingenieur en informatique
98
99
==
ATTENTION :
dans lexemple prcdent la mthode equals dont il sagit est celle
de la classe Object (la super classe de toutes les classes en Java).
Souvent, vous serez emmen redfinir cette mthode.
Elle a pour en-tte:
public boolean equals (Object o )
Loprateur != sapplique galement des rfrences dobjet pour tester la diffrence.
Mr SYLLA. Ingenieur en informatique
100
a.k et b.k peuvent tre remplacs par ChampStatic.k . Mais si k est priv, on ne
peut faire ceci.
Mr SYLLA. Ingenieur en informatique
101
102
Mthodes de classe
Une mthode dune classe ayant un rle indpendant de toute instance de la classe doit
tre dclare avec le mot cl static et elle ne pourra tre applique aucun objet de cette
classe, contrairement aux mthodes dinstances.
Lappel de la mthode ne ncessitera que le nom que de la classe.
ATTENTION :
Une mthode statique ne peut pas agir sur des champs usuels,
cest--dire non statiques.
103
104
Remarque :
linitialisation dun champ statique se limite uniquement :
- linitialisation par dfaut,
- linitialisation explicite ventuelle.
Les blocs statiques sont souvent utiliss pour initialiser des variables complexes dont l
initialisation ne peut tre faite par une simple instruction.
Les instructions nont accs quaux champs statiques de la classe.
Les instructions dun bloc statique sont excutes de faon automatique et une seule fois
lorsque la classe est charge.
105
Surdfinition de mthodes
107
108
ATTENTION :
109
Surdfinition de constructeurs
Les constructeurs peuvent tre surdfinis comme toute autre mthode.
public class Individu {
private String nom;
private String prenom;
private Compte c;
/* constructeur deux arguments*/
public Individu ( String lenom, String leprenom ) {
nom = lenom;
prenom = leprenom;
}
/* constructeur trois arguments */
public Individu (String lenom, String leprenom, Compte cp) {
nom = lenom;
prenom = leprenom;
c = cp; } }
Mr SYLLA. Ingenieur en informatique
Attribut de type
objet. Il doit exister
obligatoirement une
classe Compte.
110
Transfert dinformations
avec les mthodes
En Java, la transmission dinformations se fait toujours par valeur.
La transmission, par exemple dun argument une mthode ou
dune valeur de retour se fait toujours par valeur.
A RETENIR
RAPPEL
111
10
1
}
Mr SYLLA. Ingenieur en informatique
Argument effectif.
112
12
12
b
a
10
12
113
Autorfrence : this
( )
114
Autorfrence : this
( 2/2)
Lutilisation de this est trs pratique dans lcriture des mthodes et surtout des
constructeurs.
115
ATTENTION :
117
Objet membre
Objet membre = rfrence un objet
public class Point {
private int x;
private int y;
public Point (int abs, int ord) {
x = abs;
y = ord;
}
public void affiche ( )
{
System.out.println(" Point :" +x " " +y);
}
}
119
120
Une classe interne peut tre dclare avec nimporte quel modificateur daccs ((
(public, protected, par dfaut ou private) et les modificateurs abstract, final, static.
Elles sont membres part entire de la classe qui les englobe et peuvent accder tous les
membres de cette dernire.
Les classes internes ne peuvent pas tre dclares l'intrieur d'initialiseurs
statiques (blocs statiques).
Les classes internes ne doivent pas dclarer de membres statiques, sauf s'ils
comportent le modificateur final, dans le cas contraire, une erreur de compilation se
produit. Toutefois, les membres statiques de la classe externe peuvent tre hrits
sans problme par la classe interne.
Les classes imbriques sont capables d'accder toutes les variables et mthodes de
la classe parente, y compris celles dclares avec un modificateur private.
121
Mr SYLLA. Ingenieur en informatique
On retient:
La notation particulire:
122
Il est possible d'utiliser une mthode de la classe parente pour crer directement
une instance de la classe interne. Toutefois, lors de l'appel de la mthode, il sera
ncessaire de crer une instance de la classe d'inclusion.
package essai0;
public class ClasseParente02 {
private int x = 10, int y = 20;
public int addition ( )
{ ClasseInterne02 obj_in = new ClasseInterne02( );
return (x + y)+ obj_in .multiplier ( );
}
public class ClasseInterne02
{ public int multiplier ( )
{ return x*y ;
}
}
}
Mr SYLLA. Ingenieur en informatique
123
x + ClasseParente03.this.x;
this.y = y + ClasseParente03.this.y;
Parfois, il peut
tre ncessaire
de
distinguer les
variables
situes dans les
classes
interne et
externe.
}
public int multiplier( )
{ return x*y ;
} }}
Mr SYLLA. Ingenieur en informatique
124
125
Classes locales
Une classe locale est dfinie l'intrieur d'une mthode ou un bloc, et agt
librement et essentiellement au sein de cette dernire.
Elles peuvent tre static ou non.
Il n'est possible de dclarer des classes locales, dont la porte est limite au bloc,
qu'avec les modificateurs final ou abstract. Les modificateurs suivants : public,
protected, private et static, sont interdits.
Les donnes membres d'une classe externe peuvent tre accds par la classe locale.
Seules les variables locales et les paramtres de la mthode d'inclusion, dclares
avec le modificateur final, peuvent tre exploites par les classes internes locales,
sinon une erreur se produit lors de la compilation. De plus, ces variables doivent
tre imprativement initialises avant leur emploi dans la classe locale.
Mr SYLLA. Ingenieur en informatique
126
Classes locales
public class ClasseExterne {
private int x,y; private static int z;
public void addition( int p){
final int k = 9;
int u = 121;// inutilisable dans
ClasseLocale
class ClasseLocale {
boolean verif ( )
{if (x+ y+ k = = z) return true;
else
return false;
}
}
}// fin bloc de mthode
}
p et u ne peuvent pas
tre utiliss dans ClassLocale.
Par contre , k est dclare final
donc on peut lutiliser.
REMARQUE:
Lorsqu'une classe est
dclare dans une mthode
statique, alors les variables
d'instances de la classe externe
ne sont plus accessibles pour la
classe imbrique.
L'utilisation d'une classe locale
ne dpend pas de l'instanciation
d'une classe externe.
127
Classes anonymes
128
129
130
class c1{
public
int a;
int b;
protected int c;
private
int d; }
package B
package A
class c2 extends c1{
a bc
class c3 {
class c5 {
a bc
.
}
..
}
131
132
class c1{
public void f( );
void g( );
protected void h( );
private
void k( );
package A
class c2 extends c1{
f( ) g( ) h( )
FIN DU CHAPITRE
class c3 {
class c5 {
f( ) g( ) h( )
.
}
..
}
f( )
133