Vous êtes sur la page 1sur 8

Ý´¿­­»­ »¬ Ѿ¶»¬­ Ý´¿­­»

øï8®» °¿®¬·»÷

˲» ½´¿­­» »­¬ ½±²­¬·¬«7» ¼» ¼»­½®·°¬·±²­ ¼» æ


¼±²²7»­ æ ¯«» ´Ž±² ²±³³» attributsò
Classes °®±½7¼«®»­ æ ¯«» ´Ž±² ²±³³» méthodes
Objets ˲» classe »­¬ «² modèle ¼» ¼7º·²·¬·±² °±«® ¼»­ ±¾¶»¬­
Références
¿§¿²¬ ³6³» ­¬®«½¬«®» ø³6³» »²­»³¾´» ¼ù¿¬¬®·¾«¬­÷ô
Création d’objets ¿§¿²¬ ³6³» ½±³°±®¬»³»²¬ ø³6³»­ ±°7®¿¬·±²­ô ³7¬¸±¼»­÷ô
½±²­¬®«½¬»«® °¿® ¼7º¿«¬ ¿§¿²¬ «²» ­7³¿²¬·¯«» ½±³³«²»ò
¹»­¬·±² ³7³±·®»
Ô»­ objets ­±²¬ ¼»­ ®»°®7­»²¬¿¬·±²­ dynamiques ø·²­¬¿²½·¿¬·±²÷ô
Accès aux attributs d’un objet u ª·ª¿²¬»­ e ¼« ³±¼8´» ¼7º·²· °±«® »«¨ ¿« ¬®¿ª»®­ ¼» ´¿ ½´¿­­»ò
Envoi de messages
˲» ½´¿­­» °»®³»¬ ¼Žinstancier ø½®7»®÷ °´«­·»«®­ ±¾¶»¬­
this : l’objet “courant” ݸ¿¯«» ±¾¶»¬ »­¬ instance ¼Ž«²» ø­»«´»÷ ½´¿­­»
Objets et encapsulation

Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ î

Ý´¿­­» æ Ò±¬¿¬·±² ËÓÔ Ý´¿­­» æ ͧ²¬¿¨» ¶¿ª¿


fichier Point.java
!!! Le nom doit être identique au nom de la classe
Point Nom de la classe class Point {

double x; ²±³ ¼» ´¿ ½´¿­­»

x : double; double y;
attributs void translater(double dx,double dy){
y : double; x += dx; ¿¬¬®·¾«¬­
y += dy;
}
translater(x : double ,y : double)
distance() : double Méthodes
... double distance() { ³7¬¸±¼»­
double dist;
dist = Math.sqrt(x*x+y*y);
return dist;
}

í } ì
Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷
Ý´¿­­» æ ͧ²¬¿¨» ¶¿ª¿ ͧ²¬¿¨» ¶¿ª¿æÊ·­·¾·´·¬7 ¼»­ ª¿®·¿¾´»­
De manière générale
Ê·­·¾·´·¬7 ¼»­ ¿¬¬®·¾«¬­ Variable visible à l'intérieur du bloc ø»²­»³¾´»­ ¼»­ ·²­¬®«½¬·±²­ »²¬®» { › }÷ où elle est définie

class Point { Les attributs sont des variables class Visibilité ¥


« globales » au module que
double x; constitue la classe : ·²¬ ¨
ils sont accessibles dans toutes
double y; les méthodes de la classe. void methodeA() {

void translater(double dx, double dy) { º´±¿¬ ¦ô ©å › x:int z:float w:float


i = …;
¨ += dx; }

void methodeB(float y) {
y += dy; int z; x:int y:float z:int
} do { Variable peut être définie
›åº´±¿¬ © n'importe où dans un bloc
double distance() {
x:int y:float z:int; w:float
double dist; z++;
dist = Math.sqrt( ¨ * ¨ + y * y ); }
return dist; while (z < i);
x=z+ © ; Symbole non défini
} }
Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ ë
} £ ê

ͧ²¬¿¨» ¶¿ª¿æÊ·­·¾·´·¬7 ¼»­ ª¿®·¿¾´»­


De manière générale Ѿ¶»¬­
Variable visible à l'intérieur du bloc ø»²­»³¾´»­ ¼»­ ·²­¬®«½¬·±²­ »²¬®» { › }÷ où elle est définie

˲ ±¾¶»¬ »­¬ instance ¼ù«²» ø­»«´»÷ ½´¿­­» æ


class Visibilité ¥
·´ ­» ½±²º±®³» @ ´¿ ¼»­½®·°¬·±² ¯«» ½»´´»ó½· º±«®²·¬ô
·²¬ ¨
·´ ¿¼³»¬ «²» ª¿´»«® (qui lui est propre) °±«® ½¸¿¯«» ¿¬¬®·¾«¬ ¼7½´¿®7 ¼¿²­ ´¿
void methodeA() { ½´¿­­»ô
º´±¿¬ ¦ô ©å › x:int z:float w:float ½»­ ª¿´»«®­ ½¿®¿½¬7®·­»²¬ ´Žétat ¼» ´ Ž±¾¶»¬
·´ »­¬ °±­­·¾´» ¼» ´«· ¿°°´·¯«»® ¬±«¬» ±°7®¿¬·±² øméthode÷ ¼7º·²·» ¼¿²­ ´¿ ½´¿­­»
i = …;
}

