what kind of relationship is there between a common wall and the rooms that located next to it?
- by siamak
I want to know whats the Relationship between a common wall (that are located In an adjoining room ) and the rooms.
As i know the relationship between a room and its walls is Composition not Aggregation (am i right ?)
And according to the definition of Composition the contained object can't be shared between two containers, whereas in aggregation it is possible.
now i am confused that whats the best modeling approach to represent the relationship between a common wall and the rooms located next to it ?
It would be highly Appreciated if you could provide your advices with some code.
|--------|--------|
Approch1:
(wall class ---- room class) /Composition
Approach2:
wall class ----- room class /Aggregation
Approch3:
we have a wall class and a Common wall class , Common wall class inherits from wall class
adjoining room class ---- (1) Common wall class /Aggregation
adjoining room class ---- (6) wall class / composition
Approach4:
I am a developer not a designer :) so this is my idea :
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
{
//...
}
// in somewher :
static void main()
{
Wall _commonWall=new Wall();
Room room1=new Room(_commonWall);
Room room2=new Room(_commonWall);
Room [] adjacentRoom =new Room[2]{room1,room2};
}
Edit 1: I think this is a clear question but just for more clarification :
The point of the question is to find out whats the best pattern or approach to model a relationship for an object that is a component of two other objects in the same time.
and about my example : waht i mean by a "room" ?,surely i mean an enclosed square room with 4 walls and one door.but in this case one of these walls is a common wall and is shared between two adjacent rooms.