Buy new:
$71.72$71.72
Ships from: Agapea_Libros_Urgentes Sold by: Agapea_Libros_Urgentes
Save with Used - Good
$34.96$34.96
Ships from: glenthebookseller Sold by: glenthebookseller

Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Object-Oriented Design Heuristics (paperback) 1st Edition
Purchase options and add-ons
The heuristics cover important topics ranging from classes and objects (with emphasis on their relationships including association, uses, containment, and both single and multiple inheritance) to physical object-oriented design. You will gain an understanding of the synergy that exists between design heuristics and the popular concept of design patterns; heuristics can highlight a problem in one facet of a design while patterns can provide the solution.
Programmers of all levels will find value in this book. The newcomer will discover a fast track to understanding the concepts of object-oriented programming. At the same time, experienced programmers seeking to strengthen their object-oriented development efforts will appreciate the insightful analysis. In short, with Object-Oriented Design Heuristics as your guide, you have the tools to become a better software developer.
- ISBN-100321774965
- ISBN-13978-0321774965
- Edition1st
- PublisherAddison-Wesley Professional
- Publication dateApril 30, 1996
- LanguageEnglish
- Dimensions7.4 x 0.91 x 9.1 inches
- Print length400 pages
Frequently purchased items with fast delivery
Product details
- Publisher : Addison-Wesley Professional; 1st edition (April 30, 1996)
- Language : English
- Paperback : 400 pages
- ISBN-10 : 0321774965
- ISBN-13 : 978-0321774965
- Item Weight : 1.46 pounds
- Dimensions : 7.4 x 0.91 x 9.1 inches
- Best Sellers Rank: #7,571,627 in Books (See Top 100 in Books)
- #141 in Object-Oriented Software Design
- #720 in Object-Oriented Design
- Customer Reviews:
About the author

