“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 308 — #318
i
i
i
i
i
i
i
i
308
6
• La programmation orientée objet
class Point {
double x, y;
Point(double x1, y1) { x=x1; y=y1; }
public double getX() { return x; }
public double getY() { return y; }
}
La méthode Point s’appelle un constructeur ; elle est utilisée pour initialiser de
nouveaux objets créés avec new, comme dans :
Point p=new Point(10.0, 20.0);
qui crée le nouvel objet p de classe Point. Nous ajoutons quelques méthodes pour
calculer avec des points :
class Point {
double x, y;
Point(double x1, y1) { x=x1; y=y1; }
public double getX() { return x; }
public double getY() { return y; }
public void origin() { x=0.0; y=0.0; }
public void add(Point p) { x+=p.getX(); y+=p.getY(); }
public void scale(double s) { x*=s; y*=s; }
}
L’argument p de add est une variable locale dont la valeur initiale est une référence à
l’argument effectif. Dans notre système à objets, on peut définir Point ainsi :
class Point
attr x y
meth init(X Y) x:=X y:=Y end
meth getX(X) X=@x end
meth getY(Y) Y=@y end
meth origin x:=0.0 y:=0.0 end
meth add(P) x:=@x+{P getX($)} y:=@y+{P getY($)} end
meth scale(S) x:=@x * S y:=@y * S end
end
Cette définition est similaire à la définition Java. La différence principale est que
les arguments de add et scale ne sont pas dans des cellules locales (ce n’est pas
nécessaire dans l’exemple). Il y a quelques différences mineures de syntaxe, comme les
opérateurs += et *=. Les deux définitions ont des attributs privés. Il y a une différence
subtile dans la visibilité des attributs. En Java, les attributs privés sont visibles pour
tous les objets de la même classe. On peut donc écrire la méthode add différemment :
public void add(Point p) { x+=p.x; y+=p.y; }
Vous trouverez des explications plus détaillées dans la section 6.3.4.
i
i
i
i
i
i
i
i
308
6
• La programmation orientée objet
class Point {
double x, y;
Point(double x1, y1) { x=x1; y=y1; }
public double getX() { return x; }
public double getY() { return y; }
}
La méthode Point s’appelle un constructeur ; elle est utilisée pour initialiser de
nouveaux objets créés avec new, comme dans :
Point p=new Point(10.0, 20.0);
qui crée le nouvel objet p de classe Point. Nous ajoutons quelques méthodes pour
calculer avec des points :
class Point {
double x, y;
Point(double x1, y1) { x=x1; y=y1; }
public double getX() { return x; }
public double getY() { return y; }
public void origin() { x=0.0; y=0.0; }
public void add(Point p) { x+=p.getX(); y+=p.getY(); }
public void scale(double s) { x*=s; y*=s; }
}
L’argument p de add est une variable locale dont la valeur initiale est une référence à
l’argument effectif. Dans notre système à objets, on peut définir Point ainsi :
class Point
attr x y
meth init(X Y) x:=X y:=Y end
meth getX(X) X=@x end
meth getY(Y) Y=@y end
meth origin x:=0.0 y:=0.0 end
meth add(P) x:=@x+{P getX($)} y:=@y+{P getY($)} end
meth scale(S) x:=@x * S y:=@y * S end
end
Cette définition est similaire à la définition Java. La différence principale est que
les arguments de add et scale ne sont pas dans des cellules locales (ce n’est pas
nécessaire dans l’exemple). Il y a quelques différences mineures de syntaxe, comme les
opérateurs += et *=. Les deux définitions ont des attributs privés. Il y a une différence
subtile dans la visibilité des attributs. En Java, les attributs privés sont visibles pour
tous les objets de la même classe. On peut donc écrire la méthode add différemment :
public void add(Point p) { x+=p.x; y+=p.y; }
Vous trouverez des explications plus détaillées dans la section 6.3.4.
