Association de diagramme de classes UML implémentée dans les classes Java
J'ai les associations de classe UML suivantes qui veulent contrôler si je suis bon ou mauvais (les méthodes ne sont pas nécessaires ici):
Nr 1:
import java.util.*;
public class Dictionary {
private DictEntry[] entry;
ArrayList<DictEntry> book = new ArrayList<DictEntry>();
public Dictionary(){
entry = new DictEntry[3];
entry[0] = new DictEntry("Abc");
entry[1] = new DictEntry("Def");
entry[2] = new DictEntry("Ghi");
book.add(new DictEntry("Bla"));
book.add(new DictEntry("Blub"));
book.add(new DictEntry("Bli"));
}
}
public class DictEntry{
private String entry;
public DictEntry(String entry) {
this.entry = entry;
}
}
Le premier et le troisième diagramme sont les mêmes!
Ma question concerne l'agrégation et la composition si je suis ici et si je ne suis pas,que puis-je ajouter?
Agrégation:
public class Dictionary {
private DictEntry entry;
}
public class DictEntry{
}
Composition:
import java.util.*;
public class Dictionary {
private DictEntry[] entry;
}
DictEntry:
public class DictEntry{
}
La seule question que j'ai est de savoir comment le deuxième diagramme si j'ai le premier, la direction du dictionnaire n'est pas clair dans ma mises en œuvre.
1 answers
Tu t'es trompé mec, No1. la première association est comme ceci
public class Dictionary {
private DictEntry d0,d1,d2;
}
public class DictEntry{}
, Le second serait comme ceci
private DictEntry d0,d1,d2;
}
public class DictEntry{
private Dictionary owner;
}
Le 3ème. l'un est utilisé lorsque le Dictionary
aurait (n)références à partir des classes DicEntry
, mais la taille est inconnue, c'est utile lorsque Dictionary
est une définition un peu abstraite.
la 4e. un(Agrégation) est utilisé lorsque Dictionary
est un peu conteneur pour DicEntry
mais avec Dictionary
finalisation d'objet (kill), les objets hébergés DicEntry
continueraient leur vie(keep persistante)
public class Dictionary {
private List<DicEntry> dics;//with Dictionary termination, dics instance would be kept alive
}
public class DictEntry{}
Et le dernier est comme le 4. un avec une différence, et c'est lorsque le Dictionary
sera finalisé, cela provoquera la finalisation des objets hébergésDicEntry
Je ne peux vraiment pas montrer l'agrégation/composition avec du code, mais le diagramme indique au développeur que l'objet hébergé sera disponible après la fin de la classe hôte ou non.