我有以下UML类关联想控制我是对还是错(这里不需要方法):
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;
}
}
第一张和第三张图是相同的!
我的问题是聚合和组合,如果我就在这里,如果不是,我可以添加什么?
聚合:
public class Dictionary {
private DictEntry entry;
}
public class DictEntry{
}
成分:
import java.util.*;
public class Dictionary {
private DictEntry[] entry;
}
DictEntry:
public class DictEntry{
}
我唯一的问题是如果我有第一个图,第二个图如何,在我的实现中,字典的方向不明确。
答案 0 :(得分:2)
你错了,伙计,No1。第一个关联是这样的
public class Dictionary {
private DictEntry d0,d1,d2;
}
public class DictEntry{}
第二个就像这样
private DictEntry d0,d1,d2;
}
public class DictEntry{
private Dictionary owner;
}
第3名。当Dictionary
具有来自DicEntry
类的(n)引用时使用一个,但是大小未知,当Dictionary
有点抽象定义时,它很有用。
第四个。当Dictionary
是DicEntry
的容器,但Dictionary
对象终结(kill)时,使用一个(聚合),托管的DicEntry
对象将继续其生命(保持持久)
public class Dictionary {
private List<DicEntry> dics;//with Dictionary termination, dics instance would be kept alive
}
public class DictEntry{}
而最后一个就像第四个。一个有区别的,这是Dictionary
最终确定后,这将导致最终确定托管对象DicEntry
我真的无法用代码显示聚合/组合,但该图告诉开发人员托管对象在主机类终止后是否可用。