CRC Cards
- Class-responsibility-collaboration card
Overview
- Index cards used to document the responsibilities and collaborations of a class.
Responsibilities
- Knowing:
- What a class must know, manifested as attributes.
- Doing:
- What a class must do, manifested later as operations.
Collaboration
- Involves objects working together to service a request:
- Requestor (client): The object making the request.
- Responder (server): The object fulfilling the request.
- Bound by a contract.
CRC Cards & Role-Playing
- An exercise to help discover additional objects, attributes, relationships, and operations:
- Team members perform roles associated with the actors and objects previously identified.
- Utilize activity diagrams to run through the steps in a scenario.
- Identify an important use-case and assign roles based on actors and objects.
- Team members perform each step in the scenario.
- Discover and fix problems until a successful conclusion is reached.
- Repeat for remaining use-cases.
Example of a CRC Card
CRC Card for a Library Book Class
| Class: LibraryBook |
|---|
| Responsibilities |
| Knowing: |
| - Title |
| - Author |
| - ISBN |
| - Availability Status |
| Doing: |
| - CheckOut() |
| - CheckIn() |
| - Reserve() |
| - GetDetails() |
| Collaborators |
| - User (Requestor) |
| - LibrarySystem (Responder) |
Explanation
- Class Name: Indicates the class being documented, in this case, LibraryBook.
- Responsibilities:
- Knowing: Lists attributes that the class must maintain, like title, author, ISBN, and availability status.
- Doing: Lists operations that the class can perform, such as checking out and checking in the book, reserving it, and getting its details.
- Collaborators: Identifies the objects that the class interacts with, including the User (requestor) and the LibrarySystem (responder).