void methodeB(float y) { ̱«¬ ±¾¶»¬ ¿¼³»¬ «²» ·¼»²¬·¬7 ¯«· ´» ¼·­¬·²¹«» °´»·²»³»²¬ ¼»­ ¿«¬®»­ ±¾¶»¬­ æ
int z; º´±¿¬ ¨ x : int y: float z:int
do { ·´ °»«¬ 6¬®» ²±³³7 »¬ 6¬®» référencé °¿® «² ²±³
º´±¿¬
›åº´±¿¬ ©

x : int y:float z:int; w:float


zz++;
}
while (z < i);
x=z+ © ; Symbole non défini
}
é Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ è
£ Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷
Ѿ¶»¬­ æ Ò±¬¿¬·±² ËÓÔ Ñ¾¶»¬­
ݸ¿¯«» ±¾¶»¬ °±·²¬ ·²­¬¿²½» ¼» ´¿ ½´¿­­» Point °±­­7¼»®¿ ­±² °®±°®» x »¬
®»°®7­»²¬¿¬·±² ­±² °®±°®» y
»¨°´·½·¬» ¼»
б·²¬ б·²¬
´¿ ½´¿­­» λ´¿¬·±²
¼Ž·²­¬¿²½·¿¬·±²
» ±ºe
²½
­¬¿
u ·²­¬¿²½» ¼» e u·²
Ò±³ ¼» ½´¿­­» °±·²¬ï æ б·²¬ °±·²¬î æ б·²¬ °±·²¬í æ б·²¬
Ò±³ ¼Ž±¾¶»¬
°±·²¬ï æ б·²¬
¨ ã ïð ¨ ã îð ¨ ã íð
§ ã ïë § ã îë § ã íë
¨ ã îî Ê¿´»«®­ ¼»­
§ ã ïì ¿¬¬®·¾«¬­

Ò±¬¿¬·±² ¼ù«² ±¾¶»¬ °±·²¬ïô ·²­¬¿²½» ¼» ´¿ ½´¿­­» б·²¬


Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ ç Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ ïð

Ѿ¶»¬­ æ ͬ®«½¬«®» ¼»­ ½´¿­­»­ »¬ ±¾¶»¬­ »² ³7³±·®» Î7º7®»²½»


±¾¶»¬ ½±²­¬·¬«7 ¼ù«²» °¿®¬·» þStatiqueþ »¬ ¼ù«²» °¿®¬·» þDynamiqueŒ
б«® ¼7­·¹²»® ¼»­ ±¾¶»¬­ ¼¿²­ «²» ½´¿­­» ø¿¬¬®·¾«¬­ ±« ª¿®·¿¾´»­ ¼¿²­ ´»
ﮬ·» ­¬¿¬·¯«» æ
½±®°­ ¼ Ž«²» ³7¬¸±¼»÷ ±² «¬·´·­» ¼»­ ª¿®·¿¾´»­ ¼Ž«² ¬§°» °¿®¬·½«´·»® æ ´»­
‹ ²» ª¿®·» °¿­ ¼ù«²» ·²­¬¿²½» ¼» ½´¿­­» @ «²» ¿«¬®» références
‹ «² ­»«´ »¨»³°´¿·®» °±«® ´ù»²­»³¾´» ¼»­ ·²­¬¿²½»­ ¼ù«²» ½´¿­­» ˲» ®7º7®»²½» ½±²¬·»²¬ ´Žadresse ¼Ž«² ±¾¶»¬
‹ ½±²­¬·¬«7» ¼»­ ³7¬¸±¼»­ ¼» ´¿ ½´¿­­» °±·²¬»«® ª»®­ ´¿ ­¬®«½¬«®» ¼» ¼±²²7»­ ½±®®»­°±²¼¿²¬ ¿«¨ ¿¬¬®·¾«¬­
‹ °»®³»¬ ¼ù¿½¬·ª»® ´ù±¾¶»¬ øª¿®·¿¾´»­ ¼Ž·²­¬¿²½»÷ °®±°®»­ @ ´Ž±¾¶»¬ò
ﮬ·» ¼§²¿³·¯«» æ
‹ ª¿®·» ¼ù«²» ·²­¬¿²½» ¼» ½´¿­­» @ «²» ¿«¬®» ³7³±·®»
référence Référence null
‹ ª¿®·» ¼«®¿²¬ ´¿ ª·» ¼ù«² ±¾¶»¬ isa
‹ ½±²­¬·¬«7» ¼ù«² »¨»³°´¿·®» ¼» ½¸¿¯«» ¿¬¬®·¾«¬ ¼» ´¿ ½´¿­­»ò x ëé

y ê
³7³±·®» ¼±«¾´» ¨ ô §
Partie statique
structure de la classe ª±·¼ ¬®¿²­´¿¬»®ø›÷
¼±«¾´» ¼·­¬¿²½»ø÷ ˲» ®7º7®»²½» °»«¬ °±­­7¼»® ´¿ ª¿´»«® null
¿«½«² ±¾¶»¬ ²Ž»­¬ ¿½½»­­·¾´» °¿® ½»¬¬» ®7º7®»²½»
isa isa isa
Partie dynamique
structure des x ïð x îð x íð Ü7½´¿®»® «²» ®7º7®»²½» ²» ½®7» °¿­ ¼Ž±¾¶»¬
instances
y ïë y îë y íë ïï «²» ®7º7®»²½» ²Ž»­¬ °¿­ «² ±¾¶»¬ô ½Ž»­¬ «² ²±³ °±«® ¿½½7¼»® @ «² ±¾¶»¬ ïî
Î7º7®»²½» æ Ü7½´¿®¿¬·±² »² ¶¿ª¿ Î7º7®»²½»­ æ Ü·ºº7®»²¬­ ¼»­ °±·²¬»«®­ ¼« Ý

