Quelle est la différence entre la Composition et la relation d'Association?
En programmation orientée objet, quelle est la différence entre la composition (notée par rempli de diamants en UML) et de l'association (indiquée par vide de diamant en UML) relation entre les classes. Je suis un peu confus. Qu'est-ce que l'agrégation? Puis-je avoir une convaincante l'exemple du monde réel?
- Vous n'avez pas arriver à dire l'Agrégation à la place de l'Association?
- ne sont-elles pas différentes?
- L'Association n'est pas la même que l'agrégation; en UML, l'agrégation est représenté avec un vide de diamant.
- Qu'est-ce que "OUPS?"
- La programmation orientée objet est la programmation orientée objet!
- utilisé: OOPS -> programmation orientée objet
Vous devez vous connecter pour publier un commentaire.
COMPOSITION
Imaginer un logiciel de la société est composé de différentes Unités d'Affaires (ou départements) de Stockage BU, la mise en Réseau des BU. Automobile BU. La durée de vie de ces Unités d'Affaires est régie par la durée de vie de l'organisation. En d'autres termes, ces Unités d'Affaires ne peut pas exister de manière indépendante, sans l'entreprise. C'est la COMPOSITION. (c'est à dire le cabinet est COMPOSÉ D'unités d'affaires)
ASSOCIATION
La firme de logiciels peuvent avoir des traiteurs externes de servir de la nourriture aux employés. Ces restaurateurs ne font PAS PARTIE DE l'entreprise. Cependant, ils sont ASSOCIÉS à l'entreprise. Le traiteur peut exister même si notre logiciel de cabinet est fermé. Ils peuvent servir d'une autre entreprise! Ainsi, la durée de vie de traiteurs n'est pas régi par la durée de vie de la firme de logiciels. Ceci est typique de l'ASSOCIATION
AGRÉGATION
Considérer une Voiture de l'unité de fabrication. Nous pouvons penser à une Voiture comme une entité entière et d'une Roue de Voiture en tant que partie de la Voiture. (à ce stade, il peut ressembler à la composition. maintenez) La roue peut être créé semaines à l'avance, et il peut s'asseoir dans un entrepôt avant d'être placé sur une voiture lors de l'assemblage. Dans cet exemple, la Roue de la classe de l'instance clairement vie de façon indépendante de la Voiture de classe de l'instance.
Ainsi, à la différence de la composition, de l'agrégation, les cycles de vie des objets concernés ne sont pas étroitement couplées.
Voici quelques exemples:
Je suis un employé d'une société, d'où je suis associé à cette entreprise. Je ne suis pas partie, je ne la composent, mais je suis lié à elle, cependant.
Je suis composé d'organes, qui, si on les transplante, va mourir avec moi. C'est la composition, qui est une très forte lier entre les objets. Fondamentalement, les objets sont composées par d'autres objets. Le verbe dit tout.
Il y a aussi un autre moins lié genre de composition, appelée agrégation. Une agrégation est lorsque les objets sont composés par d'autres objets, mais de leur cycle de vie ne sont pas nécessairement liés. À l'aide d'un exemple extrême, un jouet Lego est une agrégation de parties. Même si le jouet peut être démonté, ses pièces peuvent être recombinées pour faire un jouet.
Possession et à l'utilisation.
Composition: l'objet avec la référence possède l'objet visé, et est responsable de sa "durée de vie", sa destruction (et souvent de la création, mais il peut être passé dans). Aussi connu comme un a-un relation.
Association: l'objet avec la référence utilise l'objet visé, peut-être pas exclusive de l'utilisateur, et n'est pas responsable de il se réfère à l'objet de la durée de vie. Aussi connu comme un utilise-un relation.
L'OP commentaires:
Agrégation: une Association qui est de l'ensemble de la partie, et qui ne peut pas être cyclique.
Exemples:
Composition: une Voiture a un Moteur, une Personne a une Adresse. Fondamentalement, doit avoir, des contrôles de la durée de vie.
Association: Une Voiture a-un Pilote, certains instance de classe a-une ErrorLogger. La durée de vie n'est pas contrôlée, peut être partagé.
Agrégation: UN DOM (Document Object Model, qui est les objets qui composent un arbre d'éléments HTML) Nœud a-a (un tableau) de Nœuds enfants. Le Nœud est top (enfin, plus élevé); il "contient" ses enfants, ils ne contiennent pas d'elle.
Je crois qu'une base de code exemple peut aider à illustrer les concepts donnés par les réponses ci-dessus.
Généralement, la composition signifie que la durée de vie de l'objet contenu est délimité par le conteneur, alors que l'association est une référence à un objet qui peut exister indépendamment.
Cependant, c'est juste la pratique que j'ai observé. Je déteste l'admettre, mais le labour à travers le UML2 spec n'est pas sur ma liste de choses amusantes à faire!
Existence indépendante.
Une Facture est composé des éléments.
Ce qui est un élément de ligne n'est pas sur une facture? C'est -- bien -- ce n'est rien. Il ne peut pas exister indépendamment.
D'autre part, une Facture est associée à un Client.
Client a une existence indépendante, avec ou sans facture.
Si les deux choses qui ont une existence indépendante, ils peuvent être associés.
Si une chose ne peut pas exister indépendamment, puis elle est partie d'une composition.
Composition est plus strict de la relation de l'agrégation. Composition signifie que quelque chose est donc fortement liée à quelque chose qu'ils ne peuvent pas fondamentalement exister indépendamment, ou s'ils le peuvent, ils vivent dans des contextes différents.
Monde réel exemple: vous définissez une interface graphique, puis un champ de texte où écrire quelque chose.
Entre la classe de définition de l'interface graphique et la classe définissant le champ de texte il y a la composition. Ensemble, ils composent un widget qui peut être vu comme une entité en soi. Supposons que vous supprimez la fenêtre, et que vous supprimez le champ de texte ainsi.
Agrégation est différent, en ce sens que le lien entre les deux entités est temporaire, instable, et occasionnelle. Un exemple réel. Supposons que vous avez une base de données d'objets contenant de multiples instances de données. Maintenant vous exécutez certaines filtre pour recueillir les données des instances obéissant à un critérium, et les instances sont poussés dans une liste de graphique afin que l'utilisateur puisse les voir. Lorsque le graphique widget reçoit les objets, il peut former un regroupement de ces entités, et de les présenter. Si l'utilisateur ferme la fenêtre avec la liste de graphique, et le dernier a été supprimé, les objets de données ne doivent pas être supprimés. Peut-être qu'ils sont affichés quelque part d'autre, ou vous avez encore besoin.
Aussi, en général, la composition est définie au moment de la création. L'agrégation est défini plus tard dans la durée de vie des objets.
Composition signifie une partie de l'état de l'entité est encapsulé par un autre type, mais il est conceptualy partie de l'état de l'entité. Par exemple vous pouvez avoir un type d'adresse et un employé de l'entité type qui comprend une adresse.
Association signifie qu'un type d'entité est assocciated avec un autre type d'entité, mais le assocciated entité est conceptualy pas partie de l'état de l'entité. Par exemple, un employé peut être assocciated avec une entreprise.