Enseignement > Programmation orientée objet > Java > Travaux dirigés > TD n°4 - Collections de personnes  

TD n°4 - Collections

1 Introduction
On cherche à écrire des classes pour modéliser des personnes humaines.
On considère qu'une personne est caractérisée par son nom, son prénom, son sexe, ses parents, sa date de naissance et éventuellement sa date de décès.

2 Classe Personne
Ecrire une classe Personne et les méthodes permettant d'encapsuler les propriétés. Les constructeurs ne seront pas écrits dans cette classe qui sera abstraite : seuls des objets de classes descendantes (voir questions suivantes) pourront être instanciés.
Comment seront traités les cas suivants :

  • Une personne n'a pas de parents ?
  • Une personne n'est pas décédée ?

Ecrire une méthode mourir qui définit la date de décès. Redéfinir la méthode toString.

3 Classe Bebe
Ecrire une classe Bebe héritant de la classe Personne. Cette classe aura plusieurs constructeurs :

  • Bebe(boolean sexe, Personne pere, Personne mere, Date naissance, String prenom)
    Naissance d'un bébé dont le nom sera celui de son père
  • Bebe(boolean sexe, Personne mere, Date naissance, String prenom)
    Naissance d'un bébé de père inconnu dont le nom sera celui de sa mère
  • Bebe(boolean sexe, Date naissance, String prenom, String nom)
    Naissance d'un bébé de parents inconnus

Verifier la cohérence du sexe des parents par rapport à leur statut de père ou de mère, et générer éventuellement des exceptions.

4 Classe Enfant
Un enfant est une personne qui est scolarisée. Ecrire la classe, les propriétés et les méthodes nécessaires.
Un enfant sera construit par métamorphose d'un bébé :
Enfant(bebe b, String classe, String ecole)
Redéfinir la méthode toString.

5 Classe Adulte
Un adulte est une personne qui a une profession, qui peut se marier (on ne traitera que le cas de la monogamie). Ecrire la classe, les propriétés et les méthodes nécessaires (changement de profession, mariage, divorce)
Un adulte sera construit par métamorphose d'un enfant :
Adulte(Enfant e, String profession)
Redéfinir la méthode toString.

6 Un programme manipulant des personnes
Créer 2 personnes Adam et Eve et les faire évoluer du stade de Bebe à Adulte
Créer leurs enfants Abel et Cain.

7 Relations entre personnes
Ajouter à la classe Personne les méthodes permettant de savoir si 2 personnes sont

  • frères ou surs
  • demi-frères ou demi-sur
  • Oncle / neveu
  • Cousins
  • Ancêtre l'un de l'autre
  • Afficher l'arbre généalogique (ascendant) d'une personne

8 Liste des enfants
Ajouter à la classe Personne une variable static population qui mémorise l'ensemble des personnes créées.
Ecrire une methode rechercheListeEnfants qui dresse la liste des enfants d'une personne parmi la population. Quel est l'incovenient de cette méthode ?
Que faut-il ajouter pour qu'une personne puisse connaitre facilement la liste de ses enfants ?

Ecrire l'arbre généalogiques des descendants d'une personne