我的代码是否正确? UML的> Java翻译

时间:2014-02-18 15:39:31

标签: java generics linked-list uml add

我刚刚阅读了一些UML图表的例子,用Java翻译,我就陷入了困境。 我将diagramm作为参考:

UML

由于我是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);}
}

http://i.imgur.com/f1Ii41X.png

的质量更好的图片

2 个答案:

答案 0 :(得分:0)

Gehege右角的T:Tier是什么意思?

这意味着Gehege会被Tier模板化。虽然一切都在语法上是正确的,但在语义上它是不对的。可以有不同种类的Gehege s持有不同种类的东西吗?这看起来不太正确!

List为例。 List被模板化了,因为可以列出不同类型的对象,例如List CarList Book等。将同样的内容应用于{ {1}} - 逻辑变得平淡。因此,在我看来,设计在语义上并不正确。

答案 1 :(得分:0)

您必须将类型tiere的多值引用属性LinkedList<T>添加到类Gehege,以实现Gehege和{{1}之间的关联/聚合将许多Tier个实例与一个Tier实例相关联。按照惯例,此属性的名称是关联类(Gehege)的小写和复数名称。

事实上,最好不要使用Tier接口作为多值引用属性的类型来选择LinkedListArrayList。因此,它应该是

List