Ü7½´¿®¿¬·±²­ ¼» ®7º7®»²½»­

×¼»²¬·º·½¿¬»«® ¼» ½´¿­­» ×¼»²¬·º·½¿¬»«® Comme un pointeur «²» ®7º7®»²½» ½±²¬·»²¬ «²» ¿¼®»­­» ø´Ž¿¼®»­­» ¼»
´Ž±¾¶»¬ ®7º7®»²½7

Point p1; Ó¿·­ à la différence des pointeurs ´¿ ­»«´» ±°7®¿¬·±² ¿«¬±®·­7» ­«®
Point p2, p3; ´»­ ®7º7®»²½»­ »­¬ ´Žaffectation ¼ Ž«²» ®7º7®»²½» ¼» ³6³» ¬§°»

Point p1;

п® ¼7º¿«¬ @ ´¿ ¼7½´¿®¿¬·±² «²» ®7º7®»²½» ª¿«¬ null Point p2;
»´´» ²» u °±·²¬» e ­«® ¿«½«² ±¾¶»¬ p2 = p1;
Point p1; Point p1 = null;
p1++;
Point
³7³±·®» p1; Point p1 = null;

Référence null
p2 += *p1 +3;
Ðï

ïí Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ ïì

Ý®7¿¬·±² ¼Ž±¾¶»¬­ Ý®7¿¬·±² ¼Ž±¾¶»¬­ æ ײ­¬¿²½·¿¬·±²

new constructeur(liste de paramètres)

Ô¿ ½®7¿¬·±² ¼ Ž«² ±¾¶»¬ @ °¿®¬·® ¼Ž«²» ½´¿­­» »­¬ ¿°°»´7» instanciationò ´»­ ½±²­¬®«½¬»«®­ ±²¬ ´» ³6³» ²±³ ¯«» ´¿ ½´¿­­»
ÔŽ±¾¶»¬ ½®77 »­¬ «²» instance ¼» ´¿ ½´¿­­»ò
·´ »¨·­¬» «² ½±²­¬®«½¬»«® °¿® ¼7º¿«¬
ײ­¬¿²½·¿¬·±² ­» ¼7½±³°±­» »² ¬®±·­ °¸¿­»­ æ ­¿²­ °¿®¿³8¬®»­
®7¼«·¬ @ °¸¿­» ï ø¿´´±½¿¬·±² ³7³±·®»÷
ï æ obtention de l ’espace mémoire ²7½»­­¿·®» @ ´¿ °¿®¬·» ¼§²¿³·¯«» ¼» ·²»¨·­¬¿²¬ ­· «² ¿«¬®» ½±²­¬®«½¬»«® »¨·­¬»
´Ž±¾¶»¬ »¬ ·²·¬·¿´·­¿¬·±² ¼»­ ¿¬¬®·¾«¬­ »² ³7³±·®»
Point p1; ³7³±·®» isa
î æ appel de méthodes particulièresô ´»­ constructeursô ¼7º·²·»­ ¼¿²­ ´¿ x ð
½´¿­­»ò Ѳ »² ®»°¿®´»®¿ °´«­ ¬¿®¼ æó÷ p1 = new Point(); Ðï y ð

í æ ®»²ª±· ¼Ž«²» référence sur l’objet ø­±² ·¼»²¬·¬7÷ ³¿·²¬»²¿²¬ ½®77 »¬ Point p2 = new Point();
isa
·²·¬·¿´·­7ò Ðî
x
Point p3 = p2; ð
Ðí y ð
Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ ïë ïê
Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷
Ý®7¿¬·±² ¼Ž±¾¶»¬­
ß½½8­ ¿«¨ ¿¬¬®·¾«¬­ ¼Ž«² ±¾¶»¬
Ù»­¬·±² ¼» ´¿ ³7³±·®»
ÔŽ·²­¬¿²½·¿¬·±² °®±ª±¯«» «²» ¿´´±½¿¬·±² ¼§²¿³·¯«» ¼» ´¿ ³7³±·®»
Û² Ö¿ª¿ ´» °®±¹®¿³³»«® ²Ž¿ °¿­ @ ­» ­±«½·»® ¼» ´¿ ¹»­¬·±² ³7³±·®» °±«® ¿½½7¼»® ¿«¨ ¿¬¬®·¾«¬­ ¼ù«² ±¾¶»¬ ±² «¬·´·­» «²» ²±¬¿¬·±² °±·²¬7» æ

Í· «² ±¾¶»¬ ²Ž»­¬ °´«­ ®7º7®»²½7 ø°´«­ ¿½½»­­·¾´» ¿« ¬®¿ª»®­ ¼Ž«²» ®7º7®»²½»÷ô nomDeObjet.nomDeVariableDinstance
´¿ ³7³±·®» ¯«· ´«· 7¬¿·¬ ¿´´±«7» »­¬ automatiquement “ libérée ” ø´»
u ¹¿®¾¿¹» ½±´´»½¬±® e ´¿ ®7½«°7®»®¿ »² ¬»³°­ ª±«´«÷ò
߬¬»²¬·±² æ ¼»­¬®«½¬·±² asynchrone ø½¿® ¹7®7» °¿® «² ¬¸®»¿¼÷
ß«½«²» ¹¿®¿²¬·» ¼» ´¿ ¼»­¬®«½¬·±² ø­¿«º »² º·² ¼» °®±¹®¿³³»ÿ Ñ« ¿°°»´ Point p1;
»¨°´·½·¬» ¿« ¹¿®¾¿¹» ½±´´»½¬±®÷
p1 = new Point();
Point p1; ³7³±·®» isa ³7³±·®» isa
x Point p2 = new Point(); x
ð ïð
p1 = new Point(); Ðï Ðï
y y
ð Point p3 = p2; ð

