Voila un scénario possible d'utilisation présenté avec un diagramme de séquences
UML.

L'utilisateur (ici représenté par la classe Exemple) demande l'incrémentation sur le contrôleur.
Dans la démo présentée, cette demande passe par la pression du bouton incrémenter.
En résultat, la méthode incrementer() du contrôleur est appelée.
Celui-ci répercute sur le modèle en appelant sa méthode incrementer().
Selon le modèle utilisé (Compteur, CompteurModulo)
le comportement sera différent, c'est le polymorphisme. Ensuite, le contrôleur appelle sa méthode
repaint() qu'il hérite de Component,
c'est la méthode standard de l'environnement graphique Java
pour demander à ce qu'un composant graphique soit redessiné. Cette requête est mélangée à toutes les
requêtes sur tous les composants graphiques de l'IHM. Lorsque cette requête est finalement traitée,
la méthode paint() du contrôleur est appelée, ce qui provoque l'appel
de la méthode dessine(...) de la vue et donc sa mise à jour.
Essayez de suivre ce scénario sur le code source.