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 :

Association et composition sur la classe mère ou ses classes filles ?


Sujet :

Diagrammes de Classes

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 13
    Points
    13
    Par défaut Association et composition sur la classe mère ou ses classes filles ?
    Bonjour à tous,

    Je me pose une question de bonne pratique concernant la construction d'un modèle de classe impliquant de la composition et de l'héritage.
    -Présentation des classes :
    >>Module : Définition d'un module de formation
    >>Intervention: Un module est composé de plusieurs interventions. Chaque intervention n'est rattachée qu'à un seul module (--> composition).
    >>InterventionSalle : Intervention réalisée en salle qui hérite de la classe intervention
    >>InterventionEntreprise : Intervention réalisée en entreprise, qui hérite d'Intervention
    >>Session : Définition d'une session de formation = réalisation d'une unique intervention d'un module donné à une date donnée.

    -Ma proposition de modèle :


    -Ma 1ère question: Qu'est ce qui tient la route ou est le plus propre ?
    A priori, je dirais que seule ma proposition 1 est valable.
    la proposition 2 ne me semble pas vraiment clean du point de vue UML, mais s'explique dans l'implémentation du code : je traduis l'héritage en BDD par une single_table regroupant toutes les interventions (via Doctrine 2)

    Après je me pose la question de l'implémentation de la contrainte {or} en php. Est-ce que je dois faire un contrôle dans le setter pour tester si mon instance de "Session" est déjà reliée à une instance d'"Intervention" en salle ou en entreprise? Ou faut-il faire autrement ?

    Merci d'avance

    Adrien

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Bonjour,

    qu'est-ce que Session à besoin de connaitre de spécifique des classes InterventionSalle et InterventionEntreprise ? Si la réponse est rien de particulier et donc que la seule connaissance de la classe/interface Intervention suffit alors la solution 2 est la meilleure, y compris au niveau UML
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 13
    Points
    13
    Par défaut
    Merci pour votre réponse.

    La session doit savoir si nous sommes en salle ou en entreprise.
    InterventionSalle permet de renseigner la présence d'un simulateur.
    InterventionEntreprise permet de renseigner le stade d'intervention (préparation, accompagnement, approfondissement).

    Quand je consulte une session je veux avoir accès à ces données et il ne me semble pas possible de les récupérer par la proposition 2. Sauf en trichant à l'implémentation, car dans doctrine, l'héritage se transpose de 2 façons:
    1. (mode Single table) On vrac tout dans une seule table : On regroupe dans cette table les attributs de la classe mère et des classes filles, on ne complète à chaque enregistrement que ce qui nous concerne (en laissant des null pour les reste)
    2. (mode joined tables) On a 3 tables : Une table pour la classe mère qui référence les id de toutes les instances des classes filles avec migration de ces Id sous forme de clés étrangères dans les tables représentant les classes filles.
    Bref, je ne sais pas si c'est très clair, mais au final, par requête SQL je peux retrouver mes petits, mais ça me semble un peu crado vis-à-vis du modèle de modèle de classe....

    Si je dois rester sur la proposition 1, sauriez-vous m'indiquer la méthode "propre" pour implémenter le {or} en php ? Si non, j'irai solliciter le forum php/symfony!

    Merci bien

    Adrien

Discussions similaires

  1. Retrouver les sous classes à partir de la classe mère
    Par saraInfoSab dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 03/07/2012, 13h52
  2. Réponses: 7
    Dernier message: 05/04/2011, 17h19
  3. Héritage : Classe mère instancié via sa fille
    Par amine_en_france dans le forum Langage
    Réponses: 7
    Dernier message: 01/10/2010, 17h48
  4. Réponses: 2
    Dernier message: 11/12/2007, 14h03
  5. [POO]2 classes mère et une classe fille
    Par MysticKhal_0 dans le forum C++
    Réponses: 3
    Dernier message: 06/06/2006, 21h30

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