Bonjour,
J'ai un projet à réaliser dans lequel je dois effectuer le refactoring d'un programme java.
Je vous rassure c'est du refactoring de base.
Je vous présente rapidement le programme.
C'est un gestionnaire de clinique et d'animaux.
En gros on peut ajouter de nouveaux veterinaires. Et pour chaque veterinaires on peut leur ajouter des chiens et des chats.
Il y a une classe parent Animals, et deux classes enfant Chiens et Chats qui ne contiennent pas les memes informations.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class Animals { public String ID; public String type; public void setName(String N) { Name = N; } public String getName() { return Name; } private String Name; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class Cat extends Animals { public void setFav_cat_toy(String toy) { fav_cat_toy = toy; } public String getFav_cat_toy() { return fav_cat_toy; } private String fav_cat_toy; }C'est aussi simple que ça.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class Dog extends Animals { public void setK9_family(String fam) { K9_family = fam; } public String getK9_family() { return K9_family; } private String K9_family; }
Le problème que je rencontre c'est que je n'arrive pas a simplifié un bout de code redondant.
Dans la classe vetclinic (dans laquelle on peut créer un veterinaire et lui ajouter des chiens et des chats), il y a une methode qui permet de lister tout les animaux en possessions du véterinaire.
Le code ressemble a ça:
Comme vous le voyez ce code est redondant et qui plus est, il n'est pas optimum.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public String listAll_animals() { String ret = ""; int i = 0; ret = "Animal: Cats\n"; for (i = 0; i < numCats; i++) { Cat c = Catlist[i]; ret += "\t ID: " + c.ID + " Name: " + c.getName() + " Type: " + c.type + " Toy: " + c.getFav_cat_toy() + "\n"; } ret += "\nAnimal: Dogs\n"; for (i = 0; i < numDogs; i++) { Dog d = Doglist[i]; ret += "\t ID: " + d.ID + " Name: " + d.getName() + " Type: " + d.type + " K9_family: " + d.getK9_family() + "\n"; } return ret; }
Je voudrais le modifier afin de le rendre autonome suivant le type d'animal (chien ou chat). Je voudrais que ce bout de code fonctionne, meme si j'ajoute une nouvelle classe enfant Souris. en faisant listAll_animals, j'aurais ainsi la liste des chiens, des chats et des souris de ce veterinaires.
Mais voila, je ne sais pas trop comment m'y prendre, es-ce que quelqu'un pourrait me donner quelques indices?
Si vous avez des questions, n'hésitez pas
Merci d'avance
Partager