Thanks Patrick.  This sounds interesting ... similar to FLiP, but not quite.
I will do some more digging on this and give it a try.

-- Jeff 


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf
Of Patrick McElhaney
Sent: Sunday, June 04, 2006 2:23 PM
To: [email protected]
Subject: Re: [CFCDev] OO Domain Modeling

Try CRC cards.

http://en.wikipedia.org/wiki/CRC_Card

CRC stands for Class, Responsibilities and Collaborators. You write the name
of a class, its responsibilities and its collaborators (names of other
classes that it talks to) on an index card.

Pick any part of the system, take a stab at what classes you might need for
that part, and make CRC cards for each class. Don't worry about getting it
right the first time. You won't. :)

Then walk through your wireframe. With each step, ask, "What responsibilites
does the system have here"? And with each responsibility, ask, "Which class
is responsible"? If you don't have an answer, you'll need to add the
responsibility to one of your cards, or create a new card with an new class
name.

Then ask, "Can this class handle this responsibility on its own, or does it
need the help of a collaborator"? For example, ShoppingCart may be
responsible for calcuating the total, but it needs ShippingCalculator and
TaxCalculator to provide part of that total.
Add the names of collaborators to the card. (You'll need to create a new
card for the collaborator itself if it doesn't already exist.)

It's an iterative process so make sure you have lots of index cards.
:) As you work your way though, the design will evolve. You'll come up with
better class names. You'll split the responsilbilities of one class into two
or more classes, move responsibliites from one class to another, merge
classes, etc.

Okay, that's my miserable two minute overview of CRC cards and
Repsonsiblity-Driven Design. Search the web and the book store for more
information.

Patrick



--
Patrick McElhaney
704.560.9117
http://pmcelhaney.weblogs.us


----------------------------------------------------------
You are subscribed to cfcdev. To unsubscribe, send an email to
[email protected] with the words 'unsubscribe cfcdev' as the subject of the
email.

CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting
(www.cfxhosting.com).

An archive of the CFCDev list is available at
www.mail-archive.com/[email protected]






----------------------------------------------------------
You are subscribed to cfcdev. To unsubscribe, send an email to 
[email protected] with the words 'unsubscribe cfcdev' as the subject of the 
email.

CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting 
(www.cfxhosting.com).

An archive of the CFCDev list is available at 
www.mail-archive.com/[email protected]


Reply via email to