Académique Documents
Professionnel Documents
Culture Documents
øï8®» °¿®¬·»÷
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
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®» °¿®¬·»÷ ë
} £ ê
void methodeB(float y) { ̱«¬ ±¾¶»¬ ¿¼³»¬ «²» ·¼»²¬·¬7 ¯«· ´» ¼·¬·²¹«» °´»·²»³»²¬ ¼» ¿«¬®» ±¾¶»¬ æ
int z; º´±¿¬ ¨ x : int y: float z:int
do { ·´ °»«¬ 6¬®» ²±³³7 »¬ 6¬®» référencé °¿® «² ²±³
º´±¿¬
›åº´±¿¬ ©
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;
Ðï
Ô¿ ½®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; ð
£ 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
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.