我刚刚阅读了一些UML图表的例子,用Java翻译,我就陷入了困境。 我将diagramm作为参考:
由于我是Java编程的新手,我在这段代码中有些不明白的地方:为什么我要添加LinkedList? Gehege右角的T:Tier是什么意思? (Gehege = Zoo,Tiere =德语动物)
public class Tier {
private int anzahlbeine;
private String farbe;
public Tier(int anzahlbeine, String farbe) {
this.anzahlbeine=anzahlbeine;
this.farbe=farbe;
}
public void laufen (double strecke) {
System.out.println(strecke);
}
public void fressen () {
System.out.println("I eat");
}
}
和
public class Gehege <T extends Tier> {
private int kapazitaet;
private double groesse;
private LinkedList<T> tiere;
public Gehege(int kapazitaet, double groesse) {
this.kapazitaet=kapazitaet;
this.groesse=groesse;
}
public void addTier(T tier) {
if (this.kapazitaet>this.groesse.size) {
this.tiere.add(tiere);
}
else { throw new Exception RunTimeException ("Full"); }
}
public void removeTier(T tier){
this.tiere.remove(tier);}
}
的质量更好的图片
答案 0 :(得分:0)
Gehege右角的T:Tier是什么意思?
这意味着Gehege
会被Tier
模板化。虽然一切都在语法上是正确的,但在语义上它是不对的。可以有不同种类的Gehege
s持有不同种类的东西吗?这看起来不太正确!
以List
为例。 List
被模板化了,因为可以列出不同类型的对象,例如List
Car
,List
Book
等。将同样的内容应用于{ {1}} - 逻辑变得平淡。因此,在我看来,设计在语义上并不正确。
答案 1 :(得分:0)
您必须将类型tiere
的多值引用属性LinkedList<T>
添加到类Gehege
,以实现Gehege
和{{1}之间的关联/聚合将许多Tier
个实例与一个Tier
实例相关联。按照惯例,此属性的名称是关联类(Gehege
)的小写和复数名称。
事实上,最好不要使用Tier
接口作为多值引用属性的类型来选择LinkedList
与ArrayList
。因此,它应该是
List