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

BOUML Discussion :

[DC,DA] Représenter une relation ternaire avec une classe d'association


Sujet :

BOUML

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut [DC,DA] Représenter une relation ternaire avec une classe d'association
    Bonjour,
    J'essaie dans un diagramme de classe de lier des classes EMPLOYE, METIER, ENTREPRISE avec une classe d'association TRAVAIL, contenant la date de début et la date de fin du travail. Dans BOUML on peut faire ce genre d'association entre 2 classes, mais avec 3, lorque j'essaie de lier une troisième classe à la relation, un message me dit qu'une relation ne peux pas avoir de relation.
    A-t-on la possibilité de faire une ternaire?
    http://uml.developpez.com/cours/
    En merise on peut indiquer des contraintes sur les relations, par exemple, si telle entité particite à telle relation, elle ne peut pas participer à une autre relation. Existe-t-il une correspondance en UML?

    Pour le diagramme d'activité je voudrais savoir si on peut afficher un sablier comme dans les captures d'écran données en exemple.
    http://bouml.fr/doc/figs/activity3.png
    Je pensais qu'il s'agissait d'un stéréotype, mais il n'est pas dans la liste (interrupt, multicast, ...).

    A l'école j'utilisais Win'design comme outil de modélisation. On peut manipuler la largeur et la hauteur des classes pour les agrandir. Apparement dans BOUML on ne peut le faire qu'avec les actions dans le diagramme d'activité et les notes. Pourquoi ce choix ?
    On peut aussi dans winDesign choisir le point d'ancrage de la patte ou de la relation à l'intérieur de la classe, ça évite que tout converge vers le centre.

  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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    On peut aussi dans winDesign choisir le point d'ancrage de la patte ou de la relation à l'intérieur de la classe, ça évite que tout converge vers le centre.
    C'est aussi possible avec bouml, quitte à modifier la Geometry de la flèche (pas sur que ce soit nécessaire cependant)

    Existe-t-il une corresondance en UML?
    Je ne pense pas que le formalisme UML prévoit cela (en tous cas pas en 1.0, mais puisqu'aujourd'hui on est en UML 2 voire 2.1, peut être)

    Pour la ternaire, je ne sais pas, mieux vaut attendre bruno_pages.

  3. #3
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    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 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Bonjour,
    Citation Envoyé par hed62 Voir le message
    ... attendre bruno_pages.
    voilà, voilà, j'arrive, il faut aussi que je bosse pour gagner ma croûte

    Citation Envoyé par paul42 Voir le message
    A-t-on la possibilité de faire une ternaire?
    pas directement, mais une ternaire = 3 bidirectionelles

    Citation Envoyé par paul42 Voir le message
    En merise on peut indiquer des contraintes sur les relations, par exemple, si telle entité particite à telle relation, elle ne peut pas participer à une autre relation. Existe-t-il une correspondance en UML?
    oui, et le nom est le même ('contrainte')

    Par contre dans Bouml je ne suis pas exactement la norme au niveau affichage et dans la façon de les définir 'officiellement'

    Pour définir les contraintes dans le modèle (c.a.d. 'officiellement') il suffit de renseigner la partie contraint des dialogues de classe, relation, attribut et opérations. Sauf si on demande de cacher les contraintes, cela produit une note avec anchor reliée à la classe, même si la contrainte porte sur une relation (la note n'est donc pas attachée à la relation, mais à sa classe porteuse)

    Pour avoir le dessin normé il suffit de faire soit même les notes et les bons anchors, mais un plug-out n'y aura alors pas accès

    Citation Envoyé par paul42 Voir le message
    Pour le diagramme d'activité je voudrais savoir si on peut afficher un sablier comme dans les captures d'écran données en exemple.
    en voilà une drôle de question, les captures d'écran ne sont pas truquées

    Le sablier représente une action de type accept event (onglet Uml) avec un événement est de type time (onglet trigger - OCL).

    Citation Envoyé par paul42 Voir le message
    A l'école j'utilisais Win'design comme outil de modélisation. On peut manipuler la largeur et la hauteur des classes pour les agrandir.
    Dans Bouml la taille des classes est effectivement calculée en fonction de leur représentation. Peut être qu'un jour je calculerais une taille min (= taille actuelle) et permettrais de les agrandir ...

    Citation Envoyé par paul42 Voir le message
    On peut aussi dans winDesign choisir le point d'ancrage de la patte ou de la relation à l'intérieur de la classe, ça évite que tout converge vers le centre.
    c'est possible depuis la version 2.32
    j'ai même modifié un screenshot pour le montrer, et là non plus il n'y a pas de triche

    Bruno

  4. #4
    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    en voilà une drôle de question, les captures d'écran ne sont pas truquées
    Cela aurait été drôle quand même

    mais une ternaire = 3 bidirectionelles
    Je sais bien que cela est une équivalence, mais certaines personnes préfèrent de loin représenter une ternaire plutôt que deux bidir (notamment les concepteurs de chez nous). Cela serait une tâche trop importante de permettre les ternaires dans Bouml ? Si oui, je comprend que cela ne soit pas dans les priorités !

    voilà, voilà, j'arrive, il faut aussi que je bosse pour gagner ma croûte
    Meuh oui ! étant non fumeur ni grand buveur de café lyophylisé, je profite des pauses des autres pour passer dans le coin

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    c'est possible depuis la version 2.32
    Mea culpa, j'avais essayé mais à chaque fois je créais un nouveau point sur le trait, ou je sélectionnais la classe en essayant d'attraper le carré

    J'y arrive maintenant, mais il faut cliquer plutôt du côté du trait sur le bord du carré.

    pas directement, mais une ternaire = 3 bidirectionelles
    comme ça ?
    Images attachées Images attachées   

  6. #6
    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Oula ! non !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    A-----O----->B
          |
          C
    Equivaut à :
    A---->C----->B


    'O' étant le symbole d'une ternaire.

    [edit] je crois que je mélange ternaire et classe d'association... Je reviens...[/edit]

  7. #7
    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Tu peux peut être faire ainsi :

    Equivaut à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    A------B------C
    |             |
    +-------------+
    Un cycle je veux dire, avec les flèches orientées selon tes souhaits.

  8. #8
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    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 534
    Points : 6 723
    Points
    6 723
    Par défaut
    quitte à bien montrer la ternarité de la chose, autant dessiner les classes dans un triangle 'relativement' équilatéral ... ce qui est généralement le cas dans les dessins avec la 'vraie' notation des relations ternaires

    si on y ajoute la classe d'association cela donne quelque chose comme :


    Bruno

  9. #9
    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Oula ! non !
    Bon.. ben si... Mais quand même, cela me gène. Enfin disons que je n'ai guère ce genre de choses

  10. #10
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Et pour une quaternaire ?



    Par contre pour le point d'ancrage d'une "anchor" sur un trait "association", je n'arrive vraiment pas à le déplacer
    Images attachées Images attachées   

  11. #11
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    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 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par paul42 Voir le message
    Et pour une quaternaire ?
    oui, c'est cela

    Citation Envoyé par paul42 Voir le message
    tu crois vraiment que ce genre de cas arrive souvent ?
    ce qui est complexe ... est complexe, mais peut être pas à raison

    Citation Envoyé par paul42 Voir le message
    Par contre pour le point d'ancrage d'une "anchor" sur un trait "association", je n'arrive vraiment pas à le déplacer
    l'anchor arrive toujours sur le milieu d'un segment

    si tu n'arrives pas à le mettre sur le bon segment, retires l'anchor puis recrées le là ou tu le souhaites

  12. #12
    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    nuch, à mon avis, une relation quaternaire indique une erreur de conception... Tu dois avoir moyen de faire autrement.

    C'est rare d'avoir une quaternaire et de ne pas pouvoir s'en dépétrer.

    Même pour la ternaire entre Entreprise, Métier et Employé : tu peux ajouter un Contrat qui relie Employé à Entreprise et Métier par aggrégation.
    Images attachées Images attachées  

  13. #13
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par hed62 Voir le message
    nuch, à mon avis, une relation quaternaire indique une erreur de conception...
    J'ai le schéma d'une quaternaire dans mon cours d'analyse. Mon prof considérait que l'erreur de conception commençait avec la quinternaire.

    Citation Envoyé par hed62 Voir le message
    tu peux ajouter un Contrat qui relie Employé à Entreprise et Métier par aggrégation.
    Donc rajouter un champ identifiant dans ma table. Disons que pour le cas d'utilisation la présence dans une entreprise n'est pas très précise et a juste une valeur indicative. La personne qui s'occupe de la base n'aura pas accès aux contrats des employés avec lequels elle est en relation et à la mise en route, la date de début correspondra juste à la date du jour. Donc je considère vraiment ça comme une classe association et pas une entité.


    Citation Envoyé par bruno_pages Voir le message
    tu crois vraiment que ce genre de cas arrive souvent ?
    J'ai pas de chance alors, on vient de m'apprendre que l'on décomposait l'entreprise en départements(et sous-départements), et qu'une entreprise n'avait pas forcément de département


    Je pourrais créer une deuxième classe association pour différencier le cas ou la personne travaille dans un département ou une entreprise en faisant deux ternaires

    Je ne sais pas quelle règle je suis sensé suivre pour choisir entre une quaternaire et deux ternaires, mais je viens de me rendre compte qu'un trait association ne peut-être attaché qu'à une anchor à la fois.

    Comme techniquement je devrais faire le SQL à la main, je me contenterais de manipuler un trait association pour que ça ressemble à une quaternaire et coller un joli diagramme dans le cahier des charges.
    Images attachées Images attachées    

  14. #14
    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Et en reprenant mon schéma et en ajoutant la classe département ,cela n'irait pas ?

  15. #15
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    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 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par paul42 Voir le message
    Mon prof considérait que l'erreur de conception commençait avec la quinternaire.
    c'est parce que ton prof est un quadra ?

    Citation Envoyé par paul42 Voir le message
    je viens de me rendre compte qu'un trait association ne peut-être attaché qu'à une anchor à la fois.
    avoir deux (association)classes et une seule relation n'a effectivement pas de sens

    dans le dernier dessin tu as mis les relations les unes sur les autres pour éviter le fouillis des traits qui se croisent ?
    si c'est le cas c'est très fort, le point remplace le losange, je n'y avais pas pensé, mais c'est sans doute pas très pratique à faire

  16. #16
    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Pourquoi faire simple quand on peut faire compliqué ?

    Ou je me trompe, ou ce diagramme reste ok pour les besoins, et évite pas mal de prises de tête :
    Images attachées Images attachées  

  17. #17
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    c'est parce que ton prof est un quadra ?
    A l'époque oui.

    Citation Envoyé par bruno_pages Voir le message
    avoir deux (association)classes et une seule relation n'a effectivement pas de sens
    Oui, je n'ai pas l'habitude de construire les ternaires comme ça, j'aurais effectivement dû ajouter une deuxième association entre METIER et EMPLOYE

    Citation Envoyé par bruno_pages Voir le message
    dans le dernier dessin tu as mis les relations les unes sur les autres pour éviter le fouillis des traits qui se croisent ?
    si c'est le cas c'est très fort, le point remplace le losange, je n'y avais pas pensé, mais c'est sans doute pas très pratique à faire
    il y a une association bidirectionnelle entre ENTREPRISE et EMPLOYE avec la classe association attachée, et une autre association entre DEPARTEMENT et METIER avec un line break au milieu qui est placé au niveau du lien entre anchor et association. Pour une ternaire, il faudrait effectivement supperposer deux relations pour faire illusion. Le moins pratique dans cette technique c'est lorsque l'on doit bouger les classes, il ne faut pas oublier comment les associations sont organisées.

    Citation Envoyé par hed62 Voir le message
    Pourquoi faire simple quand on peut faire compliqué ?
    C'est pas l'inverse ?

    Citation Envoyé par hed62 Voir le message
    Ou je me trompe, ou ce diagramme reste ok pour les besoins, et évite pas mal de prises de tête :
    Il faut un lien entre le département et l'employé pour avoir le détail dans certains cas. Je ne comprends pas pourquoi tu rattaches l'entité métier à un seul travail et l'employé à un seul travail aussi. L'employé peut travailler dans plusieurs entreprises à différents postes. Et comme dans mon système il n'y a rien d'autre qui est lié à TRAVAIL, je n'ai pas besoin de l'identifier.

  18. #18
    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Ok, j'avais donc mal cerné ton besoin, et me trompais donc. Dans ton cas, tu modélise plusieurs entreprise et chaque employé peut avoir plusieurs contrats en même temps pour plusieurs boites et dans plusieurs Département, c'est bien cela?

    Pour les 'un seul' je n'avais pas mis les '*' , mais bon, ce n'est plus important.

    Pour le
    Pourquoi faire simple quand on peut faire compliqué ?

    Non non, la citation est bien dans ce sens


  19. #19
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par hed62 Voir le message
    Ok, j'avais donc mal cerné ton besoin, et me trompais donc. Dans ton cas, tu modélises plusieurs entreprises et chaque employé peut avoir plusieurs contrats en même temps pour plusieurs boites et dans plusieurs Département, c'est bien cela?
    Chaque employé a un contrat à la fois dans une entreprise, ou un département d'une entreprise, sur une période donnée(début - fin), et je garde l'historique de leur mouvement pour recouper la date où ils ont fait certaines tâches et l'entreprise où ils se trouvaient à ce moment là. Mais bon je venais pour savoir comment dessiner une ternaire avec BOUML, je n'ai pas besoin de valider mon diagramme.

    Merci.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/07/2012, 16h29
  2. Calcul avec une valeur issue d'une relation
    Par malumiere dans le forum W4 Express
    Réponses: 5
    Dernier message: 16/05/2012, 12h58
  3. [TTable] Pb avec une relation maitre-detail
    Par kase74 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/10/2005, 10h34
  4. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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