2011-11-10 11 views
5

Ho difficoltà a comprenderli quando si tratta di progettare un diagramma di classe, da quello che so la composizione è una relazione "ha-a" ma Aggregazione ?? Non ho idea di cosa sia. e una cosa quando saprò usare Composition in un diagramma di classe? e quando saprò di usare Aggregation in uno schema di classe ?? un esempio sarà molto apprezzato.Composizione e aggregazione in uno schema di classe

risposta

21

La principale differenza tra un'aggregazione e una composizione è la proprietà della relazione "ha-a". E 'forte o debole.

Le relazioni "has-a" sono di tipo "debole". Debole significa che le componenti collegate dell'aggregatore possono sopravvivere al ciclo di vita delle aggregazioni o possono essere lette in altro modo. Un semplice esempio potrebbe essere un club di calcio con i suoi membri. Se il club è desoluto, hai ancora i membri - che in realtà potrebbero anche essere membri di altri club e quindi sono mantenuti in vita.

La composizione "has-a" relenceship è di "tipo forte". Forte significato che non si può esistere senza l'altro. I cicli di vita del componente sono direttamente collegati al "genitore". Un esempio potrebbe essere una casa con stanze. Se decidi di abbattere la casa, perderai anche le tue stanze.

Forse un po 'astratto ma penso che sia l'idea alla base.

+0

Ho dimenticato di chiedere, che ne dici di associazione? – user962206

0

Vedere le risposte a domande precedenti here, here e here.

Personalmente non uso Aggregazione. La semantica è troppo debole per essere utile. Causa più problemi di quanti ne risolva. C'è solo un posto in cui ha proprietà ben definite e potenzialmente utili che lo distinguono da una semplice associazione binaria (vedi nota a piè di pagina).

La composizione può essere utile perché definisce importanti proprietà sull'immutabilità e sulla gestione del ciclo di vita (vedere il primo collegamento sopra). Sono sopravvissuto abbastanza felicemente per molti anni senza mai aver bisogno di usare l'Aggregazione.

hth.

Nota. L'aggregazione può essere applicabile se è necessario modellare una relazione ad albero ricorsiva, ad es. una parte decomposta in modo ricorsivo in sotto-parti. L'aggregazione dice che non ci possono essere relazioni circolari, cioè una parte non può essere una parte secondaria di se stessa, direttamente o indirettamente. Tuttavia la maggior parte delle persone che leggono il modello è improbabile che lo sappia. -Quindi dovresti aggiungere un commento. Il che significa che dovresti anche mantenere un'associazione binaria ed evitare la confusione dell'uso di Aggregation.

Problemi correlati