Object Design: Roles, Responsibilities, and Collaborations
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Customers who viewed this item also viewed
Customers who bought this item also bought
From the Back Cover
If you create software using object-oriented languages and tools, then Responsibility-Driven Design has likely influenced your work. For over ten years Responsibility-Driven Design methodology has been the standard bearer of the behavioral approach to designing object-oriented software. Object Design: Roles, Responsibilities, and Collaborations focuses on the practice of designing objects as integral members of a community where each object has specific roles and responsibilities. The authors present the latest practices and techniques of Responsibility-Driven Design and show how you can apply them as you develop modern object-based applications.
Working within this conceptual framework, Rebecca Wirfs-Brock and Alan McKean present how user requirements, system architecture, and design patterns all contribute to the design of an effective object model. They introduce a rich vocabulary that designers can use to discuss aspects of their designs, discuss design trade-offs, and offer practical guidelines for enhancing the reliability and flexibility of applications. In addition, case studies and real-world examples demonstrate how the principles and techniques of Responsibility-Driven Design apply to real-world software designs.
You'll find coverage of such topics as:
As all experienced designers know, software design is part art and inspiration and part consistent effort and solid technique. Object Design: Roles, Responsibilities, and Collaborations will help all software designers--from students to seasoned professionals--develop both the concrete reasoning skills and the design expertise necessary to produce responsible software designs.
About the Author
Rebecca Wirfs-Brock is founder of Wirfs-Brock Associates. She consults with clients on actual architecture and design projects as well as development practices and methods. She is the originator of the set of development practices known as Responsibility-Driven Design. Among her widely used inventions are use case conversations and object role stereotypes. She was lead author of the classic work Designing Object-Oriented Software (Prentice-Hall, 1990).
Alan McKean is a respected object technology educator and cofounder of Wirfs-Brock Associates. His classes have introduced thousands of developers to object-oriented design and programming and his instructional techniques have been widely adopted by other educators. An experienced programmer, speaker, and instructor, Alan has developed curricula in object-oriented design, programming, and distributed object systems.
- Item Weight : 1.38 pounds
- ISBN-10 : 0201379430
- ISBN-13 : 978-0201379433
- Dimensions : 7.25 x 1 x 9 inches
- Paperback : 368 pages
- Publisher : Addison-Wesley Professional (November 1, 2002)
- Language: : English
- Best Sellers Rank: #1,416,955 in Books (See Top 100 in Books)
- Customer Reviews:
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
The book's layout and illustrations present its content well. UML diagrams, for example, use one color and typeface for the actual UML notation. The same diagrams use a different color and typeface for notes that explain the UML. Unlike other books, there's no confusion about which is the tool and which describes the tool. The text is gentle and reasonably jargon-free, but I think it over-does the friendliness in places. In discussing a program's normal and exception handling behavior, the term "happy path" described the execution in the absence of errors. The term may be evocative, but is just a bit hard to take seriously.
The sequence of topics makes good sense. It starts with the idea of a "responsibility," the basic unit of application logic. The authors develop this into strategies for defining objects, defining relationships between objects, and defining the control strategies that implement those relationships. They continue on through error handling (reliability) and extensibility - handling of future features. Throughout, the authors keep a moderate, pragmatic tone, free of name-brand methodology. That's a good thing, since the real focus is on basic skills and decision criteria.
One aspect of this book is just a little confusing. It's definitely aimed at educating a new OO designer, but it doesn't lay out its educational objectives or plan very clearly. It certainly lacks the didactic rigor of a textbook. It would make a good supplementary text, though, and it might be very helpful to a novice working with more experienced developers. Best of all, it refers to additional texts (including Strunk and White!) that will help claify the programs as well as communication with other members of the programming team.
This book is great for anyone starting OO design on their own. It's also good for classroom students who just aren't getting it from their regular instructor and text. Experienced developers won't find much new here, except very clear descriptions of how much error handling or flexibility is enough.
1. Very Good Text on Object Design,
2. A great first text on OO design,
3. Total Disappointment for Programmers
This is a great book on Object Oriented Design, but ONLY for novice and intermediate object modelers. It is not for an experienced developer who already knows how to use some of the design patterns in Gang of Four book.
If we use an analogy to compare this two books, if Gang of Four Design Pattern book is for post graduate students, Object Design is for the student in the second year of the university.
I want to read more on Object Oriented development so I started to read this book, mainly attracted by its cover. Domain Driven Design by Eric Avans falls into the same category but offers much more exercise for your brain.
Hope this is helpful. I have 10+ years in software development, 7+ years in Java, understand OO and Domain Driven Design.
5 Star Book for a beginner.
Top reviews from other countries
Description: A node in a graph.
Descriptions like this are semantically content-free; they don't tell you anything that the name hasn't already told you. I've read hundreds of descriptions like this, and even written a few. Generally, I try and put a bit more effort into my descriptions, but its always a struggle.
I bought a copy "Object Design: Roles, Resonsibilities, and Collaborations" and tired applying the CRC technique to a small graph-based diagramming tool I was developing. The updated technique for using CRC cards is to introduce an even earlier step in the process in which you write just a class name and its purpose. Here's a description I wrote on one side of an index card:
Purpose: A graph node is primarily a data holder. It defines a rectangle
on a diagram with a label in its center. It notifies its dependants when it
is created, changed or deleted.
What a difference! This actually tells you something about the object in question and, surprisingly, it was easy to write. The secret of its effectiveness is the change of mind state that results when you replace the somewhat vague 'Description' with the much more leading 'Purpose'. This shifts the emphasis from the 'What' to the 'Why' of an object. If someone asks me 'what' a graph node is my knee-jerk response is, "A node in a graph, stupid!" but when I'm asked what its purpose is a host of details come pouring out.
Now I'm a convert. If I'm using a case tool now I write 'purpose-full' object descriptions, and I find it works with attributes and relationships too. If I'm writing C++ by hand, I put a 'Purpose:' section at the top of the header file and fill it in.
"Object Design..." has a lot more to say about the early phases of modeling and I can heartily recommend it to those who want to improve their transition from object blitz to production code.