TD8 : Étude d’un service de collecte de données Par la FALCON TEAM
PLAN I)Première Solution « est-un » 1) Construction du greffon 2) Problèmes rencontrés 3) Solutions envisagées 4) Conclusion I)Seconde Solution « a-un » 1) Construction du greffon 2) Problèmes rencontrés 3) Solutions envisagées 4) Conclusion III) Bilan général de l'exercice
I) Première Solution "est-un" 1) Construction du greffon
2) Problèmes rencontrés Nombre d’entrée facile à gérer mais nombre de sortie plus problématique : la ré-implémentation demanderSortie() ne fonctionne pas : Classe anonyme utilisée. Impossible d’utiliser nouvelleSortie() sans modifier sa portée. (Private à la base) I) Première Solution "est-un"
3) Solutions envisagées Deux solutions sont possibles, I) Première Solution "est-un" Réimplémenter la méthode allerArretSuivant() propre à Autobus en écrivant une nouvelle classe anonyme Solution trop lourde Grande duplication de code Changer la portée de nouvelleSortie() et utiliser celle-ci pour enregistrer les nouvelles sorties Pas de modification grave au niveau du code Beaucoup moins de duplication
I) Première Solution "est-un" 4) Conclusion Pas de traitement générique des différents types de transport: Une classe Greffon sera nécessaire pour chaque type de transport. Duplication de code si l’on a beaucoup de types de transports différents
II) Seconde Solution "a-un" 1) Construction du greffon
II) Seconde Solution "a-un" 2) Problèmes rencontrés Constructeur qui prend Bus en entrée. Méthode allerArretSuivant() empruntée à celle de la classe Autobus et utilise la classe anonyme Bus.
3) Solutions envisagées - Lancer une exception si le Bus pris en entrée dans le constructeur n’est pas un transport. -Rajout de la méthode allerArretSuivant(Bus b) dans l'interface Transport : Passage du Greffon en paramètre dans la classe anonyme Bus dans la classe Autobus. II) Seconde Solution "a-un"
4) Conclusion -Solution qui nous a amenée à modifier le code d’Autobus, -Solution viable pour différents types de transports.
III) Bilan général de l'exercice -La solution « a-Un » est plus satisfaisante en terme de flexibilité et de généricité. -La solution « est-Un » n’apporte pas de modification de codes (mise à part la portée de nouvelleSortie() ).