Module Programmation Objet Avancé Janvier 2009
Licence Informatique 3éme année
Examen 1ère session – partie 2
Le pattern Visitor, défini dans le schéma ci-dessous, permet de définir, pour différents
objets, différentes opérations à mener sur ces objets, en découplant la représentation des
objets et les opéraitions à mener dessus. Chaque visiteur définit la façon dont il visite les
différents objets, et les différents objets peuvent accepter ou non la visite. La visite d'un
objet o par un visiteur v est déclenchée par l'appel o.accept(v), appel qui doit déclencher
celui de la méthode de visite correspondante.
On veut écrire un programme pour représenter le fonctionnement du système de santé :
les professionnels de santé peuvent visiter des patients qui sont crédules, confiants ou
méfiants. Un patient est représenté par la classe suivante :
public abstract class Patient{
protected int numSecu;
public Patient(int n){ this.numSecu = n; }
public abstract void accept(ProfessionnelSante p) throws RefusDeVisiteException;
// Renvoie vrai si une maladie est diagnostiquee, faux sinon (maladie inconnue ou bonne sante)
public boolean diagnostic(){
double diag = Math.random();
if(diag > 0.5){
System.out.println("Maladie diagnostiquée chez le patient" + this.numSecu);
return true;
}
else{
System.out.println("Maladie non diagnostiquée chez le patient " + this.numSecu);
return false;
}
}
public void prescription(){