CSC/ECE 517 Summer 2008/wiki2 8 jb: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 14: Line 14:




Encapsulation
Inheritance breaks encapsulation
<ul>
<ul>
<li>Critics of inheritance argue that the protected access modifier breaks encapsulation by letting a derived class peer inside of its base class [http://en.csharp-online.net/Classes,_Structs,_and_Objects%E2%80%94Delegation_and_Composition_vs._Inheritance] </li>
<li>Critics of inheritance argue that the protected access modifier breaks encapsulation by letting a derived class peer inside of its base class [http://en.csharp-online.net/Classes,_Structs,_and_Objects%E2%80%94Delegation_and_Composition_vs._Inheritance] </li>
<li>Critics of inheritance will also argue that inheritance can lead to brittle code due to coupling between base and derived classes [http://www.eflorenzano.com/blog/post/inheritance-vs-composition/]. The argument is that when using delegation there is no
<ul>


Inheritance increases coupling
<ul>
<li>Critics of inheritance argue that inheritance can lead to brittle code due to coupling between base and derived classes [http://www.eflorenzano.com/blog/post/inheritance-vs-composition/]. The idea is that when using delegation there are limited and explicit dependencies between a class and its owner. The


<li>Inheritance increases coupling [http://en.csharp-online.net/Classes,_Structs,_and_Objects%E2%80%94Delegation_and_Composition_vs._Inheritance] </li>
<li>Inheritance increases coupling [http://en.csharp-online.net/Classes,_Structs,_and_Objects%E2%80%94Delegation_and_Composition_vs._Inheritance] </li>

Revision as of 02:41, 21 June 2008

This wiki will explore the age old debate of inheritance vs. delegation, showing the strengths and weakness of each approach, and where each approach is preferred.

Background

An in-depth description Inheritance and Delegation is out of the scope of this wiki, but a brief discussion of each approach will help get us started.

Inheritance

Inheritance is one of the fundamental tenets of object oriented programming. Inheritance refers to the ability to model hierarchies classes that are related to each other through the is-a relationship. It is commonly agreed upon that inheritance done correctly must conform to the Liskov substitution principle.

Delegation

Delegation, sometimes referred to as aggregation, is the concept that one class may contain an instance of another class, and delegate some responsibility to that class. This is also referred to as the has-a relationship. Aggregation is closely related to composition. Both aggregation and composition are used to describe one object containing another object, but composition implies ownership [1]. Aggregation is more general and doesn't imply any responsibilities for memory management.

The Debate

Inheritance breaks encapsulation