Discover more of the author’s books, see similar authors, read book recommendations and more.
Customer reviews
- 5 star4 star3 star2 star1 star5 star79%13%8%0%0%79%
- 5 star4 star3 star2 star1 star4 star79%13%8%0%0%13%
- 5 star4 star3 star2 star1 star3 star79%13%8%0%0%8%
- 5 star4 star3 star2 star1 star2 star79%13%8%0%0%0%
- 5 star4 star3 star2 star1 star1 star79%13%8%0%0%0%
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonCustomers say
Customers find this book to be a perfect OOP resource that provides solid insight into object-oriented software development. One customer notes it contains numerous suggestions for improving program design, while another mentions it is very well put together.
AI-generated from the text of customer reviews
Select to learn more
Customers appreciate the design advice in the book, which provides numerous suggestions for improving program design and offers solid insight into object-oriented software development.
"...This book has influenced my software development more then any other book i've read and that's a fact. This is truly a rare gem...." Read more
"...since knowing how to apply the heuristics to come up with a good design is where the real value is...." Read more
"...Still, the suggestions are generally good. Even better, they are phrased so as to invite thought and thoughtful critique by the reader...." Read more
"...This is the book. This is the book for UNDERSTANDING object-oriented software development...." Read more
Customers find the book enjoyable and consider it a perfect OOP book, with one customer noting it's worth every penny.
"...This book will bridge that gap. This is the best book i've read by far on OOA/D. This book will apply to you no matter what your skill level is in..." Read more
"...I am definitely glad I did. It was worth every penny...." Read more
"...Overall I think this is a pretty good book advocating for a somewhat different process for OO Design relative to other books...." Read more
"First, the greatness. These heuristics, rules of thumb, are true gems. The are short, memorable, and widely applicable...." Read more
Customers appreciate the design of the book, with one customer noting it is very well put together.
"...Don't learn OOD by making mistakes. Buy this book and design with confidence." Read more
"...This is very well put together book that tackles OO design from seemingly every angle...." Read more
"Nice Work..." Read more
Top reviews from the United States
There was a problem filtering reviews. Please reload the page.
- Reviewed in the United States on August 9, 2006I have been studying the object oriented methodology for some time now. I felt that I had a good understanding of what OOP was all about. I have studied OOA/D and design patterns from numerous sources. All of my sense for OOA/D knowledge changed completely when I read this book. This book really showed me that I was stuck somewhere in the middle of the paradigm shift between action oriented programming (aka procedural programming) and object oriented programming. After reading this, I feel like my knowledge in OOA/D has truly advanced to the next level.
Are you the type of person that knows what OOP is? I mean, if you've studied up on OOP then you are probably aware of what an abstract class is. You know what interfaces, inheritance, polymorphism, information hiding (...etc) are. You may have a sense in when you should use inheritance and when you should use containment. You probably follow certain OOP practices like keeping all of your variables private, hiding secrets from other objects (information hiding). This may all make sense to you but are you also the type of person that just never feels comfortable about your designs? Do you look at your classes and just get a sense that something doesn't seem right, yet you just can't figure out what it is even if your software system is running fine? I am willing to wager that you are in the middle of a paradigm shift. You are probably taking the route that a lot of developers take when they shift from thinking in a procedural fashion (action-oriented design) into object oriented design. There is nothing wrong with this, but if you're like a lot of developers you will have a long hard journey utilizing a lot of experience before you really make that shift. This book is an essential tool that will help you make that shift a LOT faster. After reading this book you will see why you felt your designs were't quite right.
One of the first topics that really hit home for me was when the author Arthur Riel talks about God classes in chapter 3. God classes are classes that have too much implementation in them. Most of the complexity of a piece of software resides in these classes. They are the all-knowing classes that delegate messages between the much smaller, less complex classes. Signs of God classes are classes that have words in their name such as "Manager" or "System" in them. This one hit home because there are numerous classes in the software i'm working on now with the name Manager in them. For example one of our classes is called the "BiDirectional_Dataflow_Manager". This is definitely a God class through and through. While I was reading about the disadvantages of these types of classes I couldn't help but agree with everything Arthur was saying. I began to see the light already and I was just on chapter 3. There are 59 other Heuristics, all equally important in this book.
Most books that teach OOA/D seem to really only teach the definition of OOA/D and perhaps clue you in to the whole idea. You learn the terminology well and you see a few examples (I'm sure you've seen an animal hierarchy a time or two), but you don't really gain a solid understanding in how you actually think in objects. This book will bridge that gap. This is the best book i've read by far on OOA/D. This book will apply to you no matter what your skill level is in OOA/D, unless you're a complete beginner then you might find yourself a little bit lost. If you are brand new to OOA/D then you should probably read a short book on OOP, just to gain the basic concepts first. "Object Oriented Thought Process" might be a good start as it's short and sweet, then you should move on to this book. If you are advanced then you may know a lot of this information, but this book will probably help tweak your OOA/D skills; helping you become an even more solid developer. But for you guys and gals out there that know what OOP is and read a few books on it, but still don't feel quite right about your designs, this book is essential. You guys out there are the sweet spot for a book like this. That's how I was. Now I feel so much better, I feel like i've gained more knowledge in OOA/D with this book then all other books on OOA/D and OOP that i've read combined - and then some.
Arthur Riel is a very talented programmer and author. He is able to communicate ideas to you that are sure to hit home, as if he's right there with you and understands your problems in OOA/D. This book is densly packed. Not including the bibliography and index this book is a mere 367 pages. Even more, if you don't include the example code at the end of the book (all C++ code) this book is only 243 pages. The real meat of this book is in the first 9 chapters (where he talks about all of the heuristics), which totals 182 pages. After that he talks about topics such as handling memory leaks and such. Most of the dim lights will shine brightly after a mere 182 pages! This may sound too good to be true, but as I said earlier Arthur is VERY talented in communicating his ideas. You just have to read this book very carefully, don't skim! Because it's so dense, it may take a couple of passes before you really get the idea but once you understand it you will surely belt out a resounding "AH HA!". This book is 10 years old at the time of this review, but the information inside is far from being outdated.
To conclude this lengthy review (sorry about that) I would like to say that I give this book my highest recommendation. In fact, this may be the best book on software development that i've ever read! This book has influenced my software development more then any other book i've read and that's a fact. This is truly a rare gem. The only downside (not this books fault) is that it's become a bit harder to work on the software that i'm currently working with because I now see where all of the pitfalls are. My co-workers think i'm just being anal about design now, but you don't have to be like them. Step up, become the best software developer that you can be. Just read this book and you will take a giant leap forward in your OOA/D understanding, especially if you're stuck in a paradigm shift like I was. Thank you very much Arthur!
- Reviewed in the United States on February 19, 2010I'm utterly astonished that I had never heard of this book until about a month ago. I read a mention about it in another review, did a search, saw the excellent (though scarce) reviews here, and decided to buy it. I am definitely glad I did. It was worth every penny.
As someone who has been programming professionally for nearly 5 years, I came to realize something soon after joining the industry: a computer science university program doesn't teach you how to design and write software. Oh, sure, you'll feel pretty smart when you write a quick-sort or a binary search tree and then do the Big-O analysis on it (even though just about any language you use will already have these optimized and packaged up somewhere for you). You'll do calculus and differential equations, some discrete math, maybe combinatorics. And of course, you'll take some programming classes, where you'll learn the syntax of one or more languages. You'll get fed buzzwords, and you'll memorize their definitions so you can spit them back out on a test. "Inheritance". "Polymorphism". But you really can't sink into anything deeply enough to understand what they really are, or why they're important. So you end up getting a job and writing terrible code, built on top of the terrible code that already exists, because the last fresh-out was in the same position as you, and he did it because of the people before him. But after awhile, you start to realize that making simple changes is unusually difficult, and you start to wonder what's wrong. That's when you start doing a little self-study and, hopefully, you stumble across a book like this. I just wish I'd stumbled 5 years ago.
As the title suggests, the book is full of heuristics (rules-of-thumb, if you will) related to good object-oriented design. But it's really much more. The book is not built around the heuristics. One might expect the author to go through the book listing the heuristics one-by-one, then explaining them, in a sort of catalog fashion. But what you get instead is a discussion of OOP topics, starting from the most basic. After he explains the reasoning behind the topics and the pitfalls encountered when dealing with them as they pertain to design, he gives the proper heuristic to help you on your way.
Arthur Riel spends the book citing his experiences in industry to relate these numerous OO topics to the real world. He is also able to reflect on his experience in teaching courses on OOD to others in order to address common misconceptions and confusions. Riel is able to explain every topic in the book with such stunning clarity that it's actually a disappointment to see that he hasn't written any other books. One can easily breeze through the Object-Oriented Design Heuristics in a few days, and it should absolutely be read cover-to-cover. I found that just about any question I've ever had on good object-oriented design was explained at some point. Some could certainly argue about some of the heuristics, but Riel is never dogmatic about them. He freely admits in the foreword that sometimes they conflict with what more closely models the real world, and some of the heuristics even conflict with each other. It is up to the designer to pick the best design choice for the situation. With this book in hand, that should be no problem.
Top reviews from other countries
- CAPLAReviewed in the United Kingdom on December 31, 2014
5.0 out of 5 stars Five Stars
Gives a solid grounding in OOD, consider this my bible.
-
Alberto T.Reviewed in Spain on September 16, 2014
5.0 out of 5 stars Muy bueno para refrescar conceptos.
Directo, claro y esclarecedor. Un gran libro para repasar las buenas prácticas en la programación orientada a objetos. Creo que es requisito obligatorio tener claros los conceptos de POO antes de usar este libro. No solo son reglas, también trae ejemplos muy claros.
- Carsten AlderReviewed in Germany on August 16, 2005
5.0 out of 5 stars Great book
This book is a must-read for OO-developers, because every heuristic is explained in detail and motivated by examples. It does not use the UML! The author explains in detail what object orientation really is: decentralized programming. Moreover, he discusses how to accomplish this goal.
-
Sébastien WilmetReviewed in France on December 27, 2018
5.0 out of 5 stars Autre titre possible du livre : Object-Oriented Design Best Practices
Malgré son age, ce livre est toujours très utile selon moi. Ça explique toute une série de bonnes pratiques en Programmation Orientée Objet (POO). Chaque « heuristique » (ou bonne pratique) est discutée en détails, avec des exemples. Ce livre m'a été très utile pour faire du design d'API de librairies, mais c'est utile pour tout projet orienté objet.
Juste une petite chose qui pourrait être améliorée, à un moment donné dans le livre, il est proposé que la classe « container » fasse du polling sur la classe contenue, pour éviter d'avoir une référence dans l'autre sens (ce n'est pas une bonne pratique qu'un objet sache dans quel autre objet il est contenu). Mais en programmation évènementielle (event-driven programming), il suffirait d'attacher une fonction callback, en C ou C++ ce serait avec un pointeur de fonction. Les librairies pour faire de la GUI, avec une main event loop, ont généralement un système de callbacks comme ça, le polling se fait à plus bas niveau.
-
anortefReviewed in Spain on July 11, 2018
5.0 out of 5 stars ¿eres programador? leelo
SI eres programador de POO la lectura de este libro es algo absolutamente necesario. Cada página es un mundo nuevo de conocimientos y perspectivas.