D'après Wikipedia En géométrie euclidienne, un triangle est une figure plane, formée par trois points sommets, par les trois segments qui les relient, appelés côtés, délimitant un domaine du plan appelé intérieur.
On pourrait traduire cette définition par plusieurs modélisations orientées objets en Java. Par exemple en définissant la classe Triangle par 3 points. D'après la figure ci-dessus, un triangle serait défini par p1, p2 et p3 en vert.
On décide cependant ici de modéliser un triangle non pas par ses sommets, mais par ses côtés. Dans la figure ci-dessus, il s'agit de définir un triangle par les segments s1, s2 et s3 en bleu tels que
s1 = [p1, p2]s2 = [p2, p3]s3 = [p3, p1]Ainsi, les 3 attributs de la classe Triangle sont les 3 côtés du triangle.
En modélisant le problème à l'aide d'un diagramme de classes UML, on obtient le résultat ci-dessous que vous devrez implémenter en totalité.
La classe Point représente un point du plan euclidien.
Ce diagramme exprime que la classe Point possède
x et y de type double qui représentent les coordonnées d'un point,toString() sans paramètre qui renvoie une chaîne de caractères dont je précise ici qu'elle aura la forme "(x, y)" C'est-à-dire que par exemple pour un point de coordonnées 3.5 en x et 8.4 en y, on obtient la chaîne de caractères suivante : "(3.5, 8.4)"À vous d'écrire la classe Point de sorte qu'elle respecte ces consignes.
La classe Segment représente un segment de droite dont les 2 extrémités sont les points p1 et p2.
Ce diagramme exprime que la classe Segment possède
p1 et p2 de type Point qui représentent les extrémités d'un segment,length() qui, comme on peut s'en douter, retourne sa longueur,toString() sans paramètre qui renvoie une chaîne de caractères sous la forme "[(x1, y1) ; (x2, y2)] avec (x1, y1) les coordonnées du point p1 et (x2, y2) les coordonnées du point (x2, y2) On pourra par exemple avoir l'affichage d'un segment comme suit : "[(0.0, 0.0) ; (3.5, 8.4)]"À vous d'écrire la classe Segment de sorte qu'elle respecte ces consignes.
Un triangle est construit par ses sommets (3 points) à partir desquels les trois segments s1, s2, s3 (qui sont ses côtés) sont créés.
Ce diagramme exprime que la classe Triangle possède
s1, s2 et s3 de type Segment qui représentent les 3 segments d'un triangle,perimeter() qui retourne son périmètre,area() qui retourne sa surface (chercher la formule de Héron),barycenter qui retourne son barycentre,toString()sans paramètre qui renvoie une chaîne de caractères sous la forme "<[(0.0, 0.0) ; (3.5, 8.4)], [(3.5, 8.4) ; (8.5, 2.4)], [(8.5, 2.4) ; (0.0, 0.0)]>"< et, à droite,>. Les segments sont séparés par des virgules.La responsabilité de cette classe est de garantir l'intégrité de ses données. C'est-à-dire que les segments d'un triangle doivent rester cohérents quand on change les coordonnées d'un sommet.
À vous d'écrire la classe Triangle de sorte qu'elle respecte ces consignes.
D'après une idée et scénarisation de Céline Fouard (UGA)
Lab instrumenté par Yvan Maillot (UHA)