"A conceptual level view of an object design describes the key abstractions. While someone might think of key abstractions as being nothing more or nothing less than high-level descriptions of "candidate classes", I prefer to consider a conceptual design from a slightly different angle--I'm thinking about design at a slightly different level. An object-oriented application is a set of interacting objects. Each object is an implementation of one or more roles. A role supports a set of related (cohesive) responsibilities. A responsibility is an obligation to perform a task or know certain information. And objects don't work in isolation, they collaborate with others in a community to perform the overall responsibilities of the application. So a conceptual view, at least to start, is a distillation of the key object roles and their responsibilities (stated at a fairly high level). More than likely (unless you form classification hierarchies and use inheritance and composition techniques) many candidates you initially model will map directly to a single class in some inheritance hierarchy. But I like to open up possibilities by think first of roles and responsibilities, and then as a second step towards a specification-level view, mapping these candidates to classes and interfaces."
Quote Details
Added by wikiquote-import-bot
Unverified quote
0 likes
Non-fiction authors from the United StatesWomen authors from the United StatesSoftware engineers from the United StatesPeople from PortlandWomen engineers from the United States
Original Language: English
Available Languages (1)
Revision History
No revisions have been submitted for this quote.
Categories
Rebecca Wirfs-Brock
14 quotes on TrueQuotesView all quotes by Rebecca Wirfs-Brock →
Related Quotes
"Frameworks are skeletal structures of programs that must be fleshed out to build a complete application. For example,…"
"Frameworks are white boxes to those that make use of them. Application developers must be able to quickly understand …"
"A subsystem is a set of classes (and possibly other subsystems) collaborating to fulfill a set of responsibilities. A…"
"Object-oriented programming languages support encapsulation, thereby improving the ability of software to be reused, …"
"Object-oriented programming increases the value of these metrics by managing this complexity. The most effective tool…"
"The goal of is to improve encapsulation. It does so by viewing a program in terms of the client/server model."
"is inspired by the client/server model. It focuses on the contract by asking:"
"Responsibility-driven design specifies object behavior before object structure and other implementation consideration…"
"Encapsulation is the key to increasing the value of such software metrics as reusability, refinability, testability, …"
"Experienced object designers explore the design space from many different angles. They refine ideas of how their syst…"