Quotes from ten or more years ago that have lost none of their pertinence.
“Favor object composition over class inheritance.”
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides (1994)
“The principle of dependency inversion is at the root of many of the benefits claimed for object-oriented technology. Its proper application is necessary for the creation of reusable frameworks. It is also critically important for the construction of code that is resilient to change. And, since the abstractions and details are all isolated from each other, the code is much easier to maintain.”
http://www.objectmentor.com/resources/articles/dip.pdf
Robert C. Martin (1996)