1/43
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
What is classification in object-oriented design?
Classification is the process of identifying sameness among things to expose commonality in abstractions and mechanisms, leading to simpler and more modular architectures.
What are the two aspects of identifying classes and objects?
Discovery (recognizing key abstractions and mechanisms) and invention (creating new mechanisms that specify collaboration).
Why is classification important in design?
It helps identify generalization, specialization, aggregation hierarchies, guides modularization, coupling, cohesion, and processor allocation.
Why is classification difficult?
Because object boundaries are often fuzzy and different observers may classify the same object differently depending on goals or perspectives.
What are the three main approaches to classification?
(1) Classical categorization, (2) Conceptual clustering, (3) Prototype theory.
What is classical categorization?
A method where entities sharing a common property form a category; properties are necessary and sufficient for membership. Example: "married people" vs. "tall people."
Who were the key philosophers behind classical categorization?
Plato, Aristotle, Aquinas, Descartes, and Locke.
What is a major limitation of classical categorization?
Natural categories are messy, most real-world things don't fit neatly into necessary-and-sufficient property lists. Example: not all birds fly.
What is conceptual clustering?
A modern approach where entities are grouped based on conceptual descriptions rather than fixed properties—often using probabilistic or fuzzy sets.
What was learned from the "train classification" experiment
People create many unique classifications depending on their knowledge; more domain knowledge enables better classification.
What is prototype theory?
A category is represented by a prototypical object; other objects belong if they sufficiently resemble the prototype (family resemblance).
Example of prototype theory in everyday objects?
"Chairs" barber chairs and beanbag chairs differ in properties but share family resemblance to the prototype "chair."
What are typical sources of classes and objects according to Shlaer and Mellor?
Tangible things, roles, events, and interactions.
What are additional sources from Ross?
People, places, things, organizations, concepts, events.
What do Coad and Yourdon suggest as object sources?
Structures, systems, devices, remembered events, roles, locations, and organizational units.
What is behavior analysis?
Identifying classes based on shared responsibilities and system behaviors. Emphasized by Wirfs-Brock and Rubin.
What is domain analysis?
Identifying classes common across similar applications within a domain to improve reuse and design consistency.
Who is a domain expert?
Someone deeply familiar with the problem domain (e.g., nurse, dispatcher), not necessarily a software developer.
What is a use case?
A behaviorally related sequence of transactions performed by an actor and the system that provides measurable value. (Jacobson's definition).
How are scenarios used in use case analysis?
Teams walk through real-life scenarios to identify objects, their responsibilities, and collaborations. These also serve as test bases.
What are CRC cards?
"Class/Responsibilities/Collaborators" index cards used to brainstorm and visualize class interactions in scenarios.
What are on CRC cards?
Each CRC card lists:
Class name (at the top)
Responsibilities (what the class knows or does)
Collaborators (other classes it interacts withEach CRC card lists:
Class name (at the top)
Responsibilities (what the class knows or does)
Collaborators (other classes it interacts with)
What is Abbott's English description method?
Writing a problem description, underlining nouns (objects) and verbs (operations). Useful for small problems; not scalable.
Why is structured analysis a poor front end to object-oriented design?
It promotes algorithmic (procedural) thinking instead of focusing on abstractions and object collaboration.
What are key abstractions?
Classes or objects that form the vocabulary of the problem domain—either discovered from users or invented by designers.
What are mechanisms?
Design structures that define how objects collaborate to produce system behavior. They embody strategic design choices.
What's an example of a mechanism?
The Model-View-Controller (MVC) paradigm—where model, view, and controller objects collaborate to render UI while staying decoupled.
Idioms
low-level language or cultural conventions.
Frameworks
reusable collections of collaborating classes for a domain.
What is the purpose of a use case diagram?
To depict system context — who (actors) interacts with the system and what functionality (use cases) the system provides.
What is an actor?
An external entity (person or system) interacting with the system, represented by a stick figure. Example: Gardener, Plan Analyst.
What is a use case?
A complete flow of activities from an actor's perspective that provides value to that actor. Depicted as an oval.
What does a use case specification include?
Name and purpose
Optimistic flow (main path)
Pragmatic flows (alternatives/errors)
Optional preconditions and postconditions
What's a pragmatic flow?
Alternative paths or error conditions where things don't go as expected.
What's a good guideline for use case length?
It should be concise (a few pages). If it's too long, it likely represents multiple use cases.
What is an «include» relationship?
It shows that one use case always includes another. The included use case is mandatory and always executed as part of the base use case.
What is an «extend» relationship?
It represents optional behavior added to a base use case. The extension occurs under specific conditions.
include DOES NOT
optional, base complete without it, condtionals, alters base behavior
Extend DOES
optional, base complete without it, condtionals, alters base behavior
What common mistake is made with «include»/«extend»?
Using them for functional decomposition instead of modeling complete, actor-valued use cases.
How is generalization applied to use cases?
Use cases can share common behavior in a parent use case, while specialized child use cases add or refine specific steps (e.g., Purchase Ticket → Purchase Theater Ticket).
Classical → apply to OO design?
based on object properties (structures, behaviors).
Conceptual → apply to OO design?
based on shared concepts/behaviors.
Prototype → apply to OO design?
based on resemblance to a prototypical object or role.