|
@@ -5,9 +5,10 @@ Dans cette première partie, nous allons nous familiariser avec le code de l’a
|
|
|
|
|
|
|
|
|
### 🔬 À la recherche des classes perdues...
|
|
|
-
|
|
|
+---
|
|
|
D’abord, importez le projet sous IntelliJ, Eclipse, ou un autre environnement de développement de votre choix.
|
|
|
Les dépendances du projet sont gérées automatiquement grâce à Maven. Par curiosité, vous pouvez les identifier dans le fichier `pom.xml` :
|
|
|
+
|
|
|
- openjfx
|
|
|
- junit (pour les tests)
|
|
|
- testfx (pour les tests graphiques)
|
|
@@ -15,8 +16,8 @@ Les dépendances du projet sont gérées automatiquement grâce à Maven. Par cu
|
|
|
Compilez le projet, lancez l'application, et testez !
|
|
|
|
|
|
>**🖥 TODO**
|
|
|
-> - Créez un diagramme des classes, il vous sera utile par la suite. Pour cela, vous pouvez utiliser un stylo et un papier... 📝
|
|
|
->
|
|
|
+>
|
|
|
+> - Créez un diagramme des classes, il vous sera utile par la suite. <br>Pour cela, vous pouvez utiliser un stylo et un papier... 📝
|
|
|
> - Efforcez-vous de comprendre le rôle de chaque classe 🧐
|
|
|
|
|
|
<br>Les formes géométriques qui sont dessinées sont représentées par des objets, qui sont stockés dans le `DrawingPane`. Mais où sont les classes représentant les différentes formes géométriques ??
|
|
@@ -26,10 +27,11 @@ Compilez le projet, lancez l'application, et testez !
|
|
|
<br>
|
|
|
|
|
|
### 🌴 Le triangle des bermudes
|
|
|
-
|
|
|
+---
|
|
|
On veut maintenant pouvoir dessiner des triangles.
|
|
|
|
|
|
>**🖥 TODO**
|
|
|
+>
|
|
|
> - Décidez quelle classe vous utiliserez pour représenter cette nouvelle forme géométrique.
|
|
|
> - En vous inspirant de la manière dont les rectangles et les ellipses sont créés et ajoutés au `DrawingPane`, ajoutez les classes nécessaires ainsi qu’un bouton dans l’interface pour pouvoir dessiner des triangles.
|
|
|
> - Définissez un style CSS à appliquer aux triangles.
|
|
@@ -37,13 +39,14 @@ On veut maintenant pouvoir dessiner des triangles.
|
|
|
<br>
|
|
|
|
|
|
### 🩺 Des tests
|
|
|
-
|
|
|
+---
|
|
|
Les tests unitaires sont un excellent moyen de vérifier la qualité du code produit. Il y a beaucoup d’avantages à utiliser les tests unitaires, comme vous le verrez dans un autre module. Au fur et à mesure du développement de l’application, vous devrez écrire les tests permettant de vérifier la validité de votre code, et d’identifier des erreurs possibles.
|
|
|
|
|
|
Commençons tout de suite !
|
|
|
|
|
|
Dans le package `test`, il y a déjà une classe permettant de tester quelques méthodes de l’application.
|
|
|
>**🖥 TODO**
|
|
|
+>
|
|
|
> - En vous inspirant des tests existants, écrivez quelques tests unitaires permettant de vérifier le bon fonctionnement des classes que vous avez ajoutées pour dessiner des triangles. Pensez aux différents cas possibles.
|
|
|
>
|
|
|
> - Vérifiez que les tests passent, ou corrigez votre code si nécessaire.
|
|
@@ -52,10 +55,11 @@ Dans la suite du projet, nous continuerons à écrire des tests pour chaque nouv
|
|
|
<br>
|
|
|
|
|
|
### 🎮 Tu me montres ta collection ?
|
|
|
-
|
|
|
+---
|
|
|
La classe `DrawingPane` contient un attribut de type `ArrayList` pour stocker les formes géométriques créées. Pour y accéder, un getter a été implémenté : il s’agit de la méthode `getShapes()`. Il est d’ailleurs utilisé dans la classe `MouseMoveHandler`, par exemple.
|
|
|
|
|
|
>**🖥 TODO**
|
|
|
+>
|
|
|
> - Quel problème relatif au principe d’encapsulation ce getter pose-t-il ?
|
|
|
|
|
|
Pour vous en rendre compte, dans la classe `ShapeButtonHandler`, essayez de remplacer la ligne :
|
|
@@ -67,12 +71,13 @@ par celle-ci :
|
|
|
drawingPane.getShapes().add(shape);
|
|
|
|
|
|
>**🖥 TODO**
|
|
|
+>
|
|
|
> - Que se passe-t-il, et pourquoi ? 👾
|
|
|
-> - Qu'est ce que cela révèle à propos de ce fameux getter ?
|
|
|
+> - Qu'est-ce que cela révèle à propos de ce fameux getter ?
|
|
|
> - Un peu de réflexion : Que proposeriez-vous pour corriger ce problème ? 🤷🏽
|
|
|
|
|
|
Réfléchissez et proposez une solution avant de [lire la suite... ](./TP1_plus.md)
|
|
|
|
|
|
-
|
|
|
+<br>
|
|
|
|
|
|
[🔙 Retour](../README.md)
|