web-dev-qa-db-fra.com

Quelle est la différence entre agrégation, composition et dépendance?

Quelle est la différence entre agrégation, composition et dépendance?

255
sevugarajan

Agrégation implique une relation dans laquelle l'enfant peut exister indépendamment du parent. Exemple: classe (parent) et étudiant (enfant). Supprimez le cours et les étudiants existent toujours.

Composition implique une relation dans laquelle l'enfant ne peut exister indépendamment du parent. Exemple: Maison (parent) et chambre (enfant). Les chambres n'existent pas séparément d'une maison.

Les deux précédentes sont des formes de confinement (d'où les relations parent-enfant).

Dependency est une forme de relation plus faible et indique, en termes de code, qu'une classe en utilise une autre par paramètre ou type de retour.

La dépendance est une forme de association.

417
cletus

L'agrégation et la composition sont presque complètement identiques, sauf que composition est utilisé lorsque la vie de l’enfant est complètement contrôlée par le parent.

Agrégation

Car -> Tires

La Tires peut être extraite de l'objet Car et installée sur un autre. En outre, si la voiture est totalisée, les pneus ne doivent pas nécessairement être détruits.

Composition

Body -> Blood Cell

Lorsque l'objet Body est détruit, le BloodCells est détruit avec lui.

dépendance

Une relation entre deux objets où le changement de l'un peut affecter l'autre.

133
Robert Greiner

Agrégation - partie séparable en entier. La partie a une identité propre, séparée de ce dont elle fait partie. Vous pouvez choisir cette partie et la déplacer vers un autre objet. (exemples concrets: roue -> voiture, cellule sanguine -> corps)

Composition - partie non séparable du tout. Vous ne pouvez pas déplacer la pièce vers un autre objet. plus comme une propriété. (Exemples concrets: courbe -> route, personnalité -> personne, max_speed -> voiture, propriété d'un objet -> objet)

Notez qu'une relation qui est un agrégat dans un dessin peut être une composition dans un autre. Son tout sur la façon dont la relation doit être utilisée dans cette conception spécifique.

dépendance - sensible au changement. (quantité de pluie -> météo, position de la tête -> bodyposition)

Remarque: "Cellule de sang" -> Sang "peut être" Composition "car les cellules sanguines ne peuvent exister sans l'entité appelée Sang." Sang "-> Corps" peut être "Agrégation" car le sang peut exister sans l'entité appelée Corps.

44
MatsW

Un objet associé à une relation composition n'existera pas en dehors de l'objet contenant. Les exemples sont un rendez-vous et le propriétaire (une personne) ou un calendrier; un TestResult et un Patient.

D'autre part, un objet agrégé par un objet contenant peut exister en dehors de cet objet. Les exemples sont une porte et une maison; un employé et un département.

Une dépendance concerne la collaboration ou la délégation , lorsqu'un objet demande des services à un autre objet et dépend donc de cet objet. En tant que client du service, vous souhaitez que l'interface de service reste constante, même si des services futurs sont proposés.

6
Mark

L'agrégation et la composition sont des termes que la plupart des gens dans le monde OO ont acquis via UML. Et UML définit très mal ces termes, comme le montrent par exemple Henderson-Sellers et Barbier ("Comment appelle-t-on cette agrégation?", "Formalisation de la relation entière dans le langage de modélisation unifié" "). Je ne pense pas qu'une définition cohérente de l'agrégation et de la composition puisse être donnée si vous voulez être compatible avec UML. Je vous suggère de regarder les travaux cités.

En ce qui concerne la dépendance, il s’agit d’une relation très abstraite entre types (et non objets) pouvant signifier presque tout.

5
CesarGon

Un objet peut en contenir un autre dans le cadre de son attribut.

  1. document contient des phrases qui contiennent des mots.
  2. Le système informatique a un disque dur, un ram, un processeur, etc.

Donc, le confinement n'a pas besoin d'être physique. Par exemple, le système informatique est garanti.

1
Manish Doshi

Confinement: - Ici, pour accéder à un objet interne, nous devons utiliser un objet externe. Nous pouvons réutiliser l'objet contenu. Agrégation: - Ici, nous pouvons accéder à l'objet intérieur encore et encore sans utiliser d'objet extérieur.

0
Tryst