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