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 :

[DC] Relations


Sujet :

Diagrammes de Classes

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de Amnesiak
    Profil pro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Par défaut [DC] Relations
    Bonjour à tous,

    J'ai crée mon premier diagramme de classe, qui représente une petite librairie d'accès aux bases de données MySQL. Je dispose d'un objet MySqlDb dont les méthodes executeXXX() retournent un résultat sous forme d'un objet MySqlDbResult, qui lui même retourne chaque ligne du résultat sous forme d'un objet MySqlDbRow. Les objets Result et Row ne sont pas stockés dans l'objet qui les renvoie, ils sont crées et retournés uniquement lors de l'appel à la méthode concernée.

    Mes questions sont:
    • Que pensez-vous de ce modèle ? Décrit-il bien mon explication ?
    • Quelle relation dois-je utiliser pour représenter l'implémentation des interfaces ? (J'ai utilisé Composition sans vraiment savoir... )
    • Est-ce correct d'utiliser une relation d'agrégation comme je l'ai fait pour représenter le lien qui existe entre mes 3 classes principales ?


    D'avance, un très grand merci pour vos précieux conseils
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Salut !

    La relation d'implémentation est une flèche à triangle blanc, en pointillés ; la composition ne représente qu'une relation de... composition, c'est à dire quand A "est composé de" B

    Tu devrais indiquer le type de retour des méthodes :

    +getField(index:String) : String/int/...

    Tu peux placer un lien vers l'exception, pour indiquer qui l'envoie (un simple trait)

    De même, l'agrégation n'est pas adaptée ici : il s'agit d'une relation "d'utilisation" plutôt. Tu peux également placer un trait simple. Le lien sera plus fort/explicite en exprimant le type de retour des méthodes.

    Si tu as d'autres questions, n'hésite pas, et aussi envoie les diagrammes futurs

  3. #3
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Je viens de voir ta toolbox :

    L'héritage c'est "Generalisation", l'implémentation d'interface c'est "Realization"

    Tu peux aussi préciser si c'est utile les méthodes de tes interfaces, et ne plus les rappeler dans les classes implémentant l'interface.

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    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 551
    Par défaut
    Bonjour,

    Citation Envoyé par Amnesiak Voir le message
    Les objets Result et Row ne sont pas stockés dans l'objet qui les renvoie, ils sont crées et retournés uniquement lors de l'appel à la méthode concernée.
    Ce n'est pas ce que montre le diagramme car l'agrégation entre MySqlDb et MySqlDbResult indique le contraire.

    Citation Envoyé par Amnesiak Voir le message
    Quelle relation dois-je utiliser pour représenter l'implémentation des interfaces ? (J'ai utilisé Composition sans vraiment savoir... )
    il s'agit d'un héritage, et comme il y a une interface en jeu il faut utiliser une réalisation (- - - - -|>)


    Citation Envoyé par Amnesiak Voir le message
    Est-ce correct d'utiliser une relation d'agrégation comme je l'ai fait pour représenter le lien qui existe entre mes 3 classes principales ?
    donc non entre MySqlDb et MySqlDbResult

    entre MySqlDbResult et MySqlDbRow je verrais plutôt une composition unidirectionnelle, c.a.d. MySqlDbResult <*>-----------> MySqlDbRow avec une multiplicité de 'n' (ou '0..' etc) car à priori un MySqlDbRow ne survit pas au MySqlDbResult et un MySqlDbRow ne connait pas son MySqlDbResult
    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

  5. #5
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Citation Envoyé par bruno_pages Voir le message

    il s'agit d'un héritage, et comme il y a une interface en jeu il faut utiliser une réalisation (- - - - -|>)
    Il ne s'agit pour moi pas d'un héritage quand une interface entre en jeu, mais une implémentation. (Ou alors je me trompe ?)

    entre MySqlDbResult et MySqlDbRow je verrais plutôt une composition unidirectionnelle, c.a.d. MySqlDbResult <*>-----------> MySqlDbRow avec une multiplicité de 'n' (ou '0..' etc) car à priori un MySqlDbRow ne survit pas au MySqlDbResult et un MySqlDbRow ne connait pas son MySqlDbResult
    Là, tout à fait d'accord

  6. #6
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    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 551
    Par défaut
    Citation Envoyé par hed62 Voir le message
    Il ne s'agit pour moi pas d'un héritage quand une interface entre en jeu, mais une implémentation. (Ou alors je me trompe ?)
    je pense que la réalisation est un cas particulier d'héritage, mais cela ne change pas grand chose à l'affaire : il faut utiliser la réalisation ...
    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

  7. #7
    Membre confirmé
    Avatar de Amnesiak
    Profil pro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Par défaut
    Super, un grand merci pour vos réponses très instructives, je tiendrai compte de vos remarques à l'avenir !

    Bonne journée, a+

  8. #8
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    je pense que la réalisation est un cas particulier d'héritage, mais cela ne change pas grand chose à l'affaire : il faut utiliser la réalisation ...
    Effectivement, il faut utiliser la relation de réalisation pour indiquer que la classe fourni une implémentation à l'interface. Là dessus tout le monde est d'accord.
    Ensuite, pour chipoter, c'est bruno qui a raison. La réalisation est une forme particulière d'héritage. C'est d'ailleurs pour cette raison que les deux symboles graphiques sont proches (fleche blanche trait plain / fleche blanche trait pointillé).
    Par ailleurs, une interface a deux symboles graphiques standards : le rond et le carré avec un stéréotype <<interface>>. Le problème du rond est qu'il est avare en information. En l'occurence, on ne sait pas du tout ce que les classes doivent implémenter.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre en relation les contrôles DBLookUpComboBox et DBGrid
    Par Gendarmette dans le forum Bases de données
    Réponses: 7
    Dernier message: 19/01/2004, 13h16
  2. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 17h07
  3. [EJB2.1 Entity] [CMR] Relation One to Many
    Par hamed dans le forum Java EE
    Réponses: 2
    Dernier message: 31/12/2003, 14h26
  4. Réponses: 2
    Dernier message: 26/09/2003, 15h54
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

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