Programmation orientée objet en C++ abdelwahab.naji@gmail.
com
Atelier N°3 en C++
Mots clés : class, attribut, méthode, visibilité, constructeur, constructeur surchargé, objet courant, this
Type générique, list
Exercice 1 : gestion des points
Soit le diagramme de classes suivant :
1.Créer une application (gestionSegments) en C++
2.Proposer une implémentation du diagramme de classes sachant que : a. x et y représentent les attributs de la classe Point b. Point(int,int) représente le constructeur de la classe Point c. setX(int) et setY(int) deux méthodes pour modifier respectivement les valeurs de x et y depuis un code de l’extérieur de la classe Point d. getX() et getY() deux méthodes pour récupérer respectivement x et y e. update(int,int) une méthode qui permet de modifier à la fois x et y f. display() une méthode pour afficher le détail d’un point sous forme (x,y) g. getDistance(Point) : une méthode qui calcule la distance entre l’objet courant et un autre point passé en paramètres 3.Écrit le programme principal qui permet de : h. Créer trois points p1, p2 et p3. x et y de chaque point sont fournis dans le programme principal par l’utilisateur i. Afficher le détail des trois points j.Changer les coordonnées de p1 k. Calculer la distance de p1 par rapport à p2 et p3 l. Afficher le point le plus proche à p1 4. Créer un tableau de 5 points m. Demander à l’utilisateur de saisir les 5 points n. Afficher le détail de tous les points du tableau o. Calculer les distances de p1 par rapport aux points du tableau p. Reprenez la question 3 en utilisant list. Quelles sont les principales différences entre list et tableau 5. Les k-plus proches voisins à p1 q. Comment peut-on trouver les k-plus proches voisins de p1. Proposer un modèle (quelles sont les données à utiliser ?). r. Afficher les 3 plus proches voisins à p1 Programmation orientée objet en C++ abdelwahab.naji@gmail.com
Exercice 2 : gestion des segments
Soit le diagramme de classes suivant :
1.Créer une application (gestionSegments) en C++
2.Proposer une implémentation du diagramme de classes sachant que : a. Un segment est défini par deux points qui représentent ses extrémités (extrimite1 et extrimite2). La définition du point est similaire de l’exercice précédent En plus, il est défini par une couleur et une longueur b. Segment(Point,Point) représente le constructeur de la classe Segment. Une fois les deux extrémités d’un segment sont définis, calculer la longueur du segment sachant que la longueur du segment est exactement la distance entre ces deux extrémités. c. setExtremite1(Point) et setExtremite2(int) deux méthodes pour modifier respectivement extrimite1 et extrimite2 d. getExtremite1() et getExtremite2() deux méthodes pour récupérer respectivement extrimite1 et extrimite2 e. display() une méthode pour afficher le détail d’un point sous forme [(x1,y1), l,couleur] f. setLongueur() : une méthode qui modifie la longueur du segment en fonction de ces extrémités ; cette méthode ne doit pas recevoir d’arguments, mais tous simplement réutilise la fonction getDistance(Point). Cette fonction doit être appelée à chaque fois une modification de l’une des extrémités du segment ait lieu. (revoir le constructeur). g. getLongeur() : une méthode pour récupérer la longueur d’un segment 3.Écrit le programme principal qui permet de : a. Créer trois points p1, p2 et p3. x et y de chaque point sont fournis dans le programme principal par l’utilisateur b. Créer deux segment s1 et s2 . s1 est défini par p1 et p2 et une couleur fournis par l’utilisateur. s2 est défini par p1 et p3 et une couleur fourni par l’utilisateur. Comment on procède pour attribuer la couleur à chaque segment. Proposer deux méthodes différentes. Apporter les modifications nécessaires au modèle. c. Afficher le détail des deux segments