Imprimer
Catégorie : R3.04 - Concept. et prog, objet avancée
Affichages : 153

Les sources de la solution sont disponibles [ ici ].

Les commentaires :


rencontre impossible et/ou infertile :

 


Une super-classe pour les exceptions de rencontre.

  • La solution nécessite de modifier les 2 classes créées précédemment afin qu'elles héritent de MeetingException.
  • De plus, il faut modifier les signatures de toutes les méthodes de rencontre. Pour cela, il y a 2 solutions :
    • compléter la liste des exception potentiellement générées, i.e. écrire : throws BreedingForbiddenExcpetion, NoBreedingException
    • faire appel au polymorphisme, i.e. écrire : throws MeetingException
  • C'est la 2ème solution qui est la plus POO et qui est utilisée dans cette solution.

la propagation des exceptions

  • NB : la solution proposée diffère de ce qui est indiqué dans l'exercice, en prenant en paramètre non pas deux indices mais deux humains.
  • C'est à cause de l'organisation du moteur de jeu dans LifeGame, où l'on utilise la méthode setCouple() pour récupérer directement 2 humains et pas leur indice.
  • Cela n'a pas d'influence sur la solution.
  • En effet, le problème de compilation vient du fait que la méthode rencontre() de Population fait appel à la méthode rencontre() de Homme/Femme.
  • Or, celle-ci génère potentiellement une MeetingException.
  • 2 solutions pour supprimer l'erreur de compilation :
    • faire un try/catch dans la méthode rencontre() de Population.
    • propager explicitement l'exception qui peut se produire.
  • C'est la deuxième solution qui est demandée et elle consiste à simplement ajouter throws MeetingException à la signature de rencontre() dans Population.