La séparation de la vue et du modèle

Pourquoi le modèle ignore la vue, les rôles modèle, vue et contrôleur dans une application graphique, la notification par observateur et ce qu'on y gagne : des tests sans fenêtre et plusieurs vues d'un même modèle.

  • 25 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Modèle : de quoi s'agit-il ?

    Voir la réponse

    Partie d'une application qui porte les données et les règles métier, sans rien savoir de la façon dont elles sont affichées.

    Un total de panier, une règle de remise ou une validation vivent ici : on peut les tester sans ouvrir de fenêtre.

  • Quel défaut de conception présente cette classe ?

    ```java
    public class Panier {
    private final Label total = new Label();
    private double montant;

    public void ajouter(double prix) {
    montant += prix;
    total.setText(montant + " €");
    }
    }
    `

    • Le modèle écrit lui-même dans la vue : il en dépend et ne se teste plus seul
    • total est final : l'étiquette ne pourra jamais changer de texte
    • La méthode ajouter modifie un attribut au lieu de renvoyer une valeur
    • Le contrôleur devrait appeler setText avant que le modèle ne calcule
    Voir la réponse

    Le modèle écrit lui-même dans la vue : il en dépend et ne se teste plus seul

    Label est un composant graphique : le modèle le possède et le met à jour. La réparation est de prévenir des observateurs à la fin d'ajouter ; la vue s'inscrit et écrit elle-même dans son étiquette. final fige la référence vers l'étiquette, pas son texte.

  • Dans une architecture MVC, le … ne connaît pas la … : c'est la vue qui s'inscrit auprès du modèle pour être prévenue.

    Voir la réponse

    Dans une architecture MVC, le modèle ne connaît pas la vue : c'est la vue qui s'inscrit auprès du modèle pour être prévenue.

    La dépendance va dans un seul sens, de la vue vers le modèle. Si le modèle importait des classes graphiques, il faudrait une fenêtre pour le tester.

  • Vue : de quoi s'agit-il ?

    Voir la réponse

    Partie qui montre l'état des données à l'écran et capte les gestes de l'utilisateur, sans décider de la règle métier.

    Elle lit l'état du modèle pour l'afficher ; écrire dans une étiquette, choisir une couleur ou afficher un message d'erreur sont ses affaires.

  • Une application affiche les ventes dans un tableau et dans un graphique, deux vues du même modèle. Après une nouvelle vente, le tableau se met à jour mais le graphique reste figé. Quelle est la cause la plus probable ?

    • Le modèle a oublié de recalculer la vente après l'avoir reçue
    • Le tableau et le graphique devraient partager la même instance de vue
    • Le contrôleur doit appeler le graphique en plus de la vue du tableau
    • Le graphique n'est pas inscrit comme observateur du modèle
    Voir la réponse

    Le graphique n'est pas inscrit comme observateur du modèle

    Le tableau reçoit l'état parce qu'il est inscrit ; le graphique, jamais prévenu, garde l'ancien affichage. La réparation est d'inscrire le graphique, pas de câbler le contrôleur sur chaque vue.