Qu'est-ce que la composition qu'il se rapporte à la conception orientée objet?
J'entends (et de lire sur ce site) beaucoup de choses sur "favorable à la composition au cours de l'héritage".
Mais quelle est la Composition? Je comprends l'héritage du point de Personne : Mammifères : les Animaux, mais je ne vois pas vraiment la définition de la Composition de n'importe où.. quelqu'un Peut-il me renseigner?
Vous devez vous connecter pour publier un commentaire.
Composition se réfère à une combinaison de types simples pour les rendre plus complexes. Dans votre exemple, la composition pourrait être:
Si vous vouliez aller totalement composition (et de se débarrasser de toutes les successions), il devrait ressembler à ceci:
L'avantage de cette approche est que les types
Mammal
etPerson
ne pas se conformer à l'interface de leur parent. Cette pourrait être une bonne chose parce que parfois, un changement à la super-classe peut avoir de graves effets sur les sous-classes.Ils peuvent toujours avoir accès à des propriétés et des comportements de ces classes par le biais de leurs instances privées de ces classes, et si ils veulent exposer ces ex-super-classe de comportements, ils peuvent tout simplement envelopper d'une méthode publique.
J'ai trouvé un bon lien avec de bons exemples ici: http://www.artima.com/designtechniques/compoinh.html
Class A
à l'intérieur deClass B
(au lieu de sous-classementClass B
deClass A
)." ?w69rdy
répondu à plus tard. OUI, je peux dire que.Composition est tout simplement les pièces qui composent l'ensemble. Une voiture a des roues, un moteur, et les sièges. L'héritage est un "est" une relation. La Composition est une "a une" relation".
Il y a trois façons de donner le comportement d'une classe. Vous pouvez écrire ce comportement dans la classe; vous pouvez hériter d'une classe qui a le comportement souhaité; ou vous pouvez intégrer une classe avec le comportement désiré dans votre classe comme un champ, ou un membre de la variable. Les deux dernières représentent des formes de réutilisation de code, et la dernière composition est généralement préféré. Il n'a pas vraiment donner à votre classe, le comportement désiré - vous toujours besoin d'appeler la méthode sur le terrain, mais il met moins de contraintes sur la conception des classes et des résultats plus faciles à tester et plus facile à déboguer le code. L'héritage est à sa place, mais la composition doit être préféré.
Composition - la Fonctionnalité d'un objet est constitué d'un ensemble de classes différentes. Dans la pratique, cela signifie contenant un pointeur vers une autre classe dont le travail est reporté.
Héritage - la Fonctionnalité d'un objet est composé de ses propres fonctionnalités en plus de la fonctionnalité de ses classes parentes.
Pourquoi la composition est préféré au cours de l'héritage, de prendre un coup d'oeil à la Cercle ellipse problème.
Un exemple de Composition est l'endroit où vous avez une instance d'une classe dans une autre, au lieu d'hériter de il
Cette page a un bon article qui explique pourquoi les gens disent "favorables à la composition au cours de l'héritage", avec quelques exemples de pourquoi.