Recently I came across a book which was a recommendation from a senior colleague at work. The Object-Oriented Thought Process by Matt Weisfeld. Although the first three chapters can seem a bit basic at first glance, they help to remind ourselves and reset in our minds what a true OO approach to a given problem should be.
Here is the Conclusion for (summary) Chapter 1 – Introduction to OO Concepts:
There is a lot to cover when discussing OO technologies. However, you should leave this chapter with a good understanding of the following topics:
Encapsulation — Encapsulating the data and behavior into a single object is of primary importance in OO development. A single object contains both its data and behaviors and can hide what it wants from other objects.
Inheritance — A class can inherit from another class and take advantage of the attributes and methods defined by the superclass ( the class we are inheriting from ).
Polymorphism — With a literal meaning of "multiple shapes", Polymorphism means that similar objects can respond to the same message in different ways. For example, you might have a system with many shapes. However, a circle, a square, and a star are each drawn differently. Using polymorphism, you can send each of these shapes the same message (for example, Draw), and each shape is responsible for drawing itself.
Composition — Composition means that an object is build from other objects.
In closing, I recommend this book for any programmer / developer regardless of skill levels. I am currently on chapter 3 and will report back as soon as I am finished reading it.
So far so good.