Suivie des modifications sur une hiérarchie d'objet avec l'Observer

Stratégie temps réel : Evoute des des armées de soldats

Exercice 1:

Reprenez la correction des trois TPS précédents et réalisez le diagramme UML de celle-ci. Expliquez le fonctionnement de la fabrique abstraite qui a été ajoutée dans cette correction et qui est utilisées du programme ''MainFightTwoAges''.

Exercice 2:

En utilisant le pattern observer, nous voulons étendre notre architecture STR pour permettre le suivi des changement de soldats et de nos armées. Modifiez le digramme UML précédent pour ajouter votre extension dans l'architecutre.

Le code suivant devra fonctionner avec votre nouvelle architecture et afficher un message à chaque fois que les points de vie d'une unitée obseervée change.

class ReportObserver implements UnitObserver {
  public void update(Unit unit) {
    System.out.println("L'unité : " + unit.getName() + " a été touchée").
  }
}


void main(String argv[]) {
  UnitObserver obs = new ReportObserver(); 
  Unit hm = new UnitHorseMan();
  Unit im = new UnitCenturion();
  Unit gr1 = new Army();
  hm.addObserver(obs);
  im.addObserver(obs);
  gr1.addObserver(obs);
  gr1.add(hm);
  gr1.add(im);
  Unit hm2 = new UnitCenturion();
  Unit im2 = new UnitHorseMan();
  Unit gr2 = new Army();
  hm2.addObserver(obs);
  im2.addObserver(obs);
  gr2.addObserver(obs);
  gr2.add(hm2);
  gr2.add(im2);
  Unit gr3 = new Army();
  gr3.add(gr1);
  gr3.add(gr2);
  gr3.addObserver(obs);
  Equipment shield = new WeaponShield();
  gr3.addEquipment(shield);
  gr3.parry(3000);
}

Exercice 3:

Modifiez le code de la correction pour ajouter votre extension.