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 revisionPrevious revision
Next revision
Previous revision
2015_2016:s3:concprogobjet:td:td2 [2018/09/16 20:53] – [Architecture : Interface graphique et contrôleur] blay2015_2016:s3:concprogobjet:td:td2 [2018/09/16 21:08] (current) – [Architecture : Persistance simplifiée] blay
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{{: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.        * 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>+<code java>
 public class Controleur { public class Controleur {
          
Line 102: Line 110:
         }}         }}
 </code> </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+ 
-  - 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?+ 
 +  - Développez le code correspondant.  
 +  - 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 ==== 
-**Pour vous aider** voici un exemple possible du programme principal dont vous pouvez vous inspirer :  
-<code java> 
-    Controleur c = new Controleur(); 
-    c.start(); 
-</code> 
- 
-Et pour le contrôleur :  
-<code java> 
-public class Controleur { 
-    RegistreDeBus registre = new RegistreDeBus(); 
-    UI ui = new UI(); 
- 
-    public void start() { 
-        String commande = ui.lireCommande(); 
-        switch (commande.charAt(0)) { 
-        case 'c': 
-            creerBus(); 
-            start(); 
-            break; 
-        case 'b': 
-            creerBoite(); 
-            start(); 
-            break; 
-..... 
- 
-private void creerBus() { 
-        String nomDuBus = ui.getNomDuBus(registre.getNomsBus()); 
-        boolean reussi = registre.creerBus(nomDuBus); 
-        if (!reussi) 
-            ui.afficher("Erreur le bus existe déjà"); 
-        else 
-            ui.afficher("Bus " + nomDuBus + " créé"); 
-    } 
-</code> 
- 
  
 ===== Architecture : Persistance simplifiée ===== ===== Architecture : Persistance simplifiée =====
-1- On désire sauvegarder l'ensemble des bus à chaque fin d'exécution du programme principal et recharger l'état des bus à chaque lancement du programme principal.+1- On désire sauvegarder l'ensemble des forums à chaque fin d'exécution du programme principal et recharger l'état des forums à chaque lancement du programme principal.
  
-Vous pouvez utiliser le {{:2015_2016:s3:concprogobjet:td:memoire.java|code suivant}}. Pour l'utiliser il suffit que vos classes "implements Serializable'.+Vous pouvez utiliser {{:2018_2019:s3:concprogobjet:memoire.java|le code suivant}}. Pour l'utiliser il suffit que **vos classes "implements Serializable'**.
  
 **Exemple de sauvegarde :** **Exemple de sauvegarde :**
Line 157: Line 131:
 <code java> <code java>
         Object o  = Memoire.read(NomFichier);         Object o  = Memoire.read(NomFichier);
-        if (o != null) +        if (o instanceof Gestionnaire){ 
-            if (o instanceof RegistreDeBus+                registre = (Gestionnaire) o;}
-                registre = (RegistreDeBus) o;+
     }     }
 </code> </code>
2015_2016/s3/concprogobjet/td/td2.1537131239.txt.gz · Last modified: 2018/09/16 20:53 by blay