Point p2 = new Point();


isa p1.x = 10; isa
Ðî Ðî
x p2.x = 14; x
Point p3 = p2; ð ïì
Ðí y ð Ðí y îì
P1 = p2; ïé p3.y = p1.x + p2.x; ïè

Û²ª±· ¼» ³»­­¿¹» Û²ª±· ¼» ³»­­¿¹» æ Û¨»³°´»


°±«® þ¼»³¿²¼»®þ @ «² ±¾¶»¬ ¼ù»ºº»½¬«»® «²» ±°7®¿¬·±² ø»¨7½«¬»® ´ù«²» ¼» ­§²¬¿¨» æ
­»­ ³7¬¸±¼»­÷ ·´ º¿«¬ ´«· envoyer un message nomDeObjet.nomDeMethode(<paramètres effectifs>)

«² ³»­­¿¹» »­¬ ½±³°±­7 ¼» ¬®±·­ °¿®¬·»­ ½´¿­­ б·²¬ ¥


¼±«¾´» ¨å ³7³±·®» isa
«²» référence °»®³»¬¬¿²¬ ¼» ¼7­·¹²»® ´ù±¾¶»¬ @ ¯«· ´» ³»­­¿¹» »­¬ »²ª±§7 ¼±«¾´» §å x ïðòð
ª±·¼ ¬®¿²­´¿¬»®ø¼±«¾´» ¼¨ô ¼±«¾´» ¼§÷¥ Ðï y ïðòð
´» nom de la méthode @ »¨7½«¬»® ø½»¬¬» ³7¬¸±¼» ¼±·¬ ¾·»² »²¬»²¼« 6¬®» ¨ õã ¼¨å § õã ¼§å
¼7º·²·» ¼¿²­ ´¿ ½´¿­­» ¼» ´ù±¾¶»¬÷ £
isa
Ðî
¼±«¾´» ¼·­¬¿²½»ø÷ ¥ x
´»­ 7ª»²¬«»´­ paramètres ¼» ´¿ ³7¬¸±¼» ®»¬«®² Ó¿¬¸ò­¯®¬ø¨ö¨õ§ö§÷å
ïðòð

£ y íðòð
£ ññ б·²¬
»²ª±· ¼» ³»­­¿¹» ­·³·´¿·®» @ «² ¿°°»´ ¼» º±²½¬·±²
´»­ ·²­¬®«½¬·±²­ ¼7º·²·»­ ¼¿²­ ´¿ ³7¬¸±¼» ­±²¬ »¨7½«¬7»­ ø»´´»­ б·²¬ °ï ã ²»© б·²¬ø÷å
б·²¬ °î ã ²»© б·²¬ø÷å
­Ž¿°°´·¯«»²¬ ­«® ´»­ ¿¬¬®·¾«¬­ ¼» ´Ž±¾¶»¬ ®7½»°¬»«® ¼« ³»­­¿¹»÷
p1.translater(10.0,10.0); Û²ª±· ¼Ž«² ³»­­¿¹» @ ´Ž±¾¶»¬ °ï

°«·­ ´» ½±²¬®,´» »­¬ ®»¬±«®²7 ¿« °®±¹®¿³³» ¿°°»´¿²¬ p2.translater(p1.x,3.0 * p1.y); Û²ª±· ¼Ž«² ³»­­¿¹» @ ´Ž±¾¶»¬ °î
Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ ïç ͧ­¬»³ò±«¬ò°®·²¬´²øþ¼·­¬¿²½» ¼» °ï @ ±®·¹·²» uõ p1.distance()÷å îð
Û²ª±· ¼» ³»­­¿¹» Û²ª±· ¼» ³»­­¿¹»
п®¿³8¬®»­ ¼»­ ³7¬¸±¼»­ п®¿³8¬®»­ ¼»­ ³7¬¸±¼»­ ø­«·¬»÷
Ajout d’une méthode à la classe Point
ñöö
ö Ì»­¬ ­· ´» б·²¬ ø¯«· ®»9±·¬ ´» ³»­­¿¹»÷ »­¬ °´«­ °®±½¸» ¼» ´Ž±®·¹·²» ¯«Ž«² ¿«¬®» б·²¬ò
«² °¿®¿³8¬®» ¼Ž«²» ³7¬¸±¼» °»«¬ 6¬®» æ ö à°¿®¿³ ° ´» б·²¬ ¿ª»½ ´»¯«»´ ´» б·²¬ ®»½»ª¿²¬ ´» ³»­­¿¹» ¼±·¬ 6¬®» ½±³°¿®7
ö à®»¬«®² ¬®«» ­· ´» °±·²¬ ®»½»ª¿²¬ ´» ³»­­¿¹» »­¬ °´«­ °®±½¸» ¼» ´Ž±®·¹·²» ¯«» °ô º¿´­»
ö ­·²±²ò
˲» ª¿®·¿¾´» ¼» ¬§°» ­·³°´» öñ
¾±±´»¿² °´«­Ð®±½¸»Ñ®·¹·²»Ï«»øб·²¬ °÷ ¥
·º ø¬¸·­ò¼·­¬¿²½»ø÷ ä °ò¼·­¬¿²½»ø÷÷
˲» ®7º7®»²½» ¬§°7» °¿® ²Ž·³°±®¬» ¯«»´´» ½´¿­­» ø½±²²«» ¼¿²­ ´» ½±²¬»¨¬» ®»¬«®² ¬®«»å
¼» ½±³°·´¿¬·±²÷ »´­»
®»¬«®² º¿´­»å
£

