Classes géométriques [oo02] - Exercice Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 10 avril 2015 Table des matières 1 Classe Cercle / pg-cerclec1 2 1.1 Programme de test.............................. 2 2 Classe Couronne / pg-couronnec1 4 2.1 Programme de test.............................. 4 3 Classe Rectangle / pg-rectanglec1 6 3.1 Programme de test.............................. 6 4 Classe Carre / pg-carrec1 8 4.1 Programme de test.............................. 8 5 Classe Point / pg-pointc1 10 5.1 Programme de test.............................. 10 6 Classe Point3d 12 6.1 Programme de test.............................. 12 Classes géométriques / pg-cgeom (C++, TP) Cet exercice réalise des classes géométriques. 1
Unisciel algoprog Classes géométriques / oo02 2 1 Classe Cercle / pg-cerclec1 Ce problème réalise une classe modélisant des cercles (du plan). Écrivez une classe Cercle comprenant un rayon (réel). Écrivez un constructeur à un paramètre r (réel) initialisant son attribut par appel à la méthode assign(r) définie ci-après. Écrivez un accesseur getrayon du rayon. Écrivez un mutateur assign(r) qui fixe le rayon au réel r. La méthode doit fixer le rayon à zéro si r n est pas positif. Écrivez une méthode afficher qui affiche : Cercle: R=[rayon] Écrivez une méthode surface qui calcule et renvoie la surface du cercle. De même, écrivez une méthode perimetre qui calcule et renvoie le périmètre du cercle. 1.1 Programme de test Écrivez une procédure affichercercle(txt,obj) qui affiche une chaîne de caractères txt puis les propriétés d un Cercle obj. Écrivez un programme de sorte à obtenir le résultat d exécution suivant. ==> Etat initial Cercle: R=1.5 ==> Après assign valide Cercle: R=3.4 ==> Après assign invalide Cercle: R=0
Unisciel algoprog Classes géométriques / oo02 3
Unisciel algoprog Classes géométriques / oo02 4 2 Classe Couronne / pg-couronnec1 Ce problème utilise la classe Cercle. Écrivez une classe Couronne comprenant un Cercle interne c1 et un Cercle externe c2. Écrivez un constructeur à deux paramètres réels initialisant ses attributs. Écrivez des accesseurs getr1 du rayon du cercle interne et getr2 du rayon du cercle externe. Écrivez un mutateur assign(r1,r2) qui fixe les rayons r1 (réel) et r2 (réel) des cercles interne et externe. Écrivez une méthode afficher qui affiche : couronne: R1=[r1] R2=[r2] 2.1 Programme de test Écrivez une procédure affichercouronne(txt,obj) qui affiche une chaîne de caractères txt puis les propriétés d une Couronne obj.
Unisciel algoprog Classes géométriques / oo02 5 Écrivez un programme de sorte à obtenir l exemple d exécution. ==> Etat Initial couronne: R1=1.5 R2=2.3 ==> Apres assign r1 negatif couronne: R1=0 R2=6.1 ==> Après assign avec r1 > r2 couronne: R1=5.2 R2=8
Unisciel algoprog Classes géométriques / oo02 6 3 Classe Rectangle / pg-rectanglec1 Ce problème réalise une classe modélisant des rectangles (du plan). Écrivez une classe Rectangle ayant pour attributs une largeur (réel) et une hauteur (réel). Écrivez un constructeur par défaut initialisant les attributs à zéro. Écrivez un constructeur à deux paramètres initialisant sa largeur w (réel) et sa hauteur h (réel) par appel à la méthode assign(w,h) définie ci-après. Écrivez des accesseurs getlargeur de la largeur et gethauteur de la hauteur. Écrivez un mutateur assign(w,h) qui fixe la largeur w (réel) et la hauteur h (réel) du Rectangle. La méthode doit fixer l attribut correspondant à zéro si le paramètre w (largeur) ou h (hauteur) n est pas positif. Écrivez une méthode afficher qui affiche : rect: L=[largeur], H=[hauteur] Écrivez une méthode surface qui calcule et renvoie la surface du rectangle. De même, écrivez une méthode perimetre qui calcule et renvoie le périmetre du rectangle. 3.1 Programme de test Écrivez une procédure afficherrect(txt,obj) qui affiche une chaîne de caractères txt puis les propriétés d un Rectangle obj.
Unisciel algoprog Classes géométriques / oo02 7 Écrivez un programme de sorte à obtenir le résultat d exécution suivant.
Unisciel algoprog Classes géométriques / oo02 8 4 Classe Carre / pg-carrec1 Ce problème utilise la classe Rectangle. Écrivez une classe Carre comprenant un Rectangle rc. Écrivez un constructeur à un paramètre lgr (réel) initialisant son attribut par par appel à la méthode assign(lgr). Écrivez un accesseur getcote de la longueur des côtés. Écrivez un mutateur assign(lgr) qui fixe la longueur lgr (réel) des côtés. Écrivez une méthode afficher qui affiche : carre: C=[lgr] Écrivez une méthode surface qui calcule et renvoie la surface du carré. De même, écrivez une méthode perimetre qui calcule et renvoie le périmètre du carré. 4.1 Programme de test Écrivez une procédure affichercarre(txt,obj) qui affiche une chaîne de caractères txt puis les propriétés d un Carre obj.
Unisciel algoprog Classes géométriques / oo02 9 Écrivez un programme de sorte à obtenir l exemple d exécution. ==> Etat Initial carre: C=1.5 ==> Apres assign valide carre: C=6.5 ==> Après assign invalide carre: C=0
Unisciel algoprog Classes géométriques / oo02 10 5 Classe Point / pg-pointc1 Ce problème réalise une classe modélisant des coordonnées du plan R. Écrivez une classe Point comprenant une abscisse x (réel) et une ordonnée y (réel). Écrivez un constructeur par défaut qui fixe le Point en (0.0,0.0). Écrivez un constructeur qui fixe le Point en (x,y) par appel à la méthode assign(x,y) définie ci-après. Les paramètres sont des réels. Écrivez des accesseurs getx de l abscisse et gety de l ordonnée. Écrivez un mutateur assign(x,y) qui fixe les nouvelles coordonnées (x,y). Écrivez une méthode afficher qui affiche le Point sous le format (x,y). Écrivez une méthode distance(p) qui calcule et renvoie la distance entre l objet et un Point p. Rappel : La distance entre deux points (x1, y1) et (x2, y2) du plan est fournie par la formule : (x 2 x 1 ) 2 + (y 2 y 1 ) 2 Écrivez une méthode translater(dx,dy) qui translate l objet de (dx,dy) relativement à sa position. 5.1 Programme de test Écrivez une procédure afficherpoint(txt,p) qui affiche une chaîne de caractères txt puis un Point p. Écrivez une procédure saisirpoint(txt,p) qui affiche une chaîne de caractères txt puis saisit un Point dans p sous le format (x,y).
Unisciel algoprog Classes géométriques / oo02 11 Écrivez un programme de sorte à obtenir le résultat d exécution suivant. ==> Etat par defaut (0,0) ==> Etat Initial (4,3.5) ==> Apres assign (3.2,6.9) Votre Point, format: (x,y)? (-1.6,10.5) ==> Apres saisie (-1.6,10.5) ==> Apres permutation coord. (10.5,-1.6) ==> Apres translater(4,6) (14.5,4.4)
Unisciel algoprog Classes géométriques / oo02 12 6 Classe Point3d Ce problème réalise une classe modélisant des coordonnées de l espace R. Créez une classe Point3d qui représente un point dans l espace par ses trois coordonnées (x, y, z). Écrivez un constructeur par défaut qui fixe le Point3d en (0.0,0.0,0.0) Écrivez un constructeur à trois paramètres qui initialise les attributs par appel à la méthode assign(x,y,z) définie ci-après. Les paramètres sont des réels. Écrivez des méthodes accesseurs getx, gety et getz qui retournent l attribut correspondant. Écrivez une méthode assign(x,y,z) qui initialise les attributs correspondants. Écrivez une méthode afficher qui affiche les coordonnées de l objet selon le format «(x,y,z)». Écrivez une méthode distance(p2) qui calcule et renvoie la distance entre l objet et un Point3d p2. Rappel : La distance entre deux points (x1,y1,z1) et (x2,y2,z2) est fournie par la formule : (x 2 x 1 ) 2 + (y 2 y 1 ) 2 + (z 2 z 1 ) 2 6.1 Programme de test