» » What Every Programmer Should Know About Object-Oriented Design

What Every Programmer Should Know About Object-Oriented Design ebook

by Meilir Page-Jones

If you're a programmer using C++, Smalltalk, or Eiffel, or if you're about to migrate to object orientation for the first time, you need to know the most important principles of object-oriented design.

For example: In a reliable design, why must a variable's cone of polymorphism lie within that of a method. Is connascence good or bad? How could the inherited methods of a superclass violate the invariant of a subclass -- and how can this be prevented?

Page-Jones answers these questions and more, with characteristic clarity, demystifying the fundamentals of object orientation in a language-independent way. He provides a comprehensive notation for object-oriented design that allows you to depict the design for a whole system or to jot down back-of-the-envelope ideas.         features 150+ diagrams and exercises   Topics Include

* Encapsulation * Information Hiding * State Retention * Object Identity * Synchronous and Asynchronous Messages * Classes and Subclasses * Inheritance * Polymorphism * Genericity * Reusability * The Object-Communication Diagram * States and Transitions * Connascence * Class Domains * Encumbrance * State Space and Behavior * Class Cohesion * Guide to Object-Oriented Terminology * Object-Orientation in a Historical Context

From the Foreword

". . . vintage Page-Jones. . . . Meilir is a gifted teacher. . . . a relentlessly pragmatic focus based on real-world experience . . . compact examples to guide the developer, whether novice or old hand, toward better object-oriented software solutions. . . . Who could ask for more?"               -- Larry L. Constantine

There is a lot of good in this book. It offers a wide variety of basic design principles important to OO design: the Law of Demeter, a form of Liskov's Substitutability, stability of interfaces and behavior, and a fair discussion of coherence within a class and coupling between classes. It approaches Design by Contract and formal verification, without getting close enough to scare a beginner. It's first appendix anticipates Beck's "funny smells" and patterns for refactoring. It really does have large amounts of practical advice.
I truly wish I could recommend this book, but I can't. Its notation and vocabulary get in the way of its many messages. Every book has some boxes-and-arrows notation, and UML has become the accepted standard. This book predates UML, and offers one of the most ornate menus of different boxes I've seen. (The word "menu" comes to mind because so many of the diagrams look distractingly like a Big Mac to me.)
Page-Jones also edged into neologism, creating vocabularies for ideas that already had an established terminology. I know that, strictly speaking, he did not invent "connascence" or most of its friends (contranascence, disnascence, ...). Still, he seemed to cut the words out of their original context and wedge them, uncomfortably, into usages distant from their accepted meaning. That far a stretch is about the same thing as making the word up from scratch. It may be OK for advanced mathematical usages; a book for mainstream readers should stick to the main stream of common terms.
The technical advice in this book deserves much better than three stars. Its obsolescent notation and opaque vocabulary interfere with a modern reader's understanding, though. Beginners, the ones most likely to benefit from the advice, would have the hardest time with it. I like the book and will come back to it, but I can't recommend it.
Just by reading the first part you really understand the beginning of OO.
Impala Frozen
This book covers the basics concepts of object-oriented design before moving into the more advanced areas of design
principles, which is where it excels and is extremely valuable. It also contains an object-oriented design notation, although we have plenty of those, these days. I covet mine, as it is the best text on oo-anything I've seen yet. An absolute must-read for anyone doing any work with object-oriented concepts.
I already had a book from this writer (Meilir Page-Jones). So, I expect no less than high quality. I was not disappointed. This is one of the best books that I know of that can be bought about object-orientation. The problem with most other books, that is all other books that I have seen, is that they usually sink very quickly in the mud pool of the teeny weeny details of some object-oriented language. And before you know it the language syntax is discussed and the object-oriented principals are totally forgotten or at its best difficult to extract.
This writer never looses track of the subject he is trying to explain, namely: object-oriented design. As far as I can judge this is about the only book that succeeded to do this. This despite a lot of other books and highly acclaimed writers. On top of that this book is well structured, well built, and, God forbid, actually fun to read!
My advice, run to the bookstore and buy this book!
If you are already familiar with OO programming, you can safely skip the first part. The second part is about an obsolete modeling language, so you can also skip it. The third part of this book is absolutely incredible, and a highly recommended read for any developer. (See also: [...])
What Every Programmer Should Know About Object-Oriented Design ebook
Meilir Page-Jones
EPUB size:
1121 kb
FB2 size:
1643 kb
DJVU size:
1449 kb
Dorset House (August 1, 1996)
392 pages
Other formats:
doc txt lrf mbr
© 2018-2020 Copyrights
All rights reserved. | Privacy Policy | DMCA | Contacts