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

Diagrammes de Classes Discussion :

diagrammede classe et implementation en PHP selon le modele MVC


Sujet :

Diagrammes de Classes

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 25
    Par défaut diagrammede classe et implementation en PHP selon le modele MVC
    Bonjour à tous,

    J'ai un probléme de compréhesion au niveau de l'implémentation d'un diagramme de classe en suivant le pattern MVC.

    Je lis actuellement le livre de pascal roquessur UML e-commerce. Je dois moi même réaliser une étude UML sur une application, et il y a des choses que je comprends pas trés bien. Notamment le diagramme de classe.

    Ce diagramme est tiré du livre de pascal roques :



    1- Ce que je ne comprends pas c'est pourquoi il y à des méthode dans les classes dialogue. Pour moi une clas dialogue est une page html donc il ne peut pas y avoir de méthode. Par exemple, dans la classe "dialogue Résultat Recherche" on trouve les méthodes suivantes :ClasserparTitre(), ClasserparAuteur(),pageSuvante(), mettredansPanier().

    2- Je comprends pas non plus pourquoi on retrouve les même méthode dans les class Contrôle et Entité. Par exemple on trouve dans la class "entité Panier" et dans la class "Contrôle Panier" les méthodes suivante : ajouterlingne), recaluler(), supprimerLigne(),vider(). Quel lien y a t il entre ces méthodes respectives ?

    Ensuite pascal Roques implémente ce diagramme en php, selon le model MVC et cela donne ceci :



    3- Je ne comprends pas pourquoi il y a les même méthodes dans la classe métier ("class PHP" Panier), et dans le controlleur (Panier.php). Les méthodes ModifierQuantite(), supprimerLigne(), viderPanier() se trouve dans la classe métier et dans le controlleur. Y a t il un lien entre ces méthodes ? Si oui lequel ?

    Merci d'avance !

    A+

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par abousa3d Voir le message

    1- Ce que je ne comprends pas c'est pourquoi il y à des méthode dans les classes dialogue. Pour moi une clas dialogue est une page html donc il ne peut pas y avoir de méthode. Par exemple, dans la classe "dialogue Résultat Recherche" on trouve les méthodes suivantes :ClasserparTitre(), ClasserparAuteur(),pageSuvante(), mettredansPanier().
    Une classe dialog peut et à des méthodes à partir du moment où leurs responsabilités relèvent de l'affichage ou qu'elles délèguent à un contrôleur.

    Typiquement, ClasserParTitre et ClasserParAuteur c'est visiblement un tri pour l'affichage. PageSuivante c'est visiblement l'affichage de données supplémentaire (on peut supposer qu'il y a 100 données découpées en 10 pages).

    Quand à MettreDansPanier c'est probablement un appel au contrôleur et une mise à jour d'affichage du panier.


    2- Je comprends pas non plus pourquoi on retrouve les même méthode dans les class Contrôle et Entité. Par exemple on trouve dans la class "entité Panier" et dans la class "Contrôle Panier" les méthodes suivante : ajouterlingne), recaluler(), supprimerLigne(),vider(). Quel lien y a t il entre ces méthodes respectives ?

    3- Je ne comprends pas pourquoi il y a les même méthodes dans la classe métier ("class PHP" Panier), et dans le controlleur (Panier.php). Les méthodes ModifierQuantite(), supprimerLigne(), viderPanier() se trouve dans la classe métier et dans le controlleur. Y a t il un lien entre ces méthodes ? Si oui lequel ?
    C'est typiquement l'architecture MVC qui est comme cela. Dans l'autre post j'avais tenté de t'expliquer le MVC à base de pattern mais tu n'as posé aucune question..

    Le contrôleur est une interface entre le dialog et les entités. Le dialog délègue une méthode au contrôleur qui lui même délègue à la classe entité c'est pour cela que souvent on retrouve les mêmes noms de méthode entre ihm, contrôleur et entité puisqu'il s'agit (mvc) d'une variante du modèle en couche.

    Quoi dire de plus ? Est-ce que tu as accès au code source des méthodes pour voir d'un peu plus près ? Est-ce que les réponses que je t'ai te conviennent ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 25
    Par défaut
    Non, malheuresement il n'y a pas le code source de ces méthodes dans le bouquin.

    Citation Envoyé par hegros Voir le message
    Une classe dialog peut et à des méthodes à partir du moment où leurs responsabilités relèvent de l'affichage ou qu'elles délèguent à un contrôleur.

    Typiquement, ClasserParTitre et ClasserParAuteur c'est visiblement un tri pour l'affichage. PageSuivante c'est visiblement l'affichage de données supplémentaire (on peut supposer qu'il y a 100 données découpées en 10 pages).
    Ok leur responsabilité est lié à l'affichage. Prenons un exemple concret. Par exemple en html/php . Typiquement, sur la page html du résultat de recherche, on aura des liens: "page suivante", "page précédente","classer Par auteur" . Pour aller à la page suivante, on a besoin de récupérer des données dans la base de donnée. Ce que je voudrai savoir c'est après le clique sur ces liens c'est quoi typiquement le parcours ? on bascule dans le contrôleur qui délègue à la couche métier ? Le code de la méthode pagesuivante() et pageprecedente() va se trouver ou ? dans une classe de la couche model, Non ?

    Par rapport à mon point 3:
    3- Je ne comprends pas pourquoi il y a les même méthodes dans la classe métier ("class PHP" Panier), et dans le controlleur (Panier.php). Les méthodes ModifierQuantite(), supprimerLigne(), viderPanier() se trouve dans la classe métier et dans le controlleur. Y a t il un lien entre ces méthodes ? Si oui lequel ?

    Si je comprends bien tes explications, par exemple pour la cas suprimerLigne(), on aura par exemple dans le contrôleur un truc comme: supprimerLigne(5) qui fera appel à la méthode supprimerLigne( int) d'une class présente dans la couche model qui sera chargé de se connecter à la base de donnée etc...c'est ça non ?

    Merci d'avance pour tes précisions ...

  4. #4
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par abousa3d Voir le message
    Pour aller à la page suivante, on a besoin de récupérer des données dans la base de donnée.
    Il y a plusieurs conceptions et choix possibles. Si dès l'initialisation de la page il a été choisi de charger toutes les données alors il n'est plus nécessaire d'accéder à la base de données en cliquant sur la page suivante ou page précédente

    Ce que je voudrai savoir c'est après le clique sur ces liens c'est quoi typiquement le parcours ? on bascule dans le contrôleur qui délègue à la couche métier ?
    Typiquement Oui. On délègue au contrôleur qui lui délègue à la couche métiers soit des classes entités. MVC c'est une architecture en couche, on part du haut (ihm) pour aller vers le bas (entité) puis on remonte le chemin inverse pour remonter les données

    Grossomodo cela pourrait donner ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dialog::PageSuivante()
    {
       pageSuivante = Controleur.PageSuivante(pageCourante);
    }
    
    Controleur::PageSuivante(pageCourante)
    {
       return Modele.PageSuivante(pageCourante)
    }

    Le code de la méthode pagesuivante() et pageprecedente() va se trouver ou ? dans une classe de la couche model, Non ?
    Au final oui. Mais on va retrouver ces méthodes au niveau du dialog et aussi du contrôleur puisque c'est de la délégation (voir mon exemple au dessus) La méthode est présente partout mais c'est uniquement dans le modèle que se fera la plus grosse part du boulot.


    Par rapport à mon point 3:
    3- Je ne comprends pas pourquoi il y a les même méthodes dans la classe métier ("class PHP" Panier), et dans le controlleur (Panier.php). Les méthodes ModifierQuantite(), supprimerLigne(), viderPanier() se trouve dans la classe métier et dans le controlleur. Y a t il un lien entre ces méthodes ? Si oui lequel ?
    Je te l'ai déjà expliqué. Elles se retrouvent dans la classe contrôleur et métiers par force de la délègation. Typiquement dans le code du contrôleur on retrouvera qu'une délégation. Elles sont présentes dans le contrôleur pour le dialog.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dialog::ViderPanier()
    {
       Controleur.ViderPanier();
    }
    
    Controleur::ViderPanier()
    {
      Modele.ViderPanier();
    }
    
    Modele:ViderPanier()
    {
    //le gros du boulot
       Panier.Vider();
    }
    Si je comprends bien tes explications, par exemple pour la cas suprimerLigne(), on aura par exemple dans le contrôleur un truc comme: supprimerLigne(5) qui fera appel à la méthode supprimerLigne( int) d'une class présente dans la couche model qui sera chargé de se connecter à la base de donnée etc...c'est ça non ?
    Oui on aurait typiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Controleur:SupprimerLigne()
    {
       Panier.SupprimerLigne(5);
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 25
    Par défaut
    Merci beaucoup pour tes réponses !
    Cela m'a beaucoup aidé, t'es number one !

    je crois que j'ai enfin compris !

    à la prochaine !

  6. #6
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    J'espère t'avoir aidé à comprendre le concept maintenant si tu as des questions n"hésites pas.

Discussions similaires

  1. [POO] [DEV] Classe de debug pour PHP
    Par -COil- dans le forum Langage
    Réponses: 11
    Dernier message: 09/06/2007, 19h53
  2. [REFLEXION] Connaitre toutes les classes qui implémentent une interface
    Par narmataru dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 25/10/2006, 11h00
  3. [RegEx] Afficher code PHP selon choix
    Par guillaumeIOB dans le forum Langage
    Réponses: 14
    Dernier message: 04/09/2006, 13h34
  4. 1 fichier PHP ou 3 fichier PHP selon langue
    Par icecube216 dans le forum Langage
    Réponses: 4
    Dernier message: 15/12/2005, 12h31
  5. [classe anonyme] implementant une interface
    Par stanilas dans le forum Langage
    Réponses: 4
    Dernier message: 30/11/2004, 00h18

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