2010-10-31 5 views
1

Je veux comprendre la différence entre composition et agrégation relation.Diagramme de classes UML: composition vs agrégation

Est-ce que quelqu'un connaît un site qui explique les diagrammes de classes UML pour toutes les relations?

+0

Copie possible de [Quelle est la différence entre association, agrégation et composition?] (Https://stackoverflow.com/questions/885937/what-is-the-difference-between-association-agrégation-and-composition) –

Répondre

4

La composition et l'agrégation concernent le comportement de suppression en cascade.

Les objets enfants ont-ils une vie propre au-delà du parent? Si oui, vous avez besoin d'agrégation.

Si le parent est supprimé, les enfants doivent-ils également être supprimés? Si oui, vous avez besoin de composition. Donc, disons que vous avez un modèle où il y a une classe Scolaire, une classe Bâtiment et une classe Étudiant. Une école a une relation un-à-plusieurs avec le bâtiment et une relation un-à-plusieurs avec l'étudiant.

La relation École-bâtiment est un exemple de composition. Si vous fermez l'école, vous pourriez décider de faire du bulldozer les bâtiments.

La relation d'école à étudiant est l'agrégation. Si vous fermez l'école, vous ne déciderez certainement pas d'assassiner tous les étudiants.

Vous pouvez lire ce que l'oncle Bob Martin a à dire à ce sujet here.

+0

Je ne l'ai pas eu – Ruba

+0

Abandonnez maintenant, alors. – duffymo

+1

ne me réponds pas si tu veux te moquer de moi – Ruba

2

La différence réside dans la durée de vie des parties d'un objet. Si les parties peuvent vivre indépendamment du parent, alors vous avez une agrégation.

  • Si la durée de vie des pièces est contrôlée par le parent, il s'agit d'une composition. La composition peut être vue comme un cas particulier d'agrégation.

    Selon The UML User Guide (glossaire):

    composition: A form of aggregation with strong ownership and coincident lifetime of the parts by the whole 
    
  • 1

    l'agrégation et la composition représentent "a une" relation. La différence entre les deux est que la composition fait référence à propriété exclusive. Par exemple, une transaction "a un" numéro d'identification de transaction, et cette transaction est la seule transaction qui a ce numéro d'identification de transaction, le numéro d'identification est exclusif à la transaction. Une transaction a également une date de transaction, mais de nombreuses transactions peuvent également avoir la même date de transaction. Puisque la date de transaction peut être partagée entre plusieurs transactions, elle n'est pas exclusive.

    Lorsque vous dessinez ces deux types de relations sur un diagramme de classes UML une relation de composition serait représentée par un rempli dans le diamant où une relation d'agrégation serait représentée par un diamant qui n'est pas rempli.

    alt text

    Le livre Introduction to Java Programming couvre ce sujet en détail.