Unless you have a bent for philosophy, don't buy this book until you have seen at least part of Chapter 4! This is not "10 Quick Tips to Improve Your C++ Skills." It is a seminal text that attempts to alter the fundamental way you perceive the process of programming.
This book seeks to correlate object-oriented programming with cognitive science. To this end, an abstract Object Model is created which is language-independent. This level of power and generality invariably exacts a toll in readability. Rather than illustrating the concepts with specific examples from a programming language, the author instead conveys the essence of the concepts first and only then clarifies this abstraction with programmatic examples.
Readers familiar with Ada will recognize certain terminology and concepts. For example, "attribute" is formally defined, and we see that an Ada attribute indeed conforms to this formal definition, and that the Ada construct was aptly named. The first part of the book deals with Abstract Data Types and is extremely relevant to both Ada and C++ programmers. The second half is concerned with Object Orientation and would only be of use to Ada95 (and, of course, C++) programmers.
I had the privilege of working with Bob Meehan, a brilliant PhD in mathematics. Bob had an uncanny ability to create a mental map of a program and then translate this abstract mental map into a working program. Over the years, I have learned to achieve this using Ada, but was at a loss to transfer this facility into C++. Reading this book has given me a glimpse into the way Bob's mind worked, and I am confident that after I have read (and re-read!) this book and fully absorbed its content, any expertise that I may have acquired in Ada will be fully transferable to C++.
This book is a treasure trove, but its nuggets are not easily mined. To absorb its message, you are asked to learn a number of abstract concepts whose pertinence to programming is not at all apparent. But, as an earlier reviewer has stated, if you keep at it the light eventually dawns and you find that you have been handed the key to correct thinking--because the author has altered your cognitive processes and enabled you to perceive and function in a completely new way.
Ada actively enforced the Object-Based paradigm. Resistance was futile and the compiler ruthlessly punished infractions. C++ relies on convention and the integrity of the programmer to enforce the Object-Oriented paradigm. Other than type-checking, the C++ compiler is promiscuous. Indeed, it has to be, since it needs to be able to compile C programs. Without the broader view and greater understanding imparted by this book, strict adherence to the OO paradigm would be quite difficult. Kurt Godel pointed out that a framework can only be completely understood from a broader, more inclusive framework that encompasses the original framework. This book, if you have the tenacity, will impart that broader framework and will change the very way you perceive the world.