Book Review: The Object Primer


The Object Primer
by Scott W. Ambler

Even though object-oriented programming (OOP) has been around for many years and is taught in the computer science programs at colleges and universities, there are still many developers who do not know it. What this means is that those who are now performing the migration to OOP are primarily old dogs that need to learn the latest tricks. This book is perfect for that task, Ambler writes very clearly and covers all of the major aspects of OOP.
There are two outstanding features of the book. The first is the clear writing style and the second is the completeness of coverage. Not only are the fundamentals of OOP covered, but the Unified Modeling Language (UML) is also introduced. Since the U in UML could now be considered a representative for Universal, most developers need to be able to understand it. Ambler also covers some of the basic features of design patterns, components, use cases, object-oriented analysis, object-oriented design and object-oriented testing. These are generally considered to be advanced topics, but as presented here are well within the level of an introductory book.
The only negative point is the significant amount of duplication that is done. For example, on page 410 there is a boxed region for the definition:

Subject Matter Expert (SME) - A person who is responsible for providing pertinent information about the problem and/or technical domain either from personal knowledge or from research.

An excellent definition, but the problem is that it was already defined on page 35 and was used many times in the pages between 35 and 410, especially in the chapter on gathering requirements. There are many similar situations throughout the book, so many that I often considered segments redundant.

This book could also be used as a textbook in a course on the principles of object-oriented programming without using a specific language. Some Java code is used, but it is very skeletal and is used to demonstrate the initial steps in constructing your application from the design principles.