Composizione e aggregazione
Le classi e gli oggetti possono essere correlati tra loro. L'ereditarietà descrive una relazione "IS A". UN LEONE È UN ANIMALE. Questa relazione è facilmente espressa usando l'ereditarietà, dove
Animalsarebbe la classe genitore e
Lionsarebbe il figlio. Ma non tutte le relazioni nel mondo sono descritte correttamente in questo modo. Ad esempio, una tastiera ha sicuramente qualche relazione con un computer, ma
non è un computer . Le mani hanno qualche relazione con una persona, ma non sono una persona. Questi casi rappresentano un diverso tipo di relazione, non "IS A", ma "HAS A". Le mani non sono una persona, ma una persona HA le mani. Una tastiera non è un computer, ma un computer HA UNA tastiera. "HA UN"
. La differenza tra questi concetti sta nella "rigorosità" delle relazioni. Facciamo un semplice esempio: abbiamo un file
Car. Ogni macchina ha un motore. Inoltre, ogni auto può trasportare passeggeri. Qual è la differenza fondamentale tra i campi
Engine enginee
Passenger[] passengers? Se il passeggero
Aè seduto all'interno di un'auto, ciò non significa che i passeggeri
Be
Cnon possano essere anche nell'auto. Un'auto può ospitare più passeggeri. Inoltre, tutti i passeggeri possono scendere dall'auto, ma continuerà a funzionare senza intoppi. La relazione tra la
Carclasse e l'
Passenger[] passengersarray è meno rigida. Si chiama
aggregazione . Ecco un buon articolo su questo argomento:
Relazioni tra classi (oggetti). Fornisce un altro buon esempio di aggregazione. Supponiamo di avere una
Studentclasse che rappresenta uno studente e una
StudentGroupche rappresenta un gruppo di studenti. Uno studente può essere membro di un club di fisica, di un fan club studentesco di Star Wars o di un comedy club.
La composizione è un tipo di relazione più stretto. Quando si utilizza la composizione, un oggetto ha un altro oggetto, ma non può appartenere a un altro oggetto dello stesso tipo. L'esempio più semplice è il motore di un'auto. Se un'auto ha un motore, quel motore non può appartenere a un'altra auto. Come puoi vedere, quella relazione è molto più stretta di quella di
Care
Passengers.
![Relazioni tra classi. Ereditarietà, composizione e aggregazione - 4]()
GO TO FULL VERSION