Je suis conscient des différences conceptuelles entre l'agrégation et la composition. Quelqu'un peut-il me dire la différence d'implémentation en Java entre eux avec des exemples?
102
Je suis conscient des différences conceptuelles entre l'agrégation et la composition. Quelqu'un peut-il me dire la différence d'implémentation en Java entre eux avec des exemples?
Réponses:
Composition
Agrégation
Dans le cas de la composition, le moteur est complètement encapsulé par la voiture. Il n'y a aucun moyen pour le monde extérieur d'obtenir une référence au moteur. Le moteur vit et meurt avec la voiture. Avec l'agrégation, la voiture remplit également ses fonctions via un moteur, mais le moteur n'est pas toujours une partie interne de la voiture. Les moteurs peuvent être échangés, voire complètement supprimés. Non seulement cela, mais le monde extérieur peut toujours avoir une référence au moteur et le bricoler, qu'il soit dans la voiture.
la source
new Engine(EngineSpecs)
appel même s'il n'y avait pas de voiture. La manière de réaliser la composition est de créer Engine en tant que classe interne, de sorte qu'un objet de moteur soit toujours créé en référence à un objet de voitureJ'utiliserais un bel exemple UML.
Prenez une université qui a 1 à 20 départements différents et chaque département a 1 à 5 professeurs. Il existe un lien de composition entre une université et ses départements. Il existe un lien d'agrégation entre un département et ses professeurs.
La composition est juste une agrégation FORTE, si l'université est détruite, les départements devraient également être détruits. Mais il ne faut pas tuer les professeurs même si leurs départements respectifs disparaissent.
En java:
Quelque chose autour de ça.
la source
Il y a une grande explication dans l'url donnée ci-dessous.
http://www.codeproject.com/Articles/330447/Understanding-Association-Aggregation-and-Composit
Vérifiez s'il vous plaît!!!
la source
La différence est que toute composition est une agrégation et non l'inverse.
Fixons les conditions. L'agrégation est un métaterm dans le standard UML, et signifie à la fois composition et agrégation partagée, simplement nommée shared . Trop souvent, il est nommé incorrectement «agrégation». C'est MAUVAIS, car la composition est aussi une agrégation. Si je comprends bien, vous voulez dire «partagé».
Plus loin du standard UML:
Ainsi, l'association université-cathédras est une composition, car cathedra n'existe pas en dehors de l'université (IMHO)
C'est-à-dire que toutes les autres associations peuvent être dessinées sous forme d'agrégations partagées, si vous ne suivez que certains de vos principes ou de quelqu'un d'autre. Regardez aussi ici .
la source
En termes simples:
La composition et l'agrégation sont des associations. Composition -> Forte relation Has-A Agrégation -> Faible relation Has-A.
la source
Un programme de composition simple
la source
Nous devons d'abord parler de la différence réelle entre
Aggregation
etComposition
doit être sur la même longueur d'onde.tandis que
Maintenant, l'agrégation peut simplement être réalisée en détenant une propriété d'une entité dans une autre comme ci-dessous:
Pour la composition, il est nécessaire que l'objet dépendant soit toujours créé avec l'identité de son objet associé. Vous pouvez utiliser une classe interne pour la même chose.
la source
Agrégation vs composition
L'agrégation implique une relation où l' enfant peut exister indépendamment du parent. Par exemple, Banque et Employé, supprimez la banque et l'employé existe toujours.
alors que la composition implique une relation où l' enfant ne peut pas exister indépendamment du parent. Exemple: l'humain et le cœur, le cœur n'existent pas séparément d'un humain.
La relation d'agrégation est «has-a» et la composition est «part-of» de la relation.
La composition est une association forte tandis que l'agrégation est une association faible.
la source
Les deux types sont bien sûr des associations, et pas vraiment mappés strictement à des éléments de langage comme ça. La différence réside dans le but, le contexte et la façon dont le système est modélisé.
À titre d'exemple pratique, comparez deux types de systèmes différents avec des entités similaires:
Un système d'immatriculation des voitures qui suit principalement les voitures, et leurs propriétaires, etc. Ici, nous ne sommes pas intéressés par le moteur en tant qu'entité distincte, mais nous pouvons toujours avoir des attributs liés au moteur, comme la puissance et le type de carburant. Ici, le moteur peut être une partie composite de l'entité voiture.
Un système de gestion d'atelier de service automobile qui gère les pièces automobiles, l'entretien des voitures et le remplacement des pièces, peut-être des moteurs complets. Ici, nous pouvons même avoir des moteurs en stock et avoir besoin de les suivre ainsi que d'autres pièces séparément et indépendamment des voitures. Ici, le moteur peut être une partie agrégée de l'entité voiture.
La façon dont vous implémentez cela dans votre langue est une préoccupation mineure car à ce niveau, des choses comme la lisibilité sont beaucoup plus importantes.
la source