<p>Inheritance is certainly one of the most valuable concept of
	object-oriented programming. It's a way to compartmentalize and reuse
	code by creating collections of attributes and behaviors called classes
	which can be based on previously created classes. But abusing of this
	concept by creating a deep inheritance tree can lead to very complex
	and unmaintainable source code.</p>
<p>Most of the time a too deep inheritance tree is due to bad object
	oriented design which has led to systematically use 'inheritance' when
	'composition' would suit better.</p>