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

Rational Discussion :

Association entre classes en java


Sujet :

Rational

  1. #1
    Nouveau membre du Club
    Inscrit en
    février 2004
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : février 2004
    Messages : 55
    Points : 28
    Points
    28
    Par défaut Association entre classes en java
    Bonjour,

    j'essaye de créer un diagramme de classes (en tout cas des classes liées par des associations) directement par du code java, avec RSA.

    Pour cela j'utilise les classes UMLFactory, Class et Association.

    Pour l'instant, j'ai ça (création de 2 classes Commande et Client):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    org.eclipse.uml2.uml.UMLFactory f = org.eclipse.uml2.uml.UMLFactory.eINSTANCE;
    	
    org.eclipse.uml2.uml.Class c1 = f.createClass();
    c1.setName("Client");
    		
    org.eclipse.uml2.uml.Class c2 = f.createClass();
    c2.setName("Commande");
    Mon souci est que je n'arrive pas à lier mes classes par une association.
    J'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a = c1.createAssociation(true, org.eclipse.uml2.uml.AggregationKind.NONE_LITERAL, "passer", 1, org.eclipse.uml2.uml.LiteralUnlimitedNatural.UNLIMITED, c2, true, org.eclipse.uml2.uml.AggregationKind.NONE_LITERAL, "" , 1, 1);
    Mais je me retrouve avec une IllegalStateException.

    Si vous avez une idée, n'hésitez pas, tout est bon à prendre.

    Merci.

  2. #2
    Nouveau membre du Club
    Inscrit en
    février 2004
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : février 2004
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Bon il semblerait que la IllegalStateException soit du à "quelque chose" au niveau des packages (en gros il n'y a pas de package car c1.getPackage() me retourne null).

    Du coup je crée un package et j'ajoute chaque élément dedans. Maintenant, est-ce la solution ?? Donc toujours ouvert à diverses propositions.

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2008
    Messages
    2 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2008
    Messages : 2 203
    Points : 8 286
    Points
    8 286
    Billets dans le blog
    51
    Par défaut
    En réalité, c'est parce qu'une Association est une entié qui doit être contenu dans un package.

    Par défaut, elle est stocké dans le package de la première classe.

    En toute logique, le code doit être le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    //..
    		this.packageClass=model.createNestedPackage("Class");
    		this.packageClassAssociation=model.createNestedPackage("ClassAssociation");
    Class c1= this.packageClass.createOwnedClass(
    					"c1", false);
    Class c2= this.packageClass.createOwnedClass(
    					"c2", false);
    
    //..
    
    	private void createClassAssociation(Class c1, Class c2) {
    		boolean end1IsNavigable=true;
    		AggregationKind end1Aggregation=AggregationKind.NONE_LITERAL;
    		String end1Name=c1.getName();
    		int end1Lower=1;
    		int end1Upper=1;
    		Type end1Type=c1;
    		boolean end2IsNavigable=true;
    		AggregationKind end2Aggregation=AggregationKind.NONE_LITERAL;
    		String end2Name=c2.getName();
    		int end2Lower=1;
    		int end2Upper=1;
    		Association association = c2.createAssociation(end1IsNavigable, end1Aggregation, end1Name, end1Lower, end1Upper, end1Type, end2IsNavigable, end2Aggregation, end2Name, end2Lower, end2Upper);
    		association.setName(c1.getName()+"___"+c2.getName());
    		packageClassAssociation.getPackagedElements().add(association);
    	}
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 02/08/2010, 14h16
  2. association entre classe ?
    Par Gaetch dans le forum Diagrammes de Classes
    Réponses: 7
    Dernier message: 25/05/2010, 17h53
  3. probléme d'association entre classe
    Par sampaiX dans le forum Diagrammes de Classes
    Réponses: 3
    Dernier message: 25/04/2010, 14h19
  4. [DC] Associations entre classes d'association
    Par Invité dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 07/03/2008, 13h16
  5. Representer les associations entre classes en Java
    Par 0coco0 dans le forum Langage
    Réponses: 1
    Dernier message: 29/02/2008, 12h06

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