B2 · Episode 10 · 5:14

Understanding MVC Architecture in JavaFX

This episode explains the Model-View-Controller (MVC) architecture in JavaFX, focusing on how to separate interface, logic, and control layers for flexibility and reusability—such as adapting a game from JavaFX to Android without rewriting core logic.

Source:Nicolas Hurtubise / classe.iro.umontreal.ca · License:CC BY-SA 4.0

Transcript

  1. Même chose si je vais exécuter mon programme en mode ligne de commande,

    The same applies if I run my program in command-line mode,

  2. si j'affiche 10, 20 puis

    if I display 10, then 20, and then

  3. 30, ce qui est affiché ici c'est

    30—what appears here is

  4. la moyenne de mes trois nombres.

    the average of these three numbers.

  5. Donc vraiment ici, j'ai la possibilité de modifier le modèle sans toucher à

    So here, I can truly modify the model without changing

  6. l'interface graphique,

    the graphical interface,

  7. sans toucher au contrôleur, et inversement, je peux

    nor the controller. Conversely, I can

  8. changer complètement l'interface, faire

    completely change the interface—build

  9. une autre interface dans une autre librairie graphique, sans toucher au modèle.

    a new interface using a different graphics library, without touching the model.

  10. Ça peut être particulièrement pratique si

    This can be especially useful if

  11. vous faites un petit jeu, puis que vous voulez porter ce jeu- là sur Android,

    you create a small game and later want to port that game to Android,

  12. par exemple. Vous pouvez commencer par développer votre petit jeu avec JavaFX.

    for example. You can start by developing your small game with JavaFX.

  13. puis plus tard décider de réécrire la vue dans quelque chose de complètement

    Later, you can decide to rewrite the view using something completely different—

  14. différent, dans une librairie qui est complètement différente,

    a graphics library that’s entirely different,

  15. avec d'autres fonctions, avec d'autres façons de faire,

    offering different features and different ways of doing things,

  16. sans toucher à la logique de votre jeu.

    without modifying your game’s core logic.

  17. Fait que voilà, vous avez la possibilité en MVC, si vous faites bien ça,

    So there you have it: with MVC, if implemented correctly,

  18. d'avoir un contrôleur qui peut faire le pont entre plusieurs vues,

    your controller can act as a bridge between multiple views,

  19. plusieurs modèles, puis vous avez la possibilité de réutiliser votre modèle tel quel

    and also between multiple models. Plus, you can reuse your model as-is

  20. dans d'autres programmes.

    in other programs.

  21. Cette architecture- là, cette façon

    This architecture—this way of writing your code—

  22. d'écrire votre code est assez puissante et assez flexible,

    is quite powerful and flexible,

  23. et c'est ça qui va vous être demandé de faire pour la suite de vos programmes en

    and this is exactly what you’ll be expected to do for future programs in JavaFX.

  24. JavaFX. Bon, une petite note sur modèle vue contrôleur en pratique.

    Alright, a quick practical note on Model-View-Controller.

  25. Tout le monde s'entend sur le fait que c'est une bonne idée de séparer le code qui

    Everyone agrees it’s a good idea to separate the code that

  26. définit l'interface, du code qui gère les interactions entre l'affichage et la

    defines the interface from the code that handles interactions between the display and the logic,

  27. logique, et du code qui s'occupe de la logique du programme.

    and from the code that handles the program’s business logic.

  28. Dans le fond, tout le monde s'entend sur le fait que c'est une bonne idée de séparer

    Fundamentally, everyone agrees it’s a good idea to separate the view from the model and controller.

  29. la vue du modèle et du contrôleur.

    the view, model, and controller.

  30. Le concept est cependant pas défini de façon

    The concept itself, however, is not defined

  31. parfaitement unique, parfaitement exacte.

    in a perfectly unique or perfectly precise way.

  32. Et le code que je viens de vous montrer pour mon petit compteur,

    And the code I just showed you for my little counter

  33. c'est un exemple d'application de modèle vue contrôleur.

    is an example of applying the Model-View-Controller (MVC) pattern.

  34. D'une librairie à l'autre, d'un contexte à l'autre,

    From one library to another, from one context to another,

  35. vous allez tomber sur toutes sortes d'implantations du modèle vue contrôleur.

    you’ll encounter all sorts of MVC implementations.

  36. Vous avez ici cinq diagrammes différents qui essaient tous d'expliquer ce que c'est

    Here are five different diagrams

  37. le modèle vue contrôleur, et

    that all try to explain what MVC is,

  38. qui ont toutes des flèches dans tous les sens qui partent n'importe comment.

    yet each has arrows pointing every which way, haphazardly.

  39. Dans le fond, le concept à la base,

    Fundamentally, the core idea

  40. c'est vraiment d'être capable d'isoler les différentes composantes,

    is truly about being able to isolate the different components,

  41. mais la façon dont on définit les événements,

    yet how events are defined,

  42. la façon dont on définit qui appelle qui, qui connaît quoi, va

    how we define who calls whom and who knows what,

  43. changer selon le contexte.

    will vary depending on the context.

  44. Dans le fond, la structure de code que je vous montre dans mon exemple sur Studium,

    In fact, the code structure I’m showing you in my Studium example

  45. c'est un exemple, mais ça

    is just one example,

  46. peut pas tout le temps s'appliquer.

    but it can’t always be applied.

  47. mettons qu'on essaie d'appliquer le modèle vue contrôleur sur un site web plutôt que

    Suppose we try applying the MVC pattern to a website instead of a graphical user interface application,

  48. sur un logiciel à l'interface graphique.

    then things change.

  49. la façon d'interagir avec le site web va principalement se faire via la barre du

    Interaction with the website mainly happens via the browser’s address bar and hyperlinks—

  50. navigateur via les hyperliens mettons que vous allez sur perdu com

    for instance, when you go to perdu.com,

  51. C'est pas la vue qui définit c'est quoi l'événement qui peut se produire,

    it’s not the view that defines what events can occur;

  52. c'est vraiment juste que l'événement qui peut se produire,

    rather, the only possible event is simply

  53. c'est on veut afficher telle page, on veut afficher telle vue.

    ‘we want to display this page’ or ‘we want to display this view.’

  54. Fait que la façon de faire le modèle vue contrôleur ici,

    Here, the way we implement the Model-View-Controller (MVC) pattern

  55. ce sera pas forcément de commencer par les vues qui définissent les événements.

    won’t necessarily start with views that define events.

  56. Dans le cas d'un logiciel graphique,

    In the case of a graphical application,

  57. vous avez pas le choix de partir de l'interface graphique.

    you have no choice but to start from the graphical interface.

  58. L'utilisateur va interagir directement avec la vue, donc c'est

    The user interacts directly with the view, so

  59. la vue qui va aller appeler le contrôleur puis lui dire qu'il vient de se passer ça.

    the view calls the controller and tells it what just happened.

  60. Mais donc dans les faits, il y a vraiment plusieurs façons d'arriver au même

    In practice, there are truly several ways to achieve the same result,

  61. résultat, puis toutes les façons sont pas tout le temps possibles selon le contexte

    yet not all approaches are always possible depending on your context,

  62. dans lequel vous êtes.

    i.e., the specific context you’re in.

  63. Notez finalement que modèle- vue- contrôleur,

    Finally, note that Model-View-Controller (MVC)

  64. c'est une architecture logicielle parmi d'autres.

    is just one software architecture among many.

  65. Le code MVC qu'on va vous demander d'écrire dans le cadre du cours,

    The MVC code you’ll be asked to write in this course,

  66. le code qu'on vous montre dans le cadre du cours,

    and the code shown to you in class,

  67. ça va faire office de code- école, ça va vous permettre de saisir

    will serve as pedagogical example code—to help you grasp the concept more clearly,

  68. mieux le concept, puis ça va vous donner des bases sur la

    and to give you a foundation in separating different components’ responsibilities.

  69. séparation des différentes composantes.

    (This separation)

  70. Mais sachez que si vous vous intéressez à JavaFX en dehors du cours,

    Also, be aware: if you’re interested in JavaFX beyond this course,

  71. il y a d'autres patterns de développement qui sont utilisés en pratique.

    other development patterns are actually used in practice.

  72. Les bonnes pratiques de JavaFX vont demander plus de notions que ce qu'on a le temps

    Best practices for JavaFX involve concepts

  73. de voir, vont demander d'autres types d'architecture que ce qu'on a le temps de

    beyond what we have time to cover in class,

  74. voir, ça dépasse les buts du cours,

    and require other architectural approaches beyond our course’s scope.

  75. donc si jamais c'est quelque chose qui vous intéresse,

    So, if this interests you,

  76. si vous voulez continuer à écrire du JavaFX,

    and you’d like to keep writing JavaFX applications,

  77. mais sachez que ce que vous allez écrire dans le cadre du cours,

    keep in mind that the code you’ll write in this course

  78. c'est plus un code école, c'est plus quelque chose qui va vous permettre de

    is primarily educational—it’s designed to help you understand the general concept,

  79. comprendre le concept général que de vraiment

    not to teach you JavaFX specifically.

  80. apprendre JavaFX en particulier.

    (It doesn’t equate to real-world JavaFX expertise.)

  81. Donc voilà pour ça, ça fait le tour des interfaces graphiques.

    So that's it for graphical interfaces.

  82. Si vous avez des questions, je vous invite à aller les poser sur le forum sur

    If you have any questions, please go to

  83. Studium. S'il y a des choses qui sont pas claires,

    the Studium forum to ask them. If anything is unclear,

  84. on va répondre à vos questions sur le forum.

    we’ll answer your questions there.