隣接する部屋にある共有の壁と部屋の間の関係を知りたいです。
私が知っているように、部屋とその壁の関係はComposition not Aggregation
(そうですか?)
And according to the definition of
構成 the contained object can't be shared between two
containers, whereas in
の集約 it is possible
。
今、私は、共通の壁とその隣にある部屋との関係を表現するための最良のモデリング アプローチは何かと混乱しています。
いくつかのコードでアドバイスを提供できれば、非常に高く評価されます。
|--------|--------|
アプローチ1:
(wall class ---- room class) /Composition
アプローチ2:
wall class ----- room class /Aggregation
アプローチ3:
壁クラスと共通壁クラスがあり、共通壁クラスは壁クラスから継承します
adjoining room class ---- (1) Common wall class /Aggregation
adjoining room class ---- (6) wall class / composition
アプローチ4: 私はデザイナーではなく開発者です:)これが私の考えです:
class Room
{
private wall _firstwall ;
private wall _secondtwall;
private wall _thirdwall ;
private wall _commonwall ;
public Room( CommonWall commonwall)
{
_firstwall=new Wall();
_secondtwall=new Wall();
_thirdwall=new Wall();
_commonwall=commonwall;
}
}
Class CommonWall:Wall
{
//...
}
// どこかで :
static void main()
{
Wall _commonWall=new Wall();
Room room1=new Room(_commonWall);
Room room2=new Room(_commonWall);
Room [] adjacentRoom =new Room[2]{room1,room2};
}
編集1: これは明確な質問だと思いますが、より明確にするためだけです:
質問のポイントは、同時に他の 2 つのオブジェクトのコンポーネントであるオブジェクトの関係をモデル化するための最良のパターンまたはアプローチを見つけることです。
そして私の例について:「部屋」とはどういう意味ですか?確かに、4つの壁と1つのドアで囲まれた正方形の部屋を意味します.しかし、この場合、これらの壁の1つは共通の壁であり、隣接する2つの部屋で共有されています.