1°/ Objectifs

Ce TP reprend les même objectifs que le TP précédent, excepté le fait que la structuration du code doit suivre le paradigme MVC. Pour cela, notes et coefficients ainsi que les méthodes pour les manipuler sont stockés dans un modèle, représenté par la classe Model que vous devez télécharger. A votre charge de modifier les classes View et ControlBouton afin de rendre l'application conforme au paradigme MVC.

2°/ La classe Model

Téléchargez le fichier contenant la classe ainsi que les exceptions associées : [ Model.java ]

Cette classe prend comme attributs les notes et les coefficients manipulés par l'application et propose des méthodes pour lire/modifier ces valeurs. Lors de modifications, des test sont faits et génèrent éventuellement des exceptions du type NoteOutOfBound, CoeffOutOfBound, NumOptionOutOfBound et SansOptionException. Toutes ces exceptions sont définies par des sous classes d'Exception.
Comme la classe ControlBouton va manipuler le modèle, il faudra prendre garde à traiter correctement ces exceptions dans la méthode handle().

3°/ Le main()

Le fichier Appli.java doit contenir le code suivant :
public class Appli extends Application{

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
Model model = new Model();
View view=new View(model);
ControlBouton controlBouton = new ControlBouton(model, view);
ControlMenu controlMenu = new ControlMenu(view);
view.display();
}
}

Remarque : la classe ControlMenu n'utilise pas le modèle mais uniquement la vue.

5°/ La classe View

Modifiez la classe View pour que :
  • son constructeur prenne une instance de Model en paramètre,
  • les champs de saisie soient initialisés avec les valeurs présentes dans le modèle,
  • deux méthodes, setControlBouton() et setControlMenu(), permettent d'associer les deux contrôleurs aux composants graphiques voulus (cf. exemple du cours pour définir ces méthodes).
6°/ Les classes contrôleur

Normalement, la classe ControlMenu ne change pas, à part l'appel à setControlMenu() à ajouter dans le constructeur.
La classe ControlBouton change beaucoup plus puisque chaque note et coefficient tiré de la vue doit être transcrit dans le modèle. De plus, comme le modèle propose une méthode pour calculer la moyenne, ce calcul n'est plus à faire directement dans ControlBouton.