IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Architecture MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Par défaut Architecture MVC
    Bonjour,

    Pour respecter l'architecture MVC, j'ai 3 classes View, Model et Controller.

    Comment faire communiquer ces 3 objets ? Grâce aux signaux/slots de Qt ou avec des pointeurs ? Quel méthodes est la meilleure ?

    Merci.

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Qt a ses propres classes Model/View (un peu différent du MVC) si cela t'intéresse, je ne les trouve pas forcément facile à comprendre au premier abord mais une fois compris tout s'intègre vraiment bien dans le framework.
    Si tu tiens à faire ta propre architecture MVC, je ne vois pas ce que tu veux dire par "utiliser des pointeurs". Utiliser les signaux/slots sera certainement le moyen le plus simple.

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Attention! Généralement, une architecture MVC repose sur bien plus qu'une classe pour le modèle, une autre pour la vue et une dernière pour le contrôleur... Il s'agit plutôt de "systèmes" (bien que j'aie horreur du terme), dans le sens où le modèle correspond à l'ensemble de ce qui représente tes données "métier", où la vue regroupe l'ensemble de ce qui correspond au fait de "fournir une représentation" de ces données et où le contrôleur fournit tout ce qui permet de manipuler les données depuis l'extérieur!.

    En outre, Qt fournit -- effectivement -- une série de classes dont la base est un QAbstractModelItem, qui permet de définir la manière de convertir les données métier en données utilisables par les éléments graphiques (qui utilisent pour une grosse majorité des... QString). L'idéal est, en effet, de passer par les classes qui en dérivent pour permettre à Qt de fournir une représentation "compréhensible" des données métier, mais il faut bien comprendre que le modèle créé à l'aide de Qt n'a en réalité ... pas grand chose à voir avec ce que l'on appelle modèle dans une architecture MVC

    Enfin, il y a plusieurs solutions pour permettre au contrôleur de dialoguer avec le modèle. L'une des plus facile est de se dire que, comme le contrôleur dépend de toutes façons du modèle, il doit "tout simplement" être en mesure d'accéder en lecture comme en écriture à toutes les données exposées par le modèle, de manière à pouvoir -- après avoir vérifié la cohérence des instructions et des données qu'il a reçues -- être en mesure de donner les ordres adéquates aux données intéressées

    Là où les choses commenceront sans doute à devenir un peu plus difficiles, c'est quand je t'expliquerai que, a priori, aussi bien le modèle qu'une certaine (très large) du contrôleur doivent être "aussi indépendantes que possible" de toute bibliothèque externe (Qt en particulier, mais toutes les bibliothèques de création d'IHM sont visées ) de manière, à permettre à ton modèle et à ton contrôleur d'être (sait on jamais) utilisés dans de nouvelles applications dont on ignore encore tout, mais qui pourraient très facilement utiliser d'autres technologies...

    Si bien que tu devrais avoir deux "niveaux" dans ton contrôleur : le premier, indépendant de toute bibliothèque tierce, s'occuperait d'effectuer la vérification de la cohérence des ordres reçus avant de transmettre ces ordres à "qui de droit" (c'est ce dont je viens de parler ) et le deuxième niveau s'occuperait sans doute de faire le lien entre la bibliothèque d'IHM que tu utilises (Qt, en l'occurrence) et le premier niveau
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. architecture mvc etxml/xsl
    Par kiko2005 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 14/08/2009, 14h52
  2. Architecture MVC & C++ Builder ?
    Par zi_omnislasher dans le forum C++Builder
    Réponses: 5
    Dernier message: 14/12/2006, 23h24
  3. Utiliser une architecture MVC
    Par misterniark dans le forum MVC
    Réponses: 5
    Dernier message: 03/11/2006, 22h35
  4. [Spring MVC] Architecture MVC dans spring
    Par Alec6 dans le forum Spring Web
    Réponses: 4
    Dernier message: 11/10/2006, 12h35
  5. Architecture MVC
    Par Bobleponge dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 20/06/2005, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo