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 :

[UML] Classe d'association et cardinalités


Sujet :

Diagrammes de Classes

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 89
    Points
    89
    Par défaut [UML] Classe d'association et cardinalités
    Salut,

    J'ai une petite question qui me triture l'esprit...
    En merise, il est considéré comme une erreur qu'une association dont la cardinalité sur une des pattes est 1-1 soit porteuse de données.
    Mais en est-il de même pour une classe d'association en UML ? En effet, comme cela fonctionne sur le même principe, on est en droit de se demander si ça s'applique aussi ...

    Mon exemple :
    Un commercial est rattaché à une agence pour une période donnée.
    J'ai donc une classe d'association "Periode" entre "Commercial" et "Agence" avec une cardinalité 1..1 côté Agence (un commercial travaille dans une et une seule agence), 0..* côté Commercial (une agence contient plusieurs commerciaux). En merise c'est une erreur, mais en UML ?!

    Qu'en pensez-vous ?

    Merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Pour la représentation, la relation entre le commercial et l'agence est toujours présent mais au milieu de l'association, tu as des pointillés qui relie une autre classe qui est période.

    Mais pour info.
    Un commercial à une période donné travaille pour une agence
    Mais Une agence à une période donnée à de 1 à plusieurs commerciaux.
    Je me trompe???
    Donc tu n'as toujours pas de lien 1-1 mais bien 1 (Agence) -1..* (Commercial)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 89
    Points
    89
    Par défaut
    Tout d'abord merci pour ta réponse.

    Oui la représentation est bien celle que j'ai utilisée.
    En fait en Merise, c'est une erreur qu'une association porteuse de données ait une cardinalité 1-1 sur une de ses pattes.
    Donc c'est pour ça que moi ça me choquait de modéliser quelque chose de très semblable en UML.

    Maintenant on pourrait aussi se dire que, comme on "sort" la période pour la promouvoir en tant que classe, dans ce cas là un commercial peut travailler sur plusieurs agences.
    En effet, pour une période donnée (mémorisée dans le commercial lui même), le commercial ne travaille que sur une agence. Par contre, si on "sort" la période, un commercial travaillera sur plusieurs agences (donc 1..*) ce qui résoudrait le "problème".




    Mon raisonnement est-il cohérent ?

    P.S : je pense que je m'étais mal exprimé lorsque j'ai dit "qu'une association de type 1-1 soir porteuse de données" car j'aurais du dire "qu'une association porteuse de données ait une cardinalité 1-1 sur une de ses pattes."

  4. #4
    Membre averti Avatar de Soutou
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 328
    Points : 380
    Points
    380
    Par défaut
    En principe une classe assoc est réservée à des multiplicités * des 2 côtés. A partir de là, cette classes assoc peut être reliée à d'autres associations.
    Quand tu as une mulltiplicité 1 d'un côté d'une assoc entre C1 et C2, tout attribut est soit dans C1 soit dans C2. Tu ne trouveras jamais un attribut qui dépende des 2. Si c'est le cas alors la multiplicité doit passer à *.

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut Re: [UML] Classe d'association et cardinalités
    Citation Envoyé par djflex68
    En merise, il est considéré comme une erreur qu'une association dont la cardinalité sur une des pattes est 1-1 soit porteuse de données.
    J'ignorais que Merise fut si précis sur ce point.
    Personnellement j'utilise (et je préconise très fortement) cela sans vergogne (PowerAMC l'autorise sans problème), je trouve cette façon de présenter les choses beaucoup plus élégante (cela n'a aucun impact sur le modèle physique), puisque cela permet de regrouper les informations liés à l'association.

  6. #6
    Membre averti Avatar de Soutou
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 328
    Points : 380
    Points
    380
    Par défaut
    Tu mettrais donc dateachat entre Avion et Compagnie dans la relation Acheter. Tout en sachant que cet attribut ira côté Avion au niveau logique et SQL.

    Je trouve que ça perturbe la compréhension. Si tu avais aussi tauxReduc qui donne la réduction que chaque compagnie applique à tout achat, cet attribut serait dans la relation Acheter et irait ensuite côté Compagnie au niveau logique.

    Mais bon, c'est pas grave. On est d'accord sur le fond.

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Soutou
    Tu mettrais donc dateachat entre Avion et Compagnie dans la relation Acheter. Tout en sachant que cet attribut ira côté Avion au niveau logique et SQL.
    Nous sommes bien d'accord que je parle du niveau conceptuel, il me semble, justement, que dans ton exemple, la DateAchat de l'avion n'est pas intrinsèque à l'avion, mais bien à la relation Acheter, l'avion existe avant qu'il soit acheté, et ses caractéristiques ne sont pas changées par l'achat, conceptuellement, je vois bien deux "choses" différentes.

    Citation Envoyé par Soutou
    Si tu avais aussi tauxReduc qui donne la réduction que chaque compagnie applique à tout achat, cet attribut serait dans la relation Acheter et irait ensuite côté Compagnie au niveau logique.
    Encore une fois ton exemple est démonstratif : le taux de réduction qu'une compagnie exige pour ses achats n'a rien à voir avec la compagnie en tant que telle (plus définie par ce qu'elle fait que par un taux de réduction)

    Mais bon, c'est pas grave. On est d'accord sur le fond ( ).

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/02/2009, 16h12
  2. eclipse UML classe-association
    Par lastrecrue dans le forum Eclipse
    Réponses: 3
    Dernier message: 02/04/2008, 19h31
  3. [UML] Classe d'association ? Identifiant ?
    Par clawhammer dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 10/12/2007, 22h21
  4. [UML]Agrégation et Classe d'association
    Par loverdose dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 01/06/2007, 09h30
  5. [uml] classe d'association ou pas?
    Par tridoo dans le forum Diagrammes de Classes
    Réponses: 6
    Dernier message: 12/11/2006, 18h21

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