какая связь между общей стеной и расположенными рядом с ней комнатами?

Я хочу знать, какова Связь между общей стеной (расположенной в соседней комнате) и комнатами.
Насколько я знаю, связь между комнатой и ее стенами такова: Композиция, а не агрегация(правильно?)

И согласно определениюКомпозициисодержащийся объект не может быть совместно используется двумяконтейнерами, тогда как вагрегацииэто возможно.

Теперь я запутался, как лучше всего представить отношения между общей стеной и комнатами, расположенными рядом с ней?

Было бы весьма признательно, если бы вы могли дать свои советы с некоторым кодом.

|--------|--------|

Подход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:Я думаю, что это ясный вопрос, но просто для большего пояснения:

Суть вопрос состоит в том, чтобы выяснить, каков наилучший шаблон или подход к моделированию отношений для объекта, который является компонентом двух других объектов в одно и то же время.

и о моем примере: что я имею в виду под «комнатой»?, конечно, я имею в виду закрытую квадратную комнату с 4 стенами и одной дверью. но в этом случае одна из этих стен является общей стеной и разделена между двумя соседними номера.

6
задан siamak 1 July 2012 в 14:12
поделиться