CSC/ECE 517 Fall 2007/wiki2 5 as: Difference between revisions
No edit summary |
No edit summary |
||
Line 24: | Line 24: | ||
<h4>Ruby</h4> | <h4>Ruby</h4> | ||
<p> | <p> | ||
CRC cards can be used in language like Ruby where there are a huge number of constraints to make things simpler. It can be used both for gathering requirements and for designing purpose. As a simple design aid, we can have one CRC card for one controller, its responsibilities and its interactions with other controllers listed on the card. Different designers while working together, also get help in the sense that they get a common platform to explain and understand all the designs involved. A good link for CRC exercise in Ruby can be found here – | CRC cards can be used in language like Ruby where there are a huge number of constraints to make things simpler. It can be used both for gathering requirements and for designing purpose. As a simple design aid, we can have one CRC card for one controller, its responsibilities and its interactions with other controllers listed on the card. Different designers while working together, also get help in the sense that they get a common platform to explain and understand all the designs involved. A good link for CRC exercise in Ruby can be found here – | ||
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards<br/> | http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards<br/> | ||
The page talks about briefly of CRC and has comments from people where they have talked about how they have implemented CRC in Ruby projects.</p> | The page talks about briefly of CRC and has comments from people where they have talked about how they have implemented CRC in Ruby projects.</p> | ||
Line 32: | Line 32: | ||
The page talks about how CRC is implemented in Java.<br/> | The page talks about how CRC is implemented in Java.<br/> | ||
<h4>Small Talk</h4> | <h4>Small Talk</h4> | ||
http://www.d.umn.edu/~gshute/ood/accounts/home.html - The CRC | http://www.d.umn.edu/~gshute/ood/accounts/home.html - The page talks about a bank account application. It has provided the CRC cards for the various classes involved in the application and the corresponding small talk code for that.<br/> | ||
<br/><h3>CRC Exercises</h3> | <br/><h3>CRC Exercises</h3> | ||
< | <h4>Interactively over the Web</h4> | ||
http://dshaw.com/3x5s/ - Interactive CRC cards that can be edited and saved online during a CRC session. <br/> | http://dshaw.com/3x5s/ - Interactive CRC cards that can be edited and saved online during a CRC session. <br/> | ||
There are few commercial products like WinTranslator (http://www.excelsoftware.com/wintranslator.html) available for creating CRC cards. | There are few commercial products like WinTranslator (http://www.excelsoftware.com/wintranslator.html) available for creating CRC cards. | ||
< | <h4>For a class of students via in-class exercises</h4> | ||
http://64.233.169.104/search?q=cache:ji81-0SXBcsJ:www.cs.iastate.edu/~cs362/handouts/crc-tutorial.pdf - gives a step by step procedure on how to execute CRC sessions in class.<br/> | http://64.233.169.104/search?q=cache:ji81-0SXBcsJ:www.cs.iastate.edu/~cs362/handouts/crc-tutorial.pdf - gives a step by step procedure on how to execute CRC sessions in class.<br/> | ||
< | <h4>Self-Study</h4> | ||
http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/ - tutorial for self-study.<br/> | http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/ - tutorial for self-study.<br/> | ||
http://www.cs.gordon.edu/courses/cs211/ATMExample/CRCCards.html - an example of CRC card for ATM application.<br/> | http://www.cs.gordon.edu/courses/cs211/ATMExample/CRCCards.html - an example of CRC card for ATM application.<br/> | ||
Line 47: | Line 47: | ||
<h3>References</h3> | <h3>References</h3> | ||
1.[http://c2.com/doc/oopsla89/paper.html A Laboratory For Teaching Object-Oriented Thinking] - paper by Kent Beck and Ward Cunningham <br/> | 1. [http://c2.com/doc/oopsla89/paper.html A Laboratory For Teaching Object-Oriented Thinking] - paper by Kent Beck and Ward Cunningham <br/> | ||
2.[http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/ Object Oriented Analysis and Design Using CRC Cards] - Nils Brummond <br/> | 2. [http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/ Object Oriented Analysis and Design Using CRC Cards] - Nils Brummond <br/> |
Revision as of 01:13, 25 October 2007
CRC cards
CRC cards. Hundreds of Web pages cover CRC cards. Which explain them best? Which explain them in the context of specific languages, e.g., Ruby and Java? Which exercises can be used to teach them best, (i) interactively over the Web, (ii) to a class of students, via in-class exercises, (iii) for self-study?
Introduction to CRC
CRC – Class, Responsibility, Collaborators cards were introduced to teach the concepts of Object Oriented Programming to a procedural programmer. It is now used to develop object-oriented models. The model was proposed byKent Beck and Ward Cunningham in their paper “A Laboratory for Teaching Object-Oriented Thinking” released in OOPSLA ’89. The cards are written based on the system requirements which define the behavior of the system. This model contains a set of index cards which is divided into three sections –
1.Class – It is a collection of similar objects. This section appears on the top of the CRC card and is a singular noun or singular noun phrase.
2.Responsibility – section appears below the class name and gives a bulleted list of the actions which the class is capable of. It identifies the problems that can be solved. This is expressed by active verbs.
3.Collaborators – These are the collection of classes with whom the class interacts to complete its actions.
The following are the links that can be used to understand what CRC cards are and how they work.
“A Laboratory For Teaching Object-Oriented Thinking” paper by Kent Beck and Ward Cunningham. This link gives a detail explanation why CRC cards were introduced.
http://www.agilemodeling.com/artifacts/crcModel.htm - This link provides description about CRC models and an example to create CRC cards.
http://www.uow.edu.au/~nabg/PwithC/C11.html - gives a detailed description OO development from Analysis to Implementation.
http://c2.com/doc/crc/draw.html - CRC description of a drawing editor called HotDraw which was written in SmallTalk by Ward Cunningham and Kent Beck.
CRC for O-o languages
Ruby
CRC cards can be used in language like Ruby where there are a huge number of constraints to make things simpler. It can be used both for gathering requirements and for designing purpose. As a simple design aid, we can have one CRC card for one controller, its responsibilities and its interactions with other controllers listed on the card. Different designers while working together, also get help in the sense that they get a common platform to explain and understand all the designs involved. A good link for CRC exercise in Ruby can be found here –
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards
The page talks about briefly of CRC and has comments from people where they have talked about how they have implemented CRC in Ruby projects.
Java
http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt.
The page talks about how CRC is implemented in Java.
Small Talk
http://www.d.umn.edu/~gshute/ood/accounts/home.html - The page talks about a bank account application. It has provided the CRC cards for the various classes involved in the application and the corresponding small talk code for that.
CRC Exercises
Interactively over the Web
http://dshaw.com/3x5s/ - Interactive CRC cards that can be edited and saved online during a CRC session.
There are few commercial products like WinTranslator (http://www.excelsoftware.com/wintranslator.html) available for creating CRC cards.
For a class of students via in-class exercises
http://64.233.169.104/search?q=cache:ji81-0SXBcsJ:www.cs.iastate.edu/~cs362/handouts/crc-tutorial.pdf - gives a step by step procedure on how to execute CRC sessions in class.
Self-Study
http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/ - tutorial for self-study.
http://www.cs.gordon.edu/courses/cs211/ATMExample/CRCCards.html - an example of CRC card for ATM application.
There are a few books available that gives complete description about CRC cards.
The CRC card book provides solutions to software design problems using CRC cards. Implementation examples in languages like C++, Java and SmallTalk are also provided.
References
1. A Laboratory For Teaching Object-Oriented Thinking - paper by Kent Beck and Ward Cunningham
2. Object Oriented Analysis and Design Using CRC Cards - Nils Brummond