Comprendo il concetto alla base di Composition ('ha a') in cui la classe contenuta viene distrutta al termine della classe del contenitore. Allo stesso modo, ottengo l'aggregazione, che è una relazione "più sciolta" tra due classi, e la chiusura di un oggetto non dispone interamente dell'altro.
Il punto strong, per me, è in realtà scegliere queste relazioni in forma codificata.
Prendi ad esempio:
class Location { public Troll myTroll; public Cave myCave; public Location() { myTroll = null; myCave = null; } }
-
La posizione della classe viene istanziata in un'altra classe chiamata Simulazione. È usato come una matrice 2D di tipo Location, in cui potrei avere un troll o una grotta, ecc.
-
Nella classe Simulation, ci sono costruttori per creare nuove Cave e creare nuovi Troll. per esempio.
private Location[,] Landscape; Landscape[x, y].Cave = new Cave(); Landscape[x, y].Troll = new Troll();
Si può definire una relazione tra Location e Troll e Cave dal frammento sopra? Considero che Simulation e Troll e Cave siano un esempio di Composizione, ma è la Location a darmi il problema.
La mia tendenza, anche se molto dilettantesca, è di cercare generalmente l'istanziazione della classe, cioè. la nuova () Parola chiave, e questo mi direbbe se la sua composizione. (So che questo è un approccio errato)