User Tools

Site Tools


2015_2016:s3:concprogobjet:td:td2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
2015_2016:s3:concprogobjet:td:td2 [2018/09/16 22:44]
blay [Architecture : Interface graphique et contrôleur]
2015_2016:s3:concprogobjet:td:td2 [2018/09/16 23:02]
blay [Architecture : Interface graphique et contrôleur]
Line 58: Line 58:
 ===== Architecture : Interface graphique et contrôleur ===== ===== Architecture : Interface graphique et contrôleur =====
 L'​objectif est ici de décomposer l'​application pour que :  L'​objectif est ici de décomposer l'​application pour que : 
-   * L'​interface n'​interagit jamais directement avec le métier. ​+   * Le **programme principal** consiste à créer créer un controleur et à le démarrer. 
 +<code java> 
 + public static void main(String[] args) throws Exception { 
 + Controleur c = new Controleur();​ 
 + c.start();​ 
 +
 + 
 +</​code>​ 
 +   * L'**interface** n'​interagit jamais directement avec le métier. ​
        * Elle ne connait pas non plus le contrôleur dans cet exercice. ​        * Elle ne connait pas non plus le contrôleur dans cet exercice. ​
-       * Voici un exemple de code pour l'​interface. Pour se concentrer sur l'​architecture,​ l'​interface est une classe Java qui utilise ''​Scanner''​ pour lire au clavier et ''​System.out.print...''​ pour l'​affichage. +       * Voici{{:​2015_2016:​s3:​concprogobjet:​td:​userconsole.java| ​un exemple de code pour l'​interface}}. Pour se concentrer sur l'​architecture,​ l'​interface est une classe Java qui utilise ''​Scanner''​ pour lire au clavier et ''​System.out.print...''​ pour l'​affichage. 
-   * Le contrôleur joue le rôle de chef d'​orchestre entre le métier et l'​interface. ​+   * Le **contrôleur** joue le rôle de chef d'​orchestre entre le métier et l'​interface. ​
        * Il ne peut pas utiliser System.out...;​ tout affichage passe par l'​interface.        * Il ne peut pas utiliser System.out...;​ tout affichage passe par l'​interface.
        * Il n'a pas le droit de modifier la partie métier sans passer par des objets métiers. ​        * Il n'a pas le droit de modifier la partie métier sans passer par des objets métiers. ​
        * Il n'est pas autorisé à stocker la liste des bus etc. Pensez à utiliser le principe de délégation.        * Il n'est pas autorisé à stocker la liste des bus etc. Pensez à utiliser le principe de délégation.
        * Voici des extraits de code pour vous aider ci-après.        * Voici des extraits de code pour vous aider ci-après.
 +<code java>
 +public class Controleur {
 +    ​
 + private Gestionnaire registre = new Gestionnaire();​
 + private UserConsole ui = new UserConsole();​
 +
 +    public void start() throws Exception {
 +        String commande = ui.lireCommande();​
 +        switch (commande.charAt(0)) {
 +            case UserConsole.COM_CREER_FORUM:​
 +                creerForum();​
 +                start();
 +                break;
 +            case UserConsole.COM_CREER_CANAL :
 +                creerCanal();​
 +                start();
 +                break;
 +            case UserConsole.COM_POSTER_MESSAGES:​
 +                posterMessage();​
 +                start();
 +                break;
 +            case UserConsole.COM_LIRE_MESSAGES:​
 +                lireMessage();​
 +                start();
 +                break;
 +            case UserConsole.COM_STOP:​
 +                ui.afficher("​Au revoir ");
 +                Memoire.save(registre,​ "​sauvegarde.txt"​);​
 +                exit(0);
 +                break;
 +            default :
 +                ui.afficher("​La commande spécifiée n'​existe pas\n"​);​
 +                sleep(1000);​
 +                start();
 +        }}
 +</​code>​
 +
  
-  - Développez le code correspondant. **[[https://​mbf-iut.i3s.unice.fr/​doku.php?​id=2015_2016:​s3:​concprogobjet:​td:​td2&#​aide|Utilisez les informations et codes donnés]]** ci-dessous+  - Développez le code correspondant.  
-  - Quel type de contrôleur avez-vous défini en respectant les directives données? Est-il "​bon"?​ Que feriez-vous sinon pour l'​améliorer?+  - Quel type de contrôleur avez-vous défini en respectant les directives données? ​
   - Vous devez à présent pouvoir jouer le scénario précédent en utilisant votre interface graphique.   - Vous devez à présent pouvoir jouer le scénario précédent en utilisant votre interface graphique.
-  - Visualisez ​vos codes sous la forme de diagrammes ​de séquences.\\ ''​Outils => Code => Instant Reverse to sequence diagram''​ {{ :​2015_2016:​s3:​concprogobjet:​td:​tosequencediagram.png?​300 |}}+  - Visualisez ​votre code correspondant à la création d'un forum sous la forme d'un diagramme ​de séquences.\\ ''​Outils => Code => Instant Reverse to sequence diagram''​ {{ :​2015_2016:​s3:​concprogobjet:​td:​tosequencediagram.png?​300 |}}
   - Pouvez-vous décrire chacune de vos classes avec une seule phrase? Faîtes-le dans les commentaires de vos classes.   - Pouvez-vous décrire chacune de vos classes avec une seule phrase? Faîtes-le dans les commentaires de vos classes.
 ==== aide ==== ==== aide ====
2015_2016/s3/concprogobjet/td/td2.txt · Last modified: 2018/09/16 23:08 by blay