Frage

Sowohl in Assoziation als auch in der Aggregation behält eine Klasse einen Hinweis auf eine andere Klasse bei.

Impliziert die Konstruktorinjektion dann die Zusammensetzung? Ist es sicher, dass die Setter -Injektion zu einer Assoziation und nicht zu einer Aggregation führt?

War es hilfreich?

Lösung

Eine Aggregation ist lediglich eine weitere Darstellung einer Vereinigung. Die Setter -Injektion führt also zu einer Assoziation und Aggregation - ebenso wie die Konstruktorinjektion.

Es ist umstritten, ob die Konstruktorinjektion Zusammensetzung impliziert, da nach einer strengen Interpretation der Zusammensetzung die Klasse selbst sowohl für die Konstruktion als auch für die Zerstörung der zusammengesetzten Klasse verantwortlich sein muss.

Andere Tipps

Bei Java -Code -Ebene, wenn Sie eine Klasse 2 und Klasse 3 haben, den erwarteten Code.

Traditionelle Assoziation 0..1 bis 0..1 gibt den folgenden Code:

public class Class2 {

    private Class3 class3;

    public Class3 getClass3() {
        return class3;
    }

    public void setClass3(Class3 class3) {
        this.class3 = class3;
    }
}

Klasse 3 ist der gleiche Code wie Klasse 2.

Bitte beachten Sie, dass sich die Vereinigung mit Attributen und nicht mit Methoden bezieht. Wenn wir uns entscheiden, keine Zubehör zu verwenden, wäre der Code nur:

public class **Class2** {

    private Class3 class3;

Aggregation 1 zu vielen gibt den folgenden Code:

import java.util.Collection;
import java.util.Iterator;

public class Class2 {
    private Collection<Class3> class3 = null;

    public Collection<Class3> getClass3() {
        return class3;
    }

    public Iterator<Class3> class3Iterator() {
        return class3.iterator();
    }

    public boolean isClass3Empty() {
        return class3.isEmpty();
    }

    public boolean containsClass3(Class3 class3) {
        return this.class3.contains(class3);
    }

    public boolean containsAllClass3(Collection<Class3> class3) {
        return this.class3.containsAll(class3);
    }

    public int class3Size() {
        return class3.size();
    }

    public Class3[] class3ToArray() {
        return class3.toArray(new Class3[class3.size()]);
    }

    public void setClass3(Collection<Class3> class3) {
        this.class3 = class3;
    }

    public boolean addClass3(Class3 class3) {
        return this.class3.add(class3);
    }

    public boolean removeClass3(Class3 class3) {
        return this.class3.remove(class3);
    }

    public void clearClass3() {
        this.class3.clear();
    }
}

public class Class3 {

    private Class2 class2 = null;

    public Class2 getClass2() {
        return class2;
    }

    public void setClass2(Class2 class2) {
        this.class2 = class2;
    }
}

Hoffe das hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top