Concernant les fonctions appelées lors d'un event (du type clique de souris/clavier) et leur place dans l'architecture, quelle est la meilleure option parmi les suivantes ?
Avant de répondre, je rappelle que gui doit passer par le module ville pour interagir avec le Modèle (pas d'appel direct à des méthodes de noeud)
- Appeler depuis le module gui une fonction du modèle du style clique_gauche(...), et dans ce cas le modèle s'occupe d'attribuer l'event à une certaine action;
Le Modèle ne doit pas gérer des fonctions/méthode avec des noms du genre "clic_ceci" ou "clic_cela" ; c'est la responsabilité du sous-système de Contrôle dont fait partie Gui de traiter les événements et d'appeler des fonctions du Modèle qui réalisent une action à son niveau de responsabilité, par exemple ville_créer_noeud, ville_détruire_noeud, etc...
- Gérer depuis le module gui l'affectation de l'event à une action, mais dans ce cas il y a risque d'avoir des types du modèle (noeud par ex.) qui soient présents dans gui. Par exemple, si une fonction du modèle int présence_noeud(x,y) – qui retourne un uid si un noeud se situe en (x,y) ou no_link si il n'y a rien – est utilisée dans gui lors du clique gauche, on aurait une information "uid" qui n'a peut-être pas sa place hors du modèle...
gui ne doit pas faire d'appel direct à noeud, comme écrit plus haut. Il appelle des méthodes de ville qui va déléguer ce qui faut déléguer à noeud. Il demande aussi à ville de lui recalculer les critères si une mise à jour est nécessaire car l'état de la ville change.