01.07.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!