»¨»³°´» æ ­¿ª±·® ­· «² б·²¬ »­¬ °´«­ °®±½¸» ¼» ´Ž±®·¹·²» ¯«Ž«² ¿«¬®» б·²¬ò Utilisation
б·²¬ °ï ã ²»© б·²¬ø÷å
б·²¬ °î ã ²»© б·²¬ø÷å
òòò
·º øp1.plusProcheORigineQue(p2)÷
ͧ­¬»³ò±«¬ò°®·²¬´²øþ°ï »­¬ °´«­ °®±½¸» ¼» ´Ž±®·¹·²» ¯«» °îþ÷å
»´­»
Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ îï ͧ­¬»³ò±«¬ò°®·²¬´²øþ°î »­¬ °´«­ °®±½¸» ¼» ´Ž±®·¹·²» ¯«» °ïþ÷å îî

Û²ª±· ¼» ³»­­¿¹»
ÔŽ±¾¶»¬ ½±«®¿²¬ æ Ü7­·¹²7 °¿® ´» ³±¬ ½´7 ¬¸·­
п®¿³8¬®»­ ¼»­ ³7¬¸±¼»­ ø­«·¬»÷

Ô» °¿­­¿¹» ¼» °¿®¿³8¬®»­ ´±®­ ¼» ´Ž»²ª±· ¼» ³»­­¿¹» »­¬ «² °¿­­¿¹» °¿® ª¿´»«®ò Ü¿²­ «² ³»­­¿¹» ´ù¿½½»²¬ »­¬ ³·­ ­«® ´ù±¾¶»¬ ø»¬ ²±³ °¿­ ­«® ´ù¿°°»´ ¼» º±²½¬·±²÷
` ´Ž»¨7½«¬·±² ´» °¿®¿³8¬®» º±®³»´ ¼7º·²· ¼¿²­ ´¿ ­·¹²¿¬«®» ¼» ´¿ ³7¬¸±¼»
»² ÖßÊß ø»¬ ¼» ³¿²·8®» °´«­ ¹7²7®¿´» »² ÐÑÑ÷ ±² 7½®·¬ æ
½±®®»­°±²¼ @ «²» ª¿®·¿¾´» ´±½¿´» ¿« ¾´±½ ¼» ´¿ ³7¬¸±¼»
¼ïã °ïò¼·­¬¿²½»ø÷å ¼îã°îò¼·­¬¿²½»ø÷å
Û´´» »­¬ ·²·¬·¿´·­7» ¿ª»½ ´¿ ª¿´»«® ¼» ´Ž»¨°®»­­·±² ¼7º·²·» °¿® ´» °¿®¿³8¬®» »ºº»½¬·ºò

Ý´¿­­ б·²¬ ¥ °ï ã ²»© б·²¬ø÷å ´ù±¾¶»¬ ¯«· ®»9±·¬ «² ³»­­¿¹» »­¬ ·³°´·½·¬»³»²¬ °¿­­7 ½±³³» ¿®¹«³»²¬ @ ´¿
òòò °î ã ²»© б·²¬ø÷å ³7¬¸±¼» ·²ª±¯«7»
ª±·¼ º±±ø·²¬ ¨ô б·²¬ °÷ ¥ °îò¨ ã ïëå °îò§ ã ïïå
°ïò¨ ã îðå ½»¬ ¿®¹«³»²¬ ·³°´·½·¬» ¼7º·²· °¿® ´» ³±¬ ½´7 this
°ò¬®¿²­´¿¬»®øïðôïð÷å °ïòº±±ø°ïò¨ô °î÷å p1.x : 20 «²» ®7º7®»²½» °¿®¬·½«´·8®»
¨ ã ¨ õ ïðå System.out.printl(« p1x " +p1. x); p2.x : 25
° ã ²»© б·²¬ø÷å System.out.println("p2.x " + p2.x); p2.y : 21 ¼7­·¹²» l’objet courant ø±¾¶»¬ ®7½»°¬»«® ¼« ³»­­¿¹»ô ¿«¯«»´
°ò¬®¿²­´¿¬»®øïðôïð÷å System.out.println("p2.y " + p2.y);
­Ž¿°°´·¯«»²¬ ´»­ ·²­¬®«½¬·±²­ ¼« ½±®°­ ¼» ´¿ ³7¬¸±¼» ±' ¬¸·­ »­¬ «¬·´·­7÷
£ x îð
y
°»«¬ 6¬®» «¬·´·­7 °±«® ®»²¼®» »¨°´·½·¬» ´ù¿½½8­ ¿«¨ °®±°®»­ ¿¬¬®·¾«¬­ »¬
£ °ï ð
³7¬¸±¼»­ ¼7º·²·»­ ¼¿²­ ´¿ ½´¿­­»
x îë
Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ °î y îí Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ îì
îï
ÔŽ±¾¶»¬ ½±«®¿²¬ ÔŽ±¾¶»¬ ½±«®¿²¬
̸·­ »¬ »²ª±· ¼» ³»­­¿¹» ̸·­ »¬ ª¿®·¿¾´»­ ¼Ž·²­¬¿²½»

б«® ·²ª±¯«»®ô ¼¿²­ ´» ½±¼» ¼Ž«²» ½´¿­­»ô ´Ž«²» ¼»­ ³7¬¸±¼»­ ¯«Ž»´´» ¼7º·²·¬
ø®7½«®­·ª·¬7 °±­­·¾´»÷
Implicitement, quand ½´¿­­ б·²¬ ¥
Un attribut est utilisé ¼±«¾´» ¨å
½´¿­­ б·²¬ ¥
¼±«¾´» ¨å dans le corps d’une ¼±«¾´» §å
¼±«¾´» §å • L’objet qui reçoit le message se Méthode, il s’agit de ª±·¼ ¬®¿²­´¿¬»®ø·²¬ ¼¨ô ·²¬ ¼§÷ ¥
ññ ½±²­¬®«½¬»«®­ renvoie à lui-même un autre l’attribut de l’objet ¨ õã ¼¨å § õã ¼§å
б·²¬ø¼±«¾´» ¼¨ô ¼±«¾´» ¼§÷¥ message
òòò courant £
£ <==> this.x += dx; this.y += dy;
// méthodes • this n’est pas indispensable ¼±«¾´» ¼·­¬¿²½»ø÷ ¥
boolean plusProcheDeOrigineQue(Point p){ this est, quelque fois
®»¬«®² Ó¿¬¸ò­¯®¬ø¨ö¨õ§ö§÷å
utilisé, essentiellement
®»¬«®² p.distance() â this.distance() å £
• l’ordre de définition des méthodes pour lever les ambiguités
ª±·¼ °´¿½»®ß«Ð±·²¬ø¼±«¾´» ¨ô ¼±«¾´» §÷¥
} n’a pas d ’importance ¬¸·­ò¨ ã ¨å
¼±«¾´» ¼·­¬¿²½»ø÷ ¥ ¬¸·­ò§ ã §å
®»¬«®² Ó¿¬¸ò­¯®¬ø¨ö¨õ§ö§÷å
£
£ £
£ Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ îë Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ îê

Û²½¿°­«´¿¬·±²
Û²½¿°­«´¿¬·±² Ê·­·¾·´·¬7 ¼»­ ³»³¾®»­ ¼Ž«²» ½´¿­­»
public private protected Pas de
modificateur

×´ »­¬ °±­­·¾´» ¼Ž¿½½7¼»® ¼·®»½¬»³»²¬ ¿«¨ ª¿®·¿¾´»­ ¼ù«² ±¾¶»¬


classe 뫬 6¬®» «¬·´·­7» 뫬 6¬®»
ÔŽ¿½½8­ ¼·®»½¬ ¿«¨ ª¿®·¿¾´»­ »­¬ ²±² ®»½±³³¿²¼7 ½¿® æ ¼¿²­ ²Ž·³°±®¬» «¬·´·­7»
¯«»´´» ¿«¬®» ½´¿­­» «²·¯«»³»²¬
½±²¬®¿·®» ¿« °®·²½·°» ¼ù»²½¿°­«´¿¬·±² Òñß Òñß
¼» ²Ž·³°±®¬» ¯«»´ °¿® ´»­ ½´¿­­»­
´»­ ¼±²²7»­ ¼ù«² ±¾¶»¬ ¼±·ª»²¬ 6¬®» °®·ª7»­ ø½ù»­¬ @ ¼·®» °®±¬7¹7»­÷ °¿½µ¿¹» ¼» ­±²
Û´´»­ ²» ¼±·ª»²¬ 6¬®» ¿½½»­­·¾´» »² ´»½¬«®» »¬ 7½®·¬«®» ¯«Ž¿« ¬®¿ª»®­ °¿½µ¿¹»
¼» ³7¬¸±¼»­ °®7ª«»­ @ ½»¬ »ºº»¬ò attribut ß½½»­­·¾´» ß½½»­­·¾´» ß½½»­­·¾´» ¼¿²­ ß½½»­­·¾´»
¼·®»½¬»³»²¬ «²·¯«»³»²¬ ¼¿²­ ´»­ ½´¿­­»­ ¼» ¼¿²­ ´»­
×´ »­¬ °±­­·¾´» ¼ù¿¹·® ­«® ´¿ visibilité ø±« accessibilité) ¼»­ membres ø¿¬¬®·¾«¬­ ¼»°«·­ ´» ½±¼» ¼» ´» ½±¼» ¼» ´¿ ³6³» °¿½µ¿¹» »¬ ½´¿­­»­ ¼»
»¬ ³7¬¸±¼»­÷ ¼Ž«²» ½´¿­­» ª·­ @ ª·­ ¼»­ ¿«¬®»­ ½´¿­­»­ô ´±®­ ¼» ´»«® ¼7º·²·¬·±²ò ²Ž·³°±®¬» ¯«»´´» ½´¿­­» ¯«· ´» ¼¿²­ ´»­ ­±«­ ³6³»
¿«¬®» ½´¿­­» ¼7º·²·¬ ½´¿­­»­ °¿½µ¿¹»
Ô» ²·ª»¿« ¼» ª·­·¾·´·¬7 ¼Ž«² ³»³¾®» ø¿¬¬®·¾«¬ô ³7¬¸±¼»ô ±« ½±²­¬®«½¬»«®÷ °»«¬ 6¬®»
¼7º·²· »² °®7½7¼¿²¬ ­¿ ¼7½´¿®¿¬·±² ¼ù«² ³±¼·º·½¿¬»«® øprivateô publicô protectedô -÷ méthode 뫬 6¬®» ·²ª±¯«7» @ 뫬 6¬®» 뫬 6¬®» 뫬 6¬®»
°¿®¬·® ¼« ½±¼» ¼» ·²ª±¯«7» ·²ª±¯«7» ¼¿²­ ´»­ ·²ª±¯«7» ¼¿²­
²Ž·³°±®¬» ¯«»´´» «²·¯«»³»²¬ ¼¿²­ ½´¿­­»­ ¼» ³6³» ´»­ ½´¿­­»­ ¼»
¿«¬®» ½´¿­­» ´¿ ½´¿­­» ¯«· ´¿ °¿½µ¿¹» »¬ ¼¿²­ ³6³»
Ý´¿­­»­ »¬ Ѿ¶»¬­ øï8®» °¿®¬·»÷ îé ¼7º·²·¬ ´»­ ­±«­ ½´¿­­»­ °¿½µ¿¹» îè
Û²½¿°­«´¿¬·±² Û²½¿°­«´¿¬·±² æ «­¿¹» ¼»­ ³7¬¸±¼»­ °®·ª7»­
Ó7¬¸±¼»­ ¼Ž¿½½7­ ¿«¨ ¿¬¬®·¾«¬­ °®·ª7­ ø¿½½»­­»«®­ æ ¿½½»­­±®­÷
´»­ ¿¬¬®·¾«¬­ ¼7½´¿®7­ ½±³³» °®·ª7»­ øprivate÷ ­±²¬ ¬±¬¿´»³»²¬ °®±¬7¹7­ ˲» ½´¿­­» °»«¬ ¼7º·²·® ¼»­ ³7¬¸±¼»­ °®·ª7»­ @ «­¿¹» ·²¬»®²»
²» ­±²¬ °´«­ ¼·®»½¬»³»²¬ ¿½½»­­·¾´»­ ¼»°«·­ ´» ½±¼» ¼Ž«²» ¿«¬®» ½´¿­­»
°«¾´·½ ½´¿­­ б·²¬ ¥ °«¾´·½ ½´¿­­ È ¥
public ½´¿­­ б·²¬ ¥ б·²¬ °ï ã ²»© б·²¬ø÷å °®·ª¿¬» ¼±«¾´» ¨å б·²¬ °ã²»© б·²¬ø›÷å
private ¼±«¾´» ¨å
private ¼±«¾´» §å
p1.x ã ïðå p1.setX(10)å °®·ª¿¬» ¼±«¾´» §å ›
public ª±·¼ ¬®¿²­´¿¬»®ø·²¬ ¼¨ô ·²¬ ¼§÷ ¥ p1.y ã ïðå p1.setY(10); ññ ½±²­¬®«½¬»«®­ °ò¼·­¬¿²½»ø÷
¨ õã ¼¨å § õã ¼§å б·²¬ °î ã ²»© б·²¬ø÷å °«¾´·½ б·²¬ø¼±«¾´» ¼¨ô ¼±«¾´» ¼§÷¥ ›
£ òòò £
p2.x ã p1.xå p2.setX(p1.getX())å
public ¼±«¾´» ¼·­¬¿²½»ø÷ ¥ £
®»¬«®² Ó¿¬¸ò­¯®¬ø¨ö¨õ§ö§÷å p2.y ã p1.x õ p1.yå ññ ³7¬¸±¼»­
£ p2.setY(p1.getX()+p1.getY()); Private ¼±«¾´» ¼·­¬¿²½»ø÷ ¥
°«¾´·½ ª±·¼ ­»¬Èø¼±«¾´» ¨÷¥ ®»¬«®² Ó¿¬¸ò­¯®¬ø¨ö¨õ§ö§÷å ‹ «²» ³7¬¸±¼» °®·ª7» ²» °»«¬
¬¸·­ò¨ ã ¨å £ °´«­ 6¬®» ·²ª±¯«7» »² ¼»¸±®­
£ °±«® ³±¼·º·»® «² ¿¬¬®·¾«¬ °®·ª7 ·´ º¿«¬ °«¾´·½ ¾±±´»¿² °´«­Ð®±½¸»Ü»Ñ®·¹·²»Ï«»øб·²¬ °÷¥ ¼« ½±¼» ¼» ´¿ ½´¿­­» ±' »´´»
°«¾´·½ ª±·¼ ­»¬Çø¼±«¾´» §÷¥ °¿­­»® °¿® «²» ³7¬¸±¼» ¼» ¬§°»
¬¸·­ò§ ã §å ®»¬«®² °ò¼·­¬¿²½»ø÷ ä ¬¸·­ò¼·­¬¿²½»ø÷å »­¬ ¼7º·²·»
£ °®±½7¼«®» ø¿°°»´7» ¿½½»­­»«® ±« £
°«¾´·½ ¼±«¾´» ¹»¬Èø÷¥ ³±¼·º·½¿¬»«®÷ òòò
®»¬«®² ¨å £
£
°«¾´·½ ¼±«¾´» ¹»¬Çø÷¥
°±«® ¿½½7¼»® @ ´¿ ª¿´»«® ¼Ž«² ¿¬¬®·¾«¬
®»¬«®² §å °®·ª7 ·´ º¿«¬ °¿­­»® °¿® «²» ³7¬¸±¼» ¼» ‹ ´¿ ³7¬¸±¼» °®·ª7» ¼·­¬¿²½» ¿ 7¬7 ¼7º·²·» °±«® «² «­¿¹» ·²¬»®²» @
£ ¬§°» º±²½¬·±² ø¿°°»´7 ¿½½»­­»«®÷ ´¿ ½´¿­­»ò Û´´» »­¬ ·²ª±¯«7» °¿® ¼Ž¿«¬®»­ ³7¬¸±¼»­ ¼» ­¿ ½´¿­­» íð
£
îç

Û²½¿°­«´¿¬·±² æ ײ¬7®6¬­ ã α¾«­¬»­­» ¼« ½±¼» Û²½¿°­«´¿¬·±² æ ײ¬7®6¬­ ã Ûª±´«¬·±² ¼« ½±¼»

L’Accès aux données ne se fait qu’au travers des méthodes définies Masquer l’implémentation Facilite d’évolution du logiciel
par le concepteur de la classe.

˲ ±¾¶»¬ ²» °»«¬ 6¬®» «¬·´·­7 ¯«» ­»´±² ´¿ ³¿²·8®» °®7ª«» ´±®­ ¼» ´¿ §


½±²½»°¬·±² ¼» ­¿ ½´¿­­»ò Ý» ¯«· 7´·³·²» ´» ®·­¯«» ¼Ž«¬·´·­¿¬·±² ®
È
·²½±¸7®»²¬» æ Robustesse du code
ññ ®»°®7­»²¬¿¬·±² ¼Ž«² °±·²¬ ¼« °´¿² ññ ®»°®7­»²¬¿¬·±² ¼Ž«² °±·²¬ ¼» ´Ž7½®¿²
°«¾´·½ ½´¿­­ б·²¬ ¥ °«¾´·½ ½´¿­­ з¨»´ ¥
ññ ®»°®7­»²¬¿¬·±² ¼Ž«² °±·²¬ ¼» ´Ž7½®¿² Code utilisant la classe Pixel ññ ®»°®7­»²¬¿¬·±² »² ½±±®¼±²²7»­ ½¿®¬7­·»²²»­ ññ ®»°®7­»²¬¿¬·±² »² ½±±®¼±²²7»­ °±´¿·®»­
°«¾´·½ ½´¿­­ з¨»´ ¥ з¨»´ °ï ã ²»© з¨»´ø÷å °®·ª¿¬» ¼±«¾´» ¨å °®·ª¿¬» ¼±«¾´» ®
ññ ®»°®7­»²¬¿¬·±² »² ½±±®¼±²²7»­ ½¿®¬7­·»²²»­ °®·ª¿¬» ¼±«¾´» §å °®·ª¿¬» ¼±«¾´» å
°®·ª¿¬» ·²¬ ¨å ññ ð äã ¨ ä ïðîì °«¾´·½ ¼±«¾´» ¼·­¬¿²½»ø÷ ¥ °«¾´·½ ¼±«¾´» ¼·­¬¿²½»ø÷ ¥
°®·ª¿¬» ·²¬ §å ññ ð äã § ä éèð °ïò¬®¿²­´¿¬»®øïððôïðð÷å
®»¬«®² Ó¿¬¸ò­¯®¬ø¨ö¨õ§ö§÷å ®»¬«®² ®å
°«¾´·½ ·²¬ ¹»¬Èø÷ ¥ £ £
®»¬«®² ¨å ññ´» ³»­­¿¹» ½·ó¼»­­«­ ³±¼·º·»®¿ ´»­ °«¾´·½ ª±·¼ ¬®¿²­´¿¬»®ø¼±«¾´» ¼¨ô¼±«¾´» ¼§÷ ¥ °«¾´·½ ª±·¼ ¬®¿²­´¿¬»®ø¼±«¾´» ¼®ô¼±«¾´» ¼ ÷ ¥
£ ññ½±±®¼±²²7»­ ¼» °ïæ ¨ ã ïððô § ã ïððò ›òò ››››
°«¾´·½ ª±·¼ ¬®¿²­´¿¬»®ø·²¬ ¼¨ô·²¬ ¼§÷ ¥ £ £
·º ø øø¨ õ ¼¨÷ ä ïðîì÷ úú øø¨ õ ¼¨÷ âã ð÷ ÷ °ïò¬®¿²­´¿¬»®øïðððôóíðð÷å òòò òòò
¨ ã ¨ õ¼¨å £ ññ б·²¬ £ ññ б·²¬
·º ø øø§ õ ¼§÷ ä éèð÷ úú øø§ õ ¼§÷ âã ð÷ ÷
§ ã § õ ¼§å ññÔ» ³»­­¿¹» ½·ó¼»­­«­ ²» ³±¼·º·»®¿ °¿­
ññ´»­ ½±±®¼±²²7»­ ¼» °ïô °«·­¯«» ¨ б·²¬ °ï ã ²»© б·²¬ø÷å La modification de l’implémentation n’a
£
ݱ¼» «¬·´·­¿²¬ ´¿ °ïò¬®¿²­´¿¬»®ø¨ïô§ï÷å pas d’impact sur le code utilisant la
òòò ññ¼»ª·»²¼®¿·¬ ãïïððâïðîì »¬ § ã óîððäð
íï ½´¿­­» б·²¬ ¼±«¾´» ¼ ã °ïò¼·­¬¿²½»ø÷å classe si la partie publique (l’interface
£ ññ з¨»´ òòò òòò de la classe) demeure inchangée

Vous aimerez peut-être aussi