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 :

problème de classe d'association


Sujet :

Diagrammes de Classes

  1. #1
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Points : 1 076
    Points
    1 076
    Par défaut problème de classe d'association
    Bonjour à tous,

    Je suis en train de concevoir un site internet et je me retrouve face à un problème de conception.
    Voila, j'ai, entre autres, dans mon diagramme UML, 2 classes : Utilisateur et modèle, avec une agregation à la terminaison Utilisateur.
    Entre ces 2 classes j'ai une classe d'association (avec des attributs complementaires).
    Quand je supprime un Utilisateur, la classe d'association correspondante est supprimée (normal); par contre quand je supprime un modèle la classe d'association est conservee (pas bien).

    Auriez-vous une idee du type de liaison que je devrais utiliser, entre Utilisateur et modèle de façon à supprimer l'association dès que j'enlève l'Utilisateur ou le modèle, et cela tout en conservant les attributs de ma classe d'association?
    Je ne souhaite pas à avoir à modifier mon code puisque celui ci est généré automatiquement, du coup il faut impérativement que je joue sur le diagramme UML.

    Merci d'avance.

  2. #2
    Membre du Club

    Inscrit en
    Mai 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 27
    Points : 48
    Points
    48
    Par défaut
    Je pense qu'il faudrait décrire ce que tu dois modéliser pour voir comment faire. Quels sont les attributs dont tu parle, etc.

  3. #3
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Points : 1 076
    Points
    1 076
    Par défaut
    Merci pour la rapidité de ta réponse.

    Très bien, donc en simplifiant : j'ai ma classe Utilisateur avec les attributs Nom(string), Prénom(string), Adresse(string) ainsi que DateDeCréation(DateTime); ma classe Modèle avec les attributs nom(string) ModèleActif(bool)et DateMiseAJour(DateTime).
    J'ai une relation de type agrégation(agrégation du côté Utilisateur) entre les 2. Enfin il y a la classe d'association qui possède comme attributs : AssociationActive(bool) et DateDeCreationAssociation(DateTime) et forcément les identifiants de chacune des 2 autres classes.
    Or lorsque je supprime l'Utilisateur, les attributs de l'association sont supprimés cad la DateDeCreationAssociation et les identifiants des 2 autres classes (ce qui est correct). Cependant lorsque je supprime le Modèle, seul l'attribut correspondant à l'identifiant du modèle est supprimé; l'association est donc toujours présente et sont conservés DateDeCreationAssociation et identifiant de l'Utilisateur(ce qui est pas bon du tout ).

    Le problème vient du type de relation qui unit la classe utilisateur et la classe modèle (dans mon cas de type agrégation). Malheureusement je ne sais pas comment modéliser ça autrement.

    Voilà

  4. #4
    Membre du Club

    Inscrit en
    Mai 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 27
    Points : 48
    Points
    48
    Par défaut
    Pourquoi mettre les identifiants du modèle et de l'utilisateur en attribut ? Chaque extremité de l'association permet déjà de le faire puisque tu connecte deux instances qui possèdent déjà une identité propre.

    Ensuite question complémentaire, un modèle est-il partagé entre plusieurs utilisateurs ou pas ? En gros est-ce réellement une agrégation (partage de modèles entres les utilisateurs) ou alors une composition (un modèle est dédié à un utilisateur).

    Cette question est importante puisqu'elle a un impact sur la modélisation. Si c'est une composition, tu peux te permettre de mettre des attributs (modèle actif et non pas association active, date de création, etc) dans le modèle. Dans le cas contraire, il faut effectivement passer par une classe association.

  5. #5
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Points : 1 076
    Points
    1 076
    Par défaut
    Citation Envoyé par n.patricia
    Pourquoi mettre les identifiants du modèle et de l'utilisateur en attribut ? Chaque extremité de l'association permet déjà de le faire puisque tu connecte deux instances qui possèdent déjà une identité propre.
    excuse moi pour ca tu as raison et je ne me suis pas bien expliqué; je n'ai mis en attribut que AssociationActive et DateDeCreationAssociation et je n'ai pas rajouté les identifiants; désolé pour la confusion

    est-ce réellement une agrégation (partage de modèles entres les utilisateurs) ou alors une composition
    Il s'agit bien d'une agregation et pas d'une composition et je suis effectivement obligé de passer par une association

  6. #6
    Membre du Club

    Inscrit en
    Mai 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 27
    Points : 48
    Points
    48
    Par défaut
    Il n'y a donc plus de soucis si je comprends bien. Une classe utilisateur, une modèle et une classe association avec la date de création et le flag "association active".

  7. #7
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Points : 1 076
    Points
    1 076
    Par défaut
    ben en fait jusque la oui, le probleme c'est que l'association entre Utilisateur et modele disparait quand je supprime un utilisateur(ce que je veux) mais pas quand je supprime le modele (dans ce cas seule la reference au modele disparait mais pas l'association ce qui fait que je me retouve avec une association ne référençant que l'Id de l'utilisateur) ce qui peut etre generateur de bug

  8. #8
    Membre du Club

    Inscrit en
    Mai 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 27
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Nip
    ben en fait jusque la oui, le probleme c'est que l'association entre Utilisateur et modele disparait quand je supprime un utilisateur(ce que je veux) mais pas quand je supprime le modele (dans ce cas seule la reference au modele disparait mais pas l'association ce qui fait que je me retouve avec une association ne référençant que l'Id de l'utilisateur) ce qui peut etre generateur de bug
    Tu ne peux pas dire qu'il y a une association entre une instance et rien du tout. Si tu détruit l'instance, tu casse l'association.

    Pour faire ce que tu veux, je pense qu'il faut faire une indirection. A savoir que la classe utilisateur à une association avec une classe "ReferenceModele" (par exemple, je ne me suis pas creuser la tête) avec une cardinalité 0-n. Cette classe permet de garder la trace qu'un utilisateur a eu un modèle à un instant t. Cette classe est associé à la classe modèle avec une cardinalité 0-1.

  9. #9
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Points : 1 076
    Points
    1 076
    Par défaut
    Citation Envoyé par n.patricia
    Tu ne peux pas dire qu'il y a une association entre une instance et rien du tout. Si tu détruit l'instance, tu casse l'association.
    Tout a fait d'accord et c'est bien la que se trouvait mon probleme

    la classe utilisateur à une association avec une classe "ReferenceModele" (par exemple, je ne me suis pas creuser la tête) avec une cardinalité 0-n. Cette classe permet de garder la trace qu'un utilisateur a eu un modèle à un instant t. Cette classe est associé à la classe modèle avec une cardinalité 0-1.
    Ah ben vi forcement
    je me demande ou j'ai la tete desfois

    Je te remercie bcp mon probleme est resolu

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

Discussions similaires

  1. Probleme avec une classe d'association
    Par bassim dans le forum UML
    Réponses: 7
    Dernier message: 18/04/2007, 14h42
  2. [uml] classe d'association ou pas?
    Par tridoo dans le forum Diagrammes de Classes
    Réponses: 6
    Dernier message: 12/11/2006, 18h21
  3. Réponses: 7
    Dernier message: 17/05/2006, 12h20
  4. [UML] Classe d'association et cardinalités
    Par djflex68 dans le forum Diagrammes de Classes
    Réponses: 6
    Dernier message: 08/02/2006, 19h08
  5. Classe d'association ? comment est ce implémenté ??
    Par clawhammer dans le forum Diagrammes de Classes
    Réponses: 3
    Dernier message: 16/09/2004, 19h40

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