Per aggiungere a @ la buona risposta di RobertHarvey e l'eccellente osservazione di @ tofro nel commento:
If the Stable is destroyed, so the horses too.
Questo snippet non è realistico in diversi modi:
Solo perché l'array Horses
viene mostrato come assegnato una volta, contrassegnato come privato, e l'esempio è altrimenti incompleto possiamo immaginare che forse i Cavalli vengano persi da distruggere il Stable
. Tuttavia, ad esempio, tutto ciò che sarebbe necessario per non perdere i cavalli è che vengano esposti al di fuori della classe Stable
e catturati; è plausibile che un'altra classe cataloghi tutti i cavalli, per esempio.
È strano che lo Stable crei nuovi cavalli nel suo costruttore, ma solo perché lo fa non significa necessariamente che li distrugge alla sua distruzione.
Che crei nuovi cavalli significa che la creazione di una nuova stalla rappresenta immediatamente una stalla completamente popolata, non necessariamente in grado di contenere cavalli esistenti. Dove posso mettere un cavallo esistente? Non in una tale stalla, sono sempre pieni di cavalli nuovi di zecca.
Più realistico sarebbe:
Che lo Stabile è preconfigurato (cioè creato) con un numero fisso di bancarelle, ognuna delle quali può essere dinamicamente vuota o assegnata a un cavallo.
E che nel tempo lo stesso Stable potrebbe essere usato per assegnare a qualsiasi cavallo, se disponibile, (o un particolare) stallo vuoto, o rimuovere un incarico di un cavallo per restituire uno stallo a un compito vuoto.
La creazione del cavallo (oggetto) sarebbe separata dalla creazione Stabile (oggetto).
Tuttavia , ciò a cui stai alludendo con la nozione del conteggio di MaxStableRooms
, ma non correttamente la modellazione , è la distinzione tra StableRoom
s e Horse
s.
Forse dovresti creare un StableRoom
come una propria classe / entità.
Ora puoi avere composizione di StableRoom
s con Stable
e aggregazione di Horse
s su StableRoom
s.
Un StableRoom
ha senso per essere distrutto quando Stable
viene distrutto, ma quando viene distrutto il Horse
s assegnato a StableRoom
s viene reso senza dimora ma non distrutto .
Creando una nozione di prima classe di StableRoom
, ogni StableRoom
ha il potenziale per avere qualità differenziate, come cavalli massimi, porte adiacenti ecc ...
(In un caso analogo con HotelRooms, avresti numero di letti, vasca idromassaggio, vista oceano vs piscina, categoria tariffazione, ecc.)
Inoltre, se avevi bisogno di incarichi più complessi (come sarebbe necessario per hotel, camere d'albergo e persone) potresti avere un'altra classe (o serie di classi) coinvolta nella pianificazione e amp; calendario e prenotazioni piuttosto che farlo interamente all'interno della classe Stable.