Cours:Système d'éclairage - MVC : Différence entre versions
(→le Modèle) |
|||
| Ligne 10 : | Ligne 10 : | ||
== le Modèle== | == le Modèle== | ||
| + | |||
| + | === les classes du modèle=== | ||
Il s'agit du coeur de l'application: dans notre cas, il s'agit des classes du système d'éclairage. Nous aurons donc à réécrire trois classes: | Il s'agit du coeur de l'application: dans notre cas, il s'agit des classes du système d'éclairage. Nous aurons donc à réécrire trois classes: | ||
| − | * la classe Lampe: | + | * la classe '''Lampe''': |
| − | ** 2 attributs: ''puissance'' et ''estAllume'' | + | ** 2 attributs: '''puissance''' et '''estAllume''' |
** 1 constructeur avec en paramètre la puissance | ** 1 constructeur avec en paramètre la puissance | ||
| − | ** 2 méthodes: ''allumer()'' et ''eteindre()''. | + | ** 2 méthodes: '''allumer()''' et '''eteindre()'''. |
| − | * la classe Commutateur | + | * la classe '''Commutateur''' |
| − | * la classe Bouton | + | ** 2 attributs: |
| + | *** '''etat''' qui représente l'état du commutateur | ||
| + | *** '''lampes''' , un tableau de 3 cases de type ''Lampe'' (la lampe de 50W est dans la case numéro 0). | ||
| + | ** un constructeur avec en paramètre un tableau de 3 '''Lampe'''. | ||
| + | ** une méthode '''augmenterPuissance()'''. | ||
| + | * la classe '''Bouton''' | ||
| + | **1 attribut: '''c''' de type '''Commutateur'''. | ||
| + | ** 1 méthode '''appuyer()'''. | ||
| + | |||
| + | === la notification à la vue=== | ||
| + | |||
| + | Pour qu'une classe puisse notifier à une autre un changement, elle doit: | ||
| + | |||
| + | * hériter de la classe '''Observable''' (''java.util.Observable'') | ||
| + | * notifier le changement par: | ||
| + | |||
| + | setChanged(); | ||
| + | notifyObservers(...); | ||
| + | |||
| + | Dans la version la plus simple de notre application, la classe '''Lampe''' devra hériter de la classe '''Observable''' et notifier qu'elle change d'état (cad, dans '''allumer()''' et dans '''eteindre()''') par: | ||
| + | |||
| + | setChanged(); | ||
| + | notifyObservers(estAllume); | ||
Version du 11 novembre 2016 à 16:29
Sommaire
Système d'éclairage MVC
Introduction
L'objectif est d'écrire une interface graphique au système d'éclairage déjà programmé en Processing, et ceci en utilisant une forme de programmation nommée MVC "Modèle-Vue-Contrôleur":
- le modèle est tout simplement constitué des classes de notre système d'éclairage: Lampe, Commutateur et Bouton. Lorsqu'un changement se produit dans une classe du modèle, cette classe notifie à la vue ce qu'il vient de se produire.
- la vue est une ensemble de classes (par exemple, graphiques) qui représentent l'état des classes du modèle. Par exemple, il faudra une classe LampeGraphique qui, lorsqu'elle est notifiée, représente le nouvel état de la classe Lampe.
- le contrôleur qui sert à faire communiquer de la vue vers le modèle. Dans notre application, le contrôleur servira à appuyer sur le Bouton du modèle lorsque l'on clique sur le bouton de l'interface graphique (la vue).
le Modèle
les classes du modèle
Il s'agit du coeur de l'application: dans notre cas, il s'agit des classes du système d'éclairage. Nous aurons donc à réécrire trois classes:
- la classe Lampe:
- 2 attributs: puissance et estAllume
- 1 constructeur avec en paramètre la puissance
- 2 méthodes: allumer() et eteindre().
- la classe Commutateur
- 2 attributs:
- etat qui représente l'état du commutateur
- lampes , un tableau de 3 cases de type Lampe (la lampe de 50W est dans la case numéro 0).
- un constructeur avec en paramètre un tableau de 3 Lampe.
- une méthode augmenterPuissance().
- 2 attributs:
- la classe Bouton
- 1 attribut: c de type Commutateur.
- 1 méthode appuyer().
la notification à la vue
Pour qu'une classe puisse notifier à une autre un changement, elle doit:
- hériter de la classe Observable (java.util.Observable)
- notifier le changement par:
setChanged(); notifyObservers(...);
Dans la version la plus simple de notre application, la classe Lampe devra hériter de la classe Observable et notifier qu'elle change d'état (cad, dans allumer() et dans eteindre()) par:
setChanged(); notifyObservers(estAllume);