Diagramme de classe vers code Java

Messages postés
27
Date d'inscription
samedi 24 décembre 2011
Statut
Membre
Dernière intervention
26 février 2012
- - Dernière réponse : cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 30 mars 2012 à 19:35
Bonjour tout le monde,
comment je peux avoir le code java a partir d'un diagramme de classe !!! j'ai entendu qu'il y a un outil qui s'appel Rationnal rose qui génère le code java a partir d'un diagramme de classe mais j’arrive pas a le télécharger !!!
sinon je voudrais savoir une autre méthode vu que je suis qu'un débutant
j'attend votre aide
merci d'avance
Afficher la suite 

16 réponses

Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Bonjour,

Il existe effectivement des outils qui permettent de générer le code à partir du diagramme de classe, mais c'est en général une mauvaise idée. La qualité du code est mauvaise.

Si tu utilises éclipse, tu n'as pas grand chose à faire pour créer tes classes métier donc, je te conseille de le créer à la main. Si tu as déjà le diagramme de classes, tu n'en as que pour quelques minutes.
Commenter la réponse de cs_Julien39
Messages postés
27
Date d'inscription
samedi 24 décembre 2011
Statut
Membre
Dernière intervention
26 février 2012
0
Merci
est ce que je peux vous montrer le diagramme de classe pour m'aider parceque j'ai jamais programmer en java
Commenter la réponse de am4sys
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Je ne pense pas que ce soit la peine de me le montrer, je vais te donner la méthode :

Si tu as un diagramme comme ca :

+-----------------+        +---------------+
|    Classe1      |        |    Classe2    |
+-----------------+        +---------------+
| var1 : String   |------->| var : int     |
| var2 : int      |        |               |
|                 |        +---------------+
+-----------------+


Alors tu créé :

public class Classe1 {


private String var1;
private String var2;
private Classe2 classe2;

public Classe1(String var1, String var2, Classe1 classe2){
this.var1=var1;
this.var2=var2;
this.classe2=classe2;
}
}


Et tu generes les getters et setters qui te seront utiles.

Si tu as de l'éhritage, utilises un extends et implements pour l'impémentation d'une interface.

Si tu as des relations en *, utilises des ArrayList.

Poses moi tes questions si tu as des soucis.
Commenter la réponse de cs_Julien39
Messages postés
27
Date d'inscription
samedi 24 décembre 2011
Statut
Membre
Dernière intervention
26 février 2012
0
Merci
oui sa j'ai bien compris ,le prob j'ai diagramme de classe très compliqué

file:///home/amine/Bureau/CAP.png
Commenter la réponse de am4sys
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Si je pouvais voir le diagramme, je te dirais comment t'en sortir...
Commenter la réponse de cs_Julien39
Messages postés
27
Date d'inscription
samedi 24 décembre 2011
Statut
Membre
Dernière intervention
26 février 2012
0
Merci
le diagramme sous forme d'une image ,comment je peux le joindre dans le forum
Commenter la réponse de am4sys
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Tu ne peux pas la publier sur un serveur quelconque et me donner le lien ?

Sinon, tu peux toujours m'expliquer ce qui te poses problème dans ce diagramme. Même s'il contient beaucoup de classe, ce n'est en général pas un problème quand on a les notions objets.
Commenter la réponse de cs_Julien39
Messages postés
27
Date d'inscription
samedi 24 décembre 2011
Statut
Membre
Dernière intervention
26 février 2012
0
Merci
voila une classe du diagramme

abstractfield
________________________________________________________________________
Name : string
rule :rule
value : string
_____________________
isExtractMatch(in f1:abstractfield in f2:abstractfield):booleen
isSebSet(in field : abstractfield) :booleen
isSuperSet(in field : abstractfield) :booleen
nextField : abstractfield


ya plein de classe comme sa comment je peux faire
Commenter la réponse de am4sys
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Ca, c'est une classe abstraite, tu ne pourras pas faire un new abstractfield() mais il faudra utiliser les classes filles pour instancier.

public abstract class AbstractField {
   
   private String name;
   private Rule rule;
   private String value;

   public AbstractField(String name, Rule rule, String value){
      this.name=name;
      this.rule=rule;
      this.value=value;
   }

   public boolean isExtractMatch(AbstractField f1, AbstractField f2){
      //Méthode à implémenter
      return false;
   }

   //Idem pour les autres méthodes qui retournent un booléen

   public AbstractField nextField(){
      //Méthode à implémenter
      return null;
   }
} 
Commenter la réponse de cs_Julien39
Messages postés
27
Date d'inscription
samedi 24 décembre 2011
Statut
Membre
Dernière intervention
26 février 2012
0
Merci
et dans ce cas la si on a deux classe avec deux relation policy vers rule et rule vers policy


Policy
________________________
filename : string
intraChecker:intraAnomalychecker
name : string
rootNode : RootNode
ruleList : rule

Rule
_________________________________
action:action
Anomaly:string
destinationIp:Ip
destinationport:Port
order:int
policy:policy
protocol:protocol
sourceIp:Ip
sourcePort:Port

merci de m'aider je suis débutant dans la programation
Commenter la réponse de am4sys
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Je ne comprend pas vraiment ce que tu décris ?

C'est ca ?

+--------+        +--------+
| Policy |        |  Rule  |
+--------+        +--------+
|        |------->|        |
|        |<-------|        |
+--------+        +--------+


C'est tout à fait possible mais, en général, on aime pas trop ce genre de relations. On passe par une interface quand le contexte s'y prête bien...
Commenter la réponse de cs_Julien39
Messages postés
27
Date d'inscription
samedi 24 décembre 2011
Statut
Membre
Dernière intervention
26 février 2012
0
Merci
tout a fait j'ai deux classe comme sa comment je peux faire

Je ne comprend pas vraiment ce que tu décris ?

C'est ca ?

Code :

+--------+ +--------+
| Policy | | Rule |
+--------+ +--------+
| |------->| |
| |<-------| |
+--------+ +--------+
Commenter la réponse de am4sys
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
public class Policy {

   private Rule rule;

   public Policy(){
      super();
   }

   public void setRule(Rule rule){
      this.rule=rule;
   }
}

public class Rule {
   
   private Policy policy;

   public Rule(){
      super();
   }

   public void setPolicy(Policy policy){
      this.policy=policy;
   }
}


Et ensuite, si tu veux créer les objets :

   Rule rule = new Rule();
   Policy policy = new Policy;
   rule.setPolicy(policy);
   policy.setRule(rule);


Ce genre de fonctionnement cache parfois des erreurs de conception, je ne connais pas le contexte, je n'en suis donc pas certain.
Commenter la réponse de cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Si tu connais le C++ par exemple, les relations de ce type sont bien plus faciles à implémenter en java.

Si tu te dis qu'il y aura un problème à la compilation, c'est que tu penses en C++
Commenter la réponse de cs_Julien39
Messages postés
2
Date d'inscription
dimanche 26 décembre 2010
Statut
Membre
Dernière intervention
30 mars 2012
0
Merci
salut
Comment écrire un code Diagramme de classe en génerale. De manière à identifier à partir de laquelle toute la Diagramme de classe.
Commenter la réponse de aminagadi
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Bonjour,

Je ne comprend pas ta question. Dans tous les cas, ouvres un nouveau sujet, personne ne te répondra ici.
Commenter la réponse de cs_Julien39