UFR de Mathématiques et d'Informatique
IUP 1, DEUG 2, 2002/2003
Algorithmique et programmation orientées objet
Travaux pratiques
Séance 6, mars



Les lyumines s'invitent pour le thé





Il s'agit dans cet exercice de raffiner encore la classe de lyumines, afin de modéliser ce qui se passe quand les lyumines s'invitent pour un thé autour d'un samovar.

Un lyumine a deux nouveaux attributs : maison, qui désigne la maison où il habite, et lieuCourant, qui indique où il se trouve actuellement. Le type des lieux et maisons sont donnés par les classes suivantes :





class Lieu {
  private String nom ;

  public Lieu(String s) {
    nom = s ;
  }

  public String nom() {
    return nom ;
  }
}




class Maison extends Lieu {

  public Maison(String s) {
    super(s) ;
  }
}




Ce qui se passe, c'est que lorsqu'un lyumine L invite un lyumine L' pour un thé, L' invite automatiquement toutes ses connaissances à se joindre également au thé. Puis L' se rend immédiatement chez L. (Bien sûr, dès qu'il a lancé son invitation, L se rend immédiatement chez lui.)
Comme un lyumine invite d'habitude toutes ses connaissances en même temps pour un thé, on écrira en particulier la méthode "void inviterConnaissancesPourUnThe()".

Un exemple de test est le suivant :





public class TestSamovar {

  /* test de la classe Lyumine : */
  public static void main (String args []) {

    Lyumine LyuminePapa = new Lyumine("LyuminePapa") ;
    Lyumine LyumineMama = new Lyumine("LyumineMama") ;
    Lyumine Alexandre = new Lyumine("Alexandre") ;

    LyuminePapa.apprendreQueEstNe(LyumineMama) ;
    LyumineMama.apprendreQueEstNe(LyuminePapa) ;
    LyumineMama.apprendreQueEstNe(Alexandre) ;
    LyuminePapa.apprendreQueEstNe(Alexandre) ;

    Maison maisonBleue = new Maison("maison bleue") ;
    LyuminePapa.habiter(maisonBleue) ;
    LyumineMama.habiter(maisonBleue) ;
    Alexandre.habiter(maisonBleue) ;

    Lyumine Mikhail = new Lyumine("Mikhail") ;

    Maison maisonVerte = new Maison("maison verte") ;
    Mikhail.habiter(maisonVerte) ;
    Mikhail.allerDansLieu(maisonVerte) ;

    Mikhail.direOuEst() ;

    LyuminePapa.apprendreQueEstNe(Mikhail) ;
    Mikhail.apprendreQueEstNe(LyuminePapa) ;

    Mikhail.inviterPourUnThe(LyuminePapa) ;

    LyuminePapa.direOuEst() ;

    Lyumine Igor = new Lyumine("Igor") ;
    Mikhail.apprendreQueEstNe(Igor) ;

    LyuminePapa.inviterConnaissancesPourUnThe() ;

    Alexandre.direOuEst() ;
    Mikhail.direOuEst() ;
    Igor.direOuEst() ;
  }
}

This document was translated from LATEX by HEVEA.