2009-10-29 2 views

risposta

120

Aggregazione e composizione sono quasi del tutto identici, tranne che composizione viene utilizzato quando la vita del bambino è completamente controllato dal genitore.

aggregazione

Car -> Tires 

Il Tires può essere tolto dell'oggetto Car e installato su una diversa. Inoltre, se la vettura viene sommata, le gomme non devono necessariamente essere distrutte.

Composizione

Body -> Blood Cell 

Quando l'oggetto Body viene distrutto il BloodCells distrutti con esso.

Dipendenza

Una relazione tra due oggetti dove cambiando un può influenzare l'altro.

+10

Divertente, ho appena letto un tutorial in cui l'esempio di pneumatici per auto è usato per illustrare la composizione ... – mouviciel

+11

interessante, immagino dipenda da come lo guardi. Non vedo come la distruzione dell'oggetto della macchina imponga anche la distruzione delle gomme. Inoltre, puoi togliere le gomme da un'auto e metterle su un'auto diversa. Questo è il problema con le analogie, suppongo. –

+1

Sì, infatti ho capito l'aggregazione e la composizione non con tali analogie ma con il codice reale. – mouviciel

381

Aggregazione implica un rapporto in cui il bambino può esistere indipendentemente dal genitore. Esempio: classe (genitore) e studente (bambino). Elimina la classe e gli studenti esistono ancora.

Composizione implica una relazione in cui il bambino non può esistere indipendentemente dal genitore. Esempio: casa (genitore) e stanza (bambino). Le camere non esistono separate da una casa.

È possibile che due sono le forme di contenimento (da qui il relazioni padre-figlio).

Dipendenza è una forma più debole di rapporto e in termini di codice indica che una classe utilizza un'altra dal parametro o ritorno tipo.

La dipendenza è un tipo di associazione .

+1

Menzione il fatto che l'aggregazione e la composizione sono specializzazione del modulo di relazione di contenimento e sarebbe perfetta. – alphazero

+1

:-) Non dicendo che tu abbia ragione o torto, ma queste classificazioni gees succhiano. Class/Student == Aggregation? ... Non secondo JavaPapers.com. http://javapapers.com/oops/association-aggregation-composition-abstraction-generalization-realization-dependency/ "Una classe contiene studenti: uno studente non può esistere senza una classe, esiste una composizione tra classe e studenti". – TallPaul

+0

Btw, personalmente sono d'accordo con te ... – TallPaul

6

Un oggetto associato a una relazione composizione non esisterà al di fuori dell'oggetto contenitore. Esempi sono un appuntamento e il proprietario (una persona) o un calendario; un TestResult e un paziente.

D'altra parte, un oggetto che è aggregati da un oggetto contenente può esistono fuori di tale oggetto contiene. Esempi sono una porta e una casa; un dipendente e un dipartimento.

Un dipendenza riferisce a collaborazione o delegazione, in cui un oggetto richieste di servizi da un altro oggetto è chiamata ad dipendente da tale oggetto. Come cliente del servizio, l'interfaccia del servizio deve rimanere costante, anche se vengono offerti servizi futuri.

5

Aggregazione e composizione sono termini che la maggior parte delle persone nel mondo OO ha acquisito tramite UML. E UML fa un lavoro molto povero nel definire questi termini, come è stato dimostrato, ad esempio, da Henderson-Sellers e Barbier ("Che cos'è questa cosa chiamata aggregazione?", "Formalizzazione della relazione intera-parte nel linguaggio di modellazione unificato "). Non credo che una definizione coerente di aggregazione e composizione possa essere data se si è interessati ad essere conformi a UML. Ti suggerisco di guardare le opere citate.

Per quanto riguarda la dipendenza, si tratta di una relazione altamente astratta tra tipi (non oggetti) che può significare quasi tutto.

0

Contenimento: - Qui per accedere all'oggetto interno dobbiamo usare l'oggetto esterno. Possiamo riutilizzare l'oggetto contenuto. Aggregazione: - Qui possiamo accedere più e più volte all'oggetto interno senza utilizzare l'oggetto esterno.

1

Un oggetto può contenere un altro come parte del suo attributo.

  1. documento contiene frasi che contengono parole.
  2. sistema di computer ha un hard disk, ram, processore ecc

Quindi contenimento non deve essere fisico. ad esempio, il sistema informatico ha una garanzia.

39

Aggregazione - parte separabile per intero. La parte ha una propria identità, separata da ciò di cui fa parte. Puoi scegliere quella parte e spostarla su un altro oggetto. (esempi reali: ruota -> auto, bloodcell -> corpo)

Composizione - parte non separabile del tutto. Non è possibile spostare la parte su un altro oggetto. più come una proprietà. (esempi del mondo reale: curva -> strada, personalità -> persona, max_speed -> auto, proprietà dell'oggetto -> oggetto)

Si noti che una relazione che è un aggregato in un progetto può essere una composizione in un altro. È tutto su come la relazione deve essere utilizzata in quel design specifico.

dipendenza - sensibile al cambiamento. (quantità di pioggia -> meteo, posizione di testa -> bodyposition)

Nota: "Bloodcell" -> Blood "potrebbe essere" Composizione "in quanto le cellule del sangue non possono esistere senza l'entità chiamata Sangue." Sangue "-> Corpo" potrebbe essere "Aggregazione" come il Sangue può esistere senza l'entità chiamata Corpo.

Problemi correlati