Software design with CRC Cards
Object oriented Design
o Why do we use objected-oriented programing
Allowing us to change our minds about implementation
Helps programmers think more abstractly
Keep the pieces separate and small
Easier to debug
Intenral and external reuse
Can reuse code more easily
Perhaps even between projects
How do you decide:
o … which classes to make?
o … what methods to write?
o … which classes use which other classes?
o … which classes are related to other classes?
One way: noun/verb analysis
o Identify nouns as potential classes
but some become features of classes rather than classes themselves
o Identify verbs as potential methods
o Nice, but:
How to organize all this?
Which methods belong to which classes?
Which classes use other classes?
Some OOD History
o Kent Beck
Created Extreme Programming (XP)
Created Test-driven development
o Ward Cunningham
Created the first wiki
o Kent and Ward, in the late 1980’s, shaped the noun/verb analysis into a full-fledged design technique