Annexe C 237 L'ensemble des programmes a été développé ... - IRD
Annexe C 237 L'ensemble des programmes a été développé ... - IRD
Annexe C 237 L'ensemble des programmes a été développé ... - IRD
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
comme un couple de deux nombres réels) mais la représentation informatique d'objets plus<br />
complexes sous forme d'un ensemble de données numériques ou numérisables constitue à elle<br />
seule <strong>des</strong> choix importants de modélisation.<br />
En programmation objet, la traditionnelle séparation entre les procédures et les données n'a<br />
plus cours: un objet est à la fois l'ensemble de données (ou champs, ou attributs) qui le<br />
définissent et l'ensemble <strong>des</strong> procédures (ou métho<strong>des</strong>) qui permettent de les manipuler<br />
(Fig.C.8).<br />
Les objets d'un même type sont regroupés en classes, définies comme <strong>des</strong> structures de données<br />
et de procédures. Une classe est un type abstrait pour lequel on peut redéfinir <strong>des</strong> opérations<br />
classiques (allocation d'espace mémoire, affectation, comparaison) et <strong>des</strong> métho<strong>des</strong> plus<br />
spécifiques.<br />
Par exemple, le fait d'avoir défini une classe POINT permet d'écrire simplement <strong>des</strong> expressions<br />
du style A=B pour affecter les valeurs de B à A ou de tester une égalité de points sous la forme<br />
si (A==B) ou de noter A*B la distance entre A et B, ce qui simplifie l'écriture du programme et<br />
améliore sa lisibilité. Cela permet aussi de définir d'autres métho<strong>des</strong> de la classe POINT et<br />
d'écrire pour un point A donné: A.cherche_le_plus_proche(ensemble_de_points) .<br />
class POLYGONE{<br />
int nbre_faces;<br />
FACE* face;<br />
public: POLYGONE () {nbre_faces=0;face=new FACE} //constructeur par défaut<br />
POLYGONE (int n) //un deuxième type de constructeur allouant n faces<br />
POLYGONE (LISTE_POINTS lp) //un deuxième type de constructeur à partir d'une liste de sommets<br />
~POLYGONE (){delete[nbre_faces] FACE} // le <strong>des</strong>tructeur désallouant automatiquement l'objet<br />
lorsque nécessaire<br />
POLYGONE & operator = (const POLYGONE & P); //exemple: POLYGONE P= POLYGONE<br />
(liste_points)<br />
FACE renvoie_face(int no)<br />
affecte_face (int no, face f);<br />
affecte_face (int no, POINT A, POINT B,int voisin); //"surcharge" de la méthode affecte_face qui<br />
affecte_face (int no, SEGMENT s,int voisin); // peut prendre divers objets en paramètres<br />
void liste_attributs();<br />
void trace (Display*dpy, XID xid,GC gc, double échelle, int col);<br />
void colorie (Display*dpy, XID xid,GC gc, double échelle, int col);<br />
POINT barycentre (int choix);<br />
//exemple:G=P.barycentre(choix_gravite)<br />
int contient(POINT M); //exemple if (P.contient(M)) then ....<br />
double calc_surface();<br />
int ordonne(); //exemple: P.ordonne()<br />
void generer_germes(int* nbre_pts, POINT * germes, randint& ir, int type);<br />
void algo_voronoi(ENS_POLYGONES *ens_polygone);<br />
POLYGONE & homothetique(POINT C, double rapport);<br />
POLYGONE & affinite(POINT C, VECT vect)<br />
POLYGONE & translate(VECT vect);<br />
....<br />
};<br />
Figure C.5. Un exemple de classe: la classe POLYGONE<br />
242 <strong>Annexe</strong> C