0

構成は全体/部分の関係です。合成関係をコーディングする一般的な方法は、合成 (全体) オブジェクトのコンストラクターでパーツ オブジェクトを作成することです。Java での例:

public class Car {

private String brand;
private ArrayList<Tire> theFourTires = new ArrayList<Tire>();

public Car(String brand)
{
    this.brand = brand;
    for (int i = 1; i < 5;i ++)
    {
        // here the "composition" relationship
        theFourTires.add(new Tire());
    }
}

どのオブジェクトがパーツになるかを決定したい場合は、add ...メソッドを使用してコンポジットにパーツ オブジェクトを追加できます。このルール (UML 仕様) を尊重する必要があります。パーツ オブジェクトは共有できません (複合オブジェクトを除く別のオブジェクトから参照されます)。したがって、add メソッドを呼び出すときは、Car クラスで次のように、add メソッドを呼び出すメソッドで part オブジェクトを参照しない方がよいと思います。

public void addPart(CarParts aPart)
{
    this.parts.add(aPart);
}

別のオブジェクトから add メソッドを呼び出します。

Car c = new Car("Ford Torino");
c.addPart(new Tire());

それ以外の

Tire t = new Tire();
c.addPart(t);

この場合、インスタンスは非常に短い時間であっても t 参照によって共有され、構成関係が集約になるためです。この場合、t オブジェクトのメソッドを呼び出して、part オブジェクトのカプセル化に違反する可能性があります。パーツ オブジェクトは、コンポジットのみで管理する必要があります。これについてあなたはどう思いますか ?ありがとう世界!

4

3 に答える 3