Voglio sapere qual è la relazione tra un muro comune (che si trova in una stanza adiacente) e le stanze.
Come so il rapporto tra una stanza e le sue mura è Composition not Aggregation
(dico bene?)che tipo di relazione c'è tra un muro comune e le stanze che si trovano accanto ad esso?
And according to the definition of
Composizionethe contained object can't be shared between two
containers, whereas in
aggregazioneit is possible
.
ora sono confuso che qual è il miglior approccio di modellazione per rappresentare la relazione tra un muro comune e le stanze situate accanto ad esso?
Sarebbe molto apprezzato se si potesse fornire i vostri consigli con un po 'di codice.
| -------- | -------- |
Approch1:
(wall class ---- room class) /Composition
Approach2:
wall class ----- room class /Aggregation
Approch3:
abbiamo una classe muro e una classe comune della parete, classe comune della parete eredita da classe di parete
adjoining room class ---- (1) Common wall class /Aggregation
adjoining room class ---- (6) wall class/composition
Approach4: Sono un non sviluppatore un designer :) quindi questa è la mia 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:Penso che questa sia una domanda chiara ma solo per ulteriori chiarimenti:
Il punto della domanda è scoprire quale sia il miglior schema o approccio per modellare una relazione per un oggetto che è un componente di altri due oggetti nello stesso tempo.
e sul mio esempio: cosa intendo per "stanza"? Sicuramente intendo una stanza quadrata chiusa con 4 pareti e una porta. Ma in questo caso uno di questi muri è un muro comune ed è condiviso tra due stanze adiacenti.
Immagino di essere confuso. in questo scenario, una stanza può avere solo un muro comune? –
Perché è davvero importante che si tratti di composizione o aggregazione? –
La soluzione appropriata potrebbe dipendere da ciò che è necessario fare con i dati. C'è un RDBMS coinvolto? Metti in relazione stanze e pareti con una relazione molti-a-molti? Forse segui solo i muri e ricaverai stanze basate su serie distinte di muri. I muri comuni sono muri che appaiono in più di un set? Room.Walls; Wall.Rooms; Tieni traccia di tutte le stanze genitore a cui appartiene un muro e tutti i muri che compongono ciascuna stanza. Le stanze devono essere spazi chiusi? – ulty4life