<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pmzachar</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pmzachar"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Pmzachar"/>
	<updated>2026-07-16T02:19:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9756</id>
		<title>CSC/ ECE 517 Fall 2007/wiki3 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9756"/>
		<updated>2007-11-20T04:10:10Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Example 2: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Patterns==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Design patterns are recurring solutions to software design problems that is found in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.&lt;br /&gt;
The Gang of Four (GoF) patterns are generally considered the foundation for all patterns. They are categorized in three groups: Creational, Structural, and Behavioral. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The attributes that generally define a pattern are:&lt;br /&gt;
Pattern name is a descriptive name, that conveys the essence of the pattern. &lt;br /&gt;
Synopsis describes the purpose of the pattern, its intent, and the particular design problem(s) it addresses. &lt;br /&gt;
Description discusses the participating objects, the communication, and general structure of the pattern. &lt;br /&gt;
Forces specifies any constraints that must be considered when using the pattern. For example, a solution to some problem may be constrained by the fact that the solution must run on distributed computers. &lt;br /&gt;
Implementation shows how the pattern might be implemented in a specific instance. &lt;br /&gt;
Consequences describes the positive and negative effects of employing the pattern. &lt;br /&gt;
Related Patterns identifies those patterns that either replace the given pattern in different contexts, extend the given pattern, or collaborate with the pattern in more complex cases. &amp;lt;br&amp;gt;&lt;br /&gt;
==Creator Pattern==&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by controlling this object creation.&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The Creator pattern is used to decide which object should be responsible for creating new objects (instances of some class). There are several cases to consider.&amp;lt;br&amp;gt;&lt;br /&gt;
==Examples==&lt;br /&gt;
===Example 1===&lt;br /&gt;
Let A and B be objects. &lt;br /&gt;
B aggregates A objects. That is, there is a whole-part relationship between B and A. A objects are considered to be a part of B objects. &lt;br /&gt;
B contains A objects. This is a stronger whole-part relationship, also called composition. With composition, the A objects have no existence outside of their relationship with B objects. &lt;br /&gt;
B records instances of A objects. &lt;br /&gt;
B closely uses A objects. &lt;br /&gt;
B has the initializing data that will be pass to A when it is created (thus B is an Expert with respect to creating A). &lt;br /&gt;
In these cases, B is a creator of A objects. If more than one option applies, prefer a class B which aggregates or contains class A.&amp;lt;br&amp;gt;&lt;br /&gt;
Problem: Who should be responsible for creating a new instance of some class?&lt;br /&gt;
Solution: Assign class B the responsibility to create an instance of class A if one of these is true (the more the better):&lt;br /&gt;
B “contains“ or compositely aggregates A. &lt;br /&gt;
B records A. &lt;br /&gt;
B closely uses A. &lt;br /&gt;
B has the initializing data for A that will be passed to A when it is crated. Thus B is an Expert with respect to creating A.&lt;br /&gt;
In general, the class that contains (aggregates) A is typically the best class to create A because it will probably satisfy one or more of the options mentioned above.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example 2 ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Another example is adding a new DataRow to a DataTable. To get a new row, you ask the DataTable to create a new DataRow for you and then add the row to the table.&lt;br /&gt;
DataRow myRow = myTable.NewRow();&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
myTable.Rows.Add(myRow);&lt;br /&gt;
The DataTable object contains / aggregates DataRows and therefore is the logical class to create the DataRow.&lt;br /&gt;
By having the aggregate class create the child class, it not only follows the creator pattern but also supports the Information Expert, High Cohesion, and Low Coupling GRASP(General Responsibility Assignment Software Patterns: gives guidelines for assigning responsibility to classes and objects.) Patterns. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are many types of Creator patterns as mentioned below:&lt;br /&gt;
  Abstract Factory  &lt;br /&gt;
  Builder 	  &lt;br /&gt;
  Factory Method&lt;br /&gt;
  Prototype 	  &lt;br /&gt;
  Singleton&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Factory Pattern==&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The factory method is not different from the creational pattern, instead is a type of creational pattern. Like other creational patterns, it deals with the problem of creating objects (products) without specifying the exact class of object that will be created. &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The factory method design pattern handles this problem by defining a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
This pattern helps determine who should be responsible for creating objects when there are special considerations, such as complex creation logic. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_%28Object_Oriented_Design%29&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Factory_method_pattern&amp;lt;br&amp;gt;&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9755</id>
		<title>CSC/ ECE 517 Fall 2007/wiki3 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9755"/>
		<updated>2007-11-20T04:09:44Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Example 1: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Patterns==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Design patterns are recurring solutions to software design problems that is found in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.&lt;br /&gt;
The Gang of Four (GoF) patterns are generally considered the foundation for all patterns. They are categorized in three groups: Creational, Structural, and Behavioral. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The attributes that generally define a pattern are:&lt;br /&gt;
Pattern name is a descriptive name, that conveys the essence of the pattern. &lt;br /&gt;
Synopsis describes the purpose of the pattern, its intent, and the particular design problem(s) it addresses. &lt;br /&gt;
Description discusses the participating objects, the communication, and general structure of the pattern. &lt;br /&gt;
Forces specifies any constraints that must be considered when using the pattern. For example, a solution to some problem may be constrained by the fact that the solution must run on distributed computers. &lt;br /&gt;
Implementation shows how the pattern might be implemented in a specific instance. &lt;br /&gt;
Consequences describes the positive and negative effects of employing the pattern. &lt;br /&gt;
Related Patterns identifies those patterns that either replace the given pattern in different contexts, extend the given pattern, or collaborate with the pattern in more complex cases. &amp;lt;br&amp;gt;&lt;br /&gt;
==Creator Pattern==&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by controlling this object creation.&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The Creator pattern is used to decide which object should be responsible for creating new objects (instances of some class). There are several cases to consider.&amp;lt;br&amp;gt;&lt;br /&gt;
==Examples==&lt;br /&gt;
===Example 1===&lt;br /&gt;
Let A and B be objects. &lt;br /&gt;
B aggregates A objects. That is, there is a whole-part relationship between B and A. A objects are considered to be a part of B objects. &lt;br /&gt;
B contains A objects. This is a stronger whole-part relationship, also called composition. With composition, the A objects have no existence outside of their relationship with B objects. &lt;br /&gt;
B records instances of A objects. &lt;br /&gt;
B closely uses A objects. &lt;br /&gt;
B has the initializing data that will be pass to A when it is created (thus B is an Expert with respect to creating A). &lt;br /&gt;
In these cases, B is a creator of A objects. If more than one option applies, prefer a class B which aggregates or contains class A.&amp;lt;br&amp;gt;&lt;br /&gt;
Problem: Who should be responsible for creating a new instance of some class?&lt;br /&gt;
Solution: Assign class B the responsibility to create an instance of class A if one of these is true (the more the better):&lt;br /&gt;
B “contains“ or compositely aggregates A. &lt;br /&gt;
B records A. &lt;br /&gt;
B closely uses A. &lt;br /&gt;
B has the initializing data for A that will be passed to A when it is crated. Thus B is an Expert with respect to creating A.&lt;br /&gt;
In general, the class that contains (aggregates) A is typically the best class to create A because it will probably satisfy one or more of the options mentioned above.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example 2: ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Another example is adding a new DataRow to a DataTable. To get a new row, you ask the DataTable to create a new DataRow for you and then add the row to the table.&lt;br /&gt;
DataRow myRow = myTable.NewRow();&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
myTable.Rows.Add(myRow);&lt;br /&gt;
The DataTable object contains / aggregates DataRows and therefore is the logical class to create the DataRow.&lt;br /&gt;
By having the aggregate class create the child class, it not only follows the creator pattern but also supports the Information Expert, High Cohesion, and Low Coupling GRASP(General Responsibility Assignment Software Patterns: gives guidelines for assigning responsibility to classes and objects.) Patterns. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are many types of Creator patterns as mentioned below:&lt;br /&gt;
  Abstract Factory  &lt;br /&gt;
  Builder 	  &lt;br /&gt;
  Factory Method&lt;br /&gt;
  Prototype 	  &lt;br /&gt;
  Singleton&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Factory Pattern==&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The factory method is not different from the creational pattern, instead is a type of creational pattern. Like other creational patterns, it deals with the problem of creating objects (products) without specifying the exact class of object that will be created. &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The factory method design pattern handles this problem by defining a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
This pattern helps determine who should be responsible for creating objects when there are special considerations, such as complex creation logic. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_%28Object_Oriented_Design%29&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Factory_method_pattern&amp;lt;br&amp;gt;&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9752</id>
		<title>CSC/ ECE 517 Fall 2007/wiki3 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9752"/>
		<updated>2007-11-20T04:08:42Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Patterns==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Design patterns are recurring solutions to software design problems that is found in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.&lt;br /&gt;
The Gang of Four (GoF) patterns are generally considered the foundation for all patterns. They are categorized in three groups: Creational, Structural, and Behavioral. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The attributes that generally define a pattern are:&lt;br /&gt;
Pattern name is a descriptive name, that conveys the essence of the pattern. &lt;br /&gt;
Synopsis describes the purpose of the pattern, its intent, and the particular design problem(s) it addresses. &lt;br /&gt;
Description discusses the participating objects, the communication, and general structure of the pattern. &lt;br /&gt;
Forces specifies any constraints that must be considered when using the pattern. For example, a solution to some problem may be constrained by the fact that the solution must run on distributed computers. &lt;br /&gt;
Implementation shows how the pattern might be implemented in a specific instance. &lt;br /&gt;
Consequences describes the positive and negative effects of employing the pattern. &lt;br /&gt;
Related Patterns identifies those patterns that either replace the given pattern in different contexts, extend the given pattern, or collaborate with the pattern in more complex cases. &amp;lt;br&amp;gt;&lt;br /&gt;
==Creator Pattern==&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by controlling this object creation.&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The Creator pattern is used to decide which object should be responsible for creating new objects (instances of some class). There are several cases to consider.&amp;lt;br&amp;gt;&lt;br /&gt;
==Examples==&lt;br /&gt;
===Example 1:===&lt;br /&gt;
Let A and B be objects. &lt;br /&gt;
B aggregates A objects. That is, there is a whole-part relationship between B and A. A objects are considered to be a part of B objects. &lt;br /&gt;
B contains A objects. This is a stronger whole-part relationship, also called composition. With composition, the A objects have no existence outside of their relationship with B objects. &lt;br /&gt;
B records instances of A objects. &lt;br /&gt;
B closely uses A objects. &lt;br /&gt;
B has the initializing data that will be pass to A when it is created (thus B is an Expert with respect to creating A). &lt;br /&gt;
In these cases, B is a creator of A objects. If more than one option applies, prefer a class B which aggregates or contains class A.&amp;lt;br&amp;gt;&lt;br /&gt;
Problem: Who should be responsible for creating a new instance of some class?&lt;br /&gt;
Solution: Assign class B the responsibility to create an instance of class A if one of these is true (the more the better):&lt;br /&gt;
B “contains“ or compositely aggregates A. &lt;br /&gt;
B records A. &lt;br /&gt;
B closely uses A. &lt;br /&gt;
B has the initializing data for A that will be passed to A when it is crated. Thus B is an Expert with respect to creating A.&lt;br /&gt;
In general, the class that contains (aggregates) A is typically the best class to create A because it will probably satisfy one or more of the options mentioned above.&amp;lt;br&amp;gt;&lt;br /&gt;
===Example 2: ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Another example is adding a new DataRow to a DataTable. To get a new row, you ask the DataTable to create a new DataRow for you and then add the row to the table.&lt;br /&gt;
DataRow myRow = myTable.NewRow();&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
myTable.Rows.Add(myRow);&lt;br /&gt;
The DataTable object contains / aggregates DataRows and therefore is the logical class to create the DataRow.&lt;br /&gt;
By having the aggregate class create the child class, it not only follows the creator pattern but also supports the Information Expert, High Cohesion, and Low Coupling GRASP(General Responsibility Assignment Software Patterns: gives guidelines for assigning responsibility to classes and objects.) Patterns. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are many types of Creator patterns as mentioned below:&lt;br /&gt;
  Abstract Factory  &lt;br /&gt;
  Builder 	  &lt;br /&gt;
  Factory Method&lt;br /&gt;
  Prototype 	  &lt;br /&gt;
  Singleton&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Factory Pattern==&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The factory method is not different from the creational pattern, instead is a type of creational pattern. Like other creational patterns, it deals with the problem of creating objects (products) without specifying the exact class of object that will be created. &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The factory method design pattern handles this problem by defining a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
This pattern helps determine who should be responsible for creating objects when there are special considerations, such as complex creation logic. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_%28Object_Oriented_Design%29&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/Factory_method_pattern&amp;lt;br&amp;gt;&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9751</id>
		<title>CSC/ ECE 517 Fall 2007/wiki3 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9751"/>
		<updated>2007-11-20T04:04:47Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Patterns==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Design patterns are recurring solutions to software design problems that is found in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.&lt;br /&gt;
The Gang of Four (GoF) patterns are generally considered the foundation for all patterns. They are categorized in three groups: Creational, Structural, and Behavioral. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The attributes that generally define a pattern are:&lt;br /&gt;
Pattern name is a descriptive name, that conveys the essence of the pattern. &lt;br /&gt;
Synopsis describes the purpose of the pattern, its intent, and the particular design problem(s) it addresses. &lt;br /&gt;
Description discusses the participating objects, the communication, and general structure of the pattern. &lt;br /&gt;
Forces specifies any constraints that must be considered when using the pattern. For example, a solution to some problem may be constrained by the fact that the solution must run on distributed computers. &lt;br /&gt;
Implementation shows how the pattern might be implemented in a specific instance. &lt;br /&gt;
Consequences describes the positive and negative effects of employing the pattern. &lt;br /&gt;
Related Patterns identifies those patterns that either replace the given pattern in different contexts, extend the given pattern, or collaborate with the pattern in more complex cases. &amp;lt;br&amp;gt;&lt;br /&gt;
==Creator Pattern==&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by controlling this object creation.&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The Creator pattern is used to decide which object should be responsible for creating new objects (instances of some class). There are several cases to consider.&amp;lt;br&amp;gt;&lt;br /&gt;
==Examples==&lt;br /&gt;
===Example 1:===&lt;br /&gt;
Let A and B be objects. &lt;br /&gt;
B aggregates A objects. That is, there is a whole-part relationship between B and A. A objects are considered to be a part of B objects. &lt;br /&gt;
B contains A objects. This is a stronger whole-part relationship, also called composition. With composition, the A objects have no existence outside of their relationship with B objects. &lt;br /&gt;
B records instances of A objects. &lt;br /&gt;
B closely uses A objects. &lt;br /&gt;
B has the initializing data that will be pass to A when it is created (thus B is an Expert with respect to creating A). &lt;br /&gt;
In these cases, B is a creator of A objects. If more than one option applies, prefer a class B which aggregates or contains class A.&amp;lt;br&amp;gt;&lt;br /&gt;
Problem: Who should be responsible for creating a new instance of some class?&lt;br /&gt;
Solution: Assign class B the responsibility to create an instance of class A if one of these is true (the more the better):&lt;br /&gt;
B “contains“ or compositely aggregates A. &lt;br /&gt;
B records A. &lt;br /&gt;
B closely uses A. &lt;br /&gt;
B has the initializing data for A that will be passed to A when it is crated. Thus B is an Expert with respect to creating A.&lt;br /&gt;
In general, the class that contains (aggregates) A is typically the best class to create A because it will probably satisfy one or more of the options mentioned above.&amp;lt;br&amp;gt;&lt;br /&gt;
===Example 2: ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Another example is adding a new DataRow to a DataTable. To get a new row, you ask the DataTable to create a new DataRow for you and then add the row to the table.&lt;br /&gt;
DataRow myRow = myTable.NewRow();&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
myTable.Rows.Add(myRow);&lt;br /&gt;
The DataTable object contains / aggregates DataRows and therefore is the logical class to create the DataRow.&lt;br /&gt;
By having the aggregate class create the child class, it not only follows the creator pattern but also supports the Information Expert, High Cohesion, and Low Coupling GRASP(General Responsibility Assignment Software Patterns: gives guidelines for assigning responsibility to classes and objects.) Patterns. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are many types of Creator patterns as mentioned below:&lt;br /&gt;
  Abstract Factory  &lt;br /&gt;
  Builder 	  &lt;br /&gt;
  Factory Method&lt;br /&gt;
  Prototype 	  &lt;br /&gt;
  Singleton&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Factory Pattern==&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The factory method is not different from the creational pattern, instead is a type of creational pattern. Like other creational patterns, it deals with the problem of creating objects (products) without specifying the exact class of object that will be created. &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The factory method design pattern handles this problem by defining a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
This pattern helps determine who should be responsible for creating objects when there are special considerations, such as complex creation logic. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_%28Object_Oriented_Design%29&lt;br /&gt;
http://en.wikipedia.org/wiki/Factory_method_pattern&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9750</id>
		<title>CSC/ ECE 517 Fall 2007/wiki3 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9750"/>
		<updated>2007-11-20T04:03:42Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction to Patterns==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Design patterns are recurring solutions to software design problems that is found in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.&lt;br /&gt;
The Gang of Four (GoF) patterns are generally considered the foundation for all patterns. They are categorized in three groups: Creational, Structural, and Behavioral. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The attributes that generally define a pattern are:&lt;br /&gt;
Pattern name is a descriptive name, that conveys the essence of the pattern. &lt;br /&gt;
Synopsis describes the purpose of the pattern, its intent, and the particular design problem(s) it addresses. &lt;br /&gt;
Description discusses the participating objects, the communication, and general structure of the pattern. &lt;br /&gt;
Forces specifies any constraints that must be considered when using the pattern. For example, a solution to some problem may be constrained by the fact that the solution must run on distributed computers. &lt;br /&gt;
Implementation shows how the pattern might be implemented in a specific instance. &lt;br /&gt;
Consequences describes the positive and negative effects of employing the pattern. &lt;br /&gt;
Related Patterns identifies those patterns that either replace the given pattern in different contexts, extend the given pattern, or collaborate with the pattern in more complex cases. &amp;lt;br&amp;gt;&lt;br /&gt;
==Creator Pattern==&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by controlling this object creation.&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The Creator pattern is used to decide which object should be responsible for creating new objects (instances of some class). There are several cases to consider.&amp;lt;br&amp;gt;&lt;br /&gt;
==Examples==&lt;br /&gt;
===Example 1:===&lt;br /&gt;
Let A and B be objects. &lt;br /&gt;
B aggregates A objects. That is, there is a whole-part relationship between B and A. A objects are considered to be a part of B objects. &lt;br /&gt;
B contains A objects. This is a stronger whole-part relationship, also called composition. With composition, the A objects have no existence outside of their relationship with B objects. &lt;br /&gt;
B records instances of A objects. &lt;br /&gt;
B closely uses A objects. &lt;br /&gt;
B has the initializing data that will be pass to A when it is created (thus B is an Expert with respect to creating A). &lt;br /&gt;
In these cases, B is a creator of A objects. If more than one option applies, prefer a class B which aggregates or contains class A.&amp;lt;br&amp;gt;&lt;br /&gt;
Problem: Who should be responsible for creating a new instance of some class?&lt;br /&gt;
Solution: Assign class B the responsibility to create an instance of class A if one of these is true (the more the better):&lt;br /&gt;
B “contains“ or compositely aggregates A. &lt;br /&gt;
B records A. &lt;br /&gt;
B closely uses A. &lt;br /&gt;
B has the initializing data for A that will be passed to A when it is crated. Thus B is an Expert with respect to creating A.&lt;br /&gt;
In general, the class that contains (aggregates) A is typically the best class to create A because it will probably satisfy one or more of the options mentioned above.&amp;lt;br&amp;gt;&lt;br /&gt;
===Example 2: ===&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Another example is adding a new DataRow to a DataTable. To get a new row, you ask the DataTable to create a new DataRow for you and then add the row to the table.&lt;br /&gt;
DataRow myRow = myTable.NewRow();&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
myTable.Rows.Add(myRow);&lt;br /&gt;
The DataTable object contains / aggregates DataRows and therefore is the logical class to create the DataRow.&lt;br /&gt;
By having the aggregate class create the child class, it not only follows the creator pattern but also supports the Information Expert, High Cohesion, and Low Coupling GRASP(General Responsibility Assignment Software Patterns: gives guidelines for assigning responsibility to classes and objects.) Patterns. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are many types of Creator patterns as mentioned below:&lt;br /&gt;
  Abstract Factory  &lt;br /&gt;
  Builder 	  &lt;br /&gt;
  Factory Method&lt;br /&gt;
  Prototype 	  &lt;br /&gt;
  Singleton&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Factory Pattern==&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The factory method is not different from the creational pattern, instead is a type of creational pattern. Like other creational patterns, it deals with the problem of creating objects (products) without specifying the exact class of object that will be created. &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The factory method design pattern handles this problem by defining a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
This pattern helps determine who should be responsible for creating objects when there are special considerations, such as complex creation logic. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&amp;lt;br&amp;gt;&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_%28Object_Oriented_Design%29&lt;br /&gt;
http://en.wikipedia.org/wiki/Factory_method_pattern&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9747</id>
		<title>CSC/ ECE 517 Fall 2007/wiki3 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/_ECE_517_Fall_2007/wiki3_5_pr&amp;diff=9747"/>
		<updated>2007-11-20T03:56:23Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Introduction to Patterns&lt;br /&gt;
&lt;br /&gt;
Design patterns are recurring solutions to software design problems that is found in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.&lt;br /&gt;
The Gang of Four (GoF) patterns are generally considered the foundation for all patterns. They are categorized in three groups: Creational, Structural, and Behavioral. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The attributes that generally define a pattern are:&lt;br /&gt;
Pattern name is a descriptive name, that conveys the essence of the pattern. &lt;br /&gt;
Synopsis describes the purpose of the pattern, its intent, and the particular design problem(s) it addresses. &lt;br /&gt;
Description discusses the participating objects, the communication, and general structure of the pattern. &lt;br /&gt;
Forces specifies any constraints that must be considered when using the pattern. For example, a solution to some problem may be constrained by the fact that the solution must run on distributed computers. &lt;br /&gt;
Implementation shows how the pattern might be implemented in a specific instance. &lt;br /&gt;
Consequences describes the positive and negative effects of employing the pattern. &lt;br /&gt;
Related Patterns identifies those patterns that either replace the given pattern in different contexts, extend the given pattern, or collaborate with the pattern in more complex cases. &amp;lt;br&amp;gt;&lt;br /&gt;
Creator Pattern&lt;br /&gt;
Creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by controlling this object creation.&lt;br /&gt;
The Creator pattern is used to decide which object should be responsible for creating new objects (instances of some class). There are several cases to consider.&amp;lt;br&amp;gt;&lt;br /&gt;
Examples&lt;br /&gt;
Example 1:&lt;br /&gt;
Let A and B be objects. &lt;br /&gt;
B aggregates A objects. That is, there is a whole-part relationship between B and A. A objects are considered to be a part of B objects. &lt;br /&gt;
B contains A objects. This is a stronger whole-part relationship, also called composition. With composition, the A objects have no existence outside of their relationship with B objects. &lt;br /&gt;
B records instances of A objects. &lt;br /&gt;
B closely uses A objects. &lt;br /&gt;
B has the initializing data that will be pass to A when it is created (thus B is an Expert with respect to creating A). &lt;br /&gt;
In these cases, B is a creator of A objects. If more than one option applies, prefer a class B which aggregates or contains class A.&amp;lt;br&amp;gt;&lt;br /&gt;
Problem: Who should be responsible for creating a new instance of some class?&lt;br /&gt;
Solution: Assign class B the responsibility to create an instance of class A if one of these is true (the more the better):&lt;br /&gt;
B “contains“ or compositely aggregates A. &lt;br /&gt;
B records A. &lt;br /&gt;
B closely uses A. &lt;br /&gt;
B has the initializing data for A that will be passed to A when it is crated. Thus B is an Expert with respect to creating A.&lt;br /&gt;
In general, the class that contains (aggregates) A is typically the best class to create A because it will probably satisfy one or more of the options mentioned above.&amp;lt;br&amp;gt;&lt;br /&gt;
Example 2: &lt;br /&gt;
Another example is adding a new DataRow to a DataTable. To get a new row, you ask the DataTable to create a new DataRow for you and then add the row to the table.&lt;br /&gt;
DataRow myRow = myTable.NewRow();&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
myTable.Rows.Add(myRow);&lt;br /&gt;
The DataTable object contains / aggregates DataRows and therefore is the logical class to create the DataRow.&lt;br /&gt;
By having the aggregate class create the child class, it not only follows the creator pattern but also supports the Information Expert, High Cohesion, and Low Coupling GRASP(General Responsibility Assignment Software Patterns: gives guidelines for assigning responsibility to classes and objects.) Patterns. &lt;br /&gt;
&lt;br /&gt;
There are many types of Creator patterns as mentioned below:&lt;br /&gt;
  Abstract Factory  &lt;br /&gt;
  Builder 	  &lt;br /&gt;
  Factory Method&lt;br /&gt;
  Prototype 	  &lt;br /&gt;
  Singleton&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Factory Pattern&lt;br /&gt;
The factory method is not different from the creational pattern, instead is a type of creational pattern. Like other creational patterns, it deals with the problem of creating objects (products) without specifying the exact class of object that will be created. &lt;br /&gt;
The factory method design pattern handles this problem by defining a separate method for creating the objects, which subclasses can then override to specify the derived type of product that will be created. More generally, the term factory method is often used to refer to any method whose main purpose is creation of objects.&lt;br /&gt;
This pattern helps determine who should be responsible for creating objects when there are special considerations, such as complex creation logic. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
References&lt;br /&gt;
http://en.wikipedia.org/wiki/GRASP_%28Object_Oriented_Design%29&lt;br /&gt;
http://en.wikipedia.org/wiki/Factory_method_pattern&lt;br /&gt;
http://web.cs.wpi.edu/~gpollice/cs4233-a05/CourseNotes/maps/class4/Creator.html&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8133</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8133"/>
		<updated>2007-10-30T01:04:06Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Sites which show examples which explain CRC concepts well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A sample CRC card is as shown in the picture below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:CRC_card.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Courtesy: http://www.agilemodeling.com/artifacts/crcModel.htm]&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a good place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed above. In these examples each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each card that is used in the example. These explain this concept using a state diagram which helps better understanding of the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Objects, classes, relationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A screenshot of the tool that is used to develop the CRC card is shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Tools.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Courtesy:http://www.excelsoftware.com/quickcrcintro.html]&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt&lt;br /&gt;
&lt;br /&gt;
                                                      &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The above link talks about the design that can be used in Java where it makes a reference to CRC cards. How CRC cards helping reducing the design complexity. CRC is a concept and not a feature that is specific to any programming language.  Hence in the presentation the author explains how this CRC concept can be used in Java to improve the design.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The above URL links to a blog where the author talks about the CRC concepts, how it originated and also how it can help using this concept in Ruby. The author gives a link to the first paper written by Ward Cunningham where the CRC details are explained.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8132</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8132"/>
		<updated>2007-10-30T01:02:34Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* What is CRC and what are the cards? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A sample CRC card is as shown in the picture below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:CRC_card.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Courtesy: http://www.agilemodeling.com/artifacts/crcModel.htm]&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a good place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed above. In these examples each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each card that is used in the example. These explain this concept using a state diagram which helps better understanding of the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Objects, classes, relationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A screenshot of the tool that is used to develop the CRC card is shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Tools.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
Courtesy:http://www.excelsoftware.com/quickcrcintro.html&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt&lt;br /&gt;
&lt;br /&gt;
                                                      &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The above link talks about the design that can be used in Java where it makes a reference to CRC cards. How CRC cards helping reducing the design complexity. CRC is a concept and not a feature that is specific to any programming language.  Hence in the presentation the author explains how this CRC concept can be used in Java to improve the design.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The above URL links to a blog where the author talks about the CRC concepts, how it originated and also how it can help using this concept in Ruby. The author gives a link to the first paper written by Ward Cunningham where the CRC details are explained.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8131</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8131"/>
		<updated>2007-10-30T01:01:09Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Sites which show examples which explain CRC concepts well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A sample CRC card is as shown in the picture below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:CRC_card.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a good place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed above. In these examples each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each card that is used in the example. These explain this concept using a state diagram which helps better understanding of the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Objects, classes, relationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A screenshot of the tool that is used to develop the CRC card is shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Tools.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
Courtesy:http://www.excelsoftware.com/quickcrcintro.html&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt&lt;br /&gt;
&lt;br /&gt;
                                                      &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The above link talks about the design that can be used in Java where it makes a reference to CRC cards. How CRC cards helping reducing the design complexity. CRC is a concept and not a feature that is specific to any programming language.  Hence in the presentation the author explains how this CRC concept can be used in Java to improve the design.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The above URL links to a blog where the author talks about the CRC concepts, how it originated and also how it can help using this concept in Ruby. The author gives a link to the first paper written by Ward Cunningham where the CRC details are explained.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8130</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8130"/>
		<updated>2007-10-30T00:59:55Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Sites which show examples which explain CRC concepts well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A sample CRC card is as shown in the picture below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:CRC_card.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a good place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed above. In these examples each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each card that is used in the example. These explain this concept using a state diagram which helps better understanding of the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Objects, classes, relationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A screenshot of the tool that is used to develop the CRC card is shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Tools.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt&lt;br /&gt;
&lt;br /&gt;
                                                      &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The above link talks about the design that can be used in Java where it makes a reference to CRC cards. How CRC cards helping reducing the design complexity. CRC is a concept and not a feature that is specific to any programming language.  Hence in the presentation the author explains how this CRC concept can be used in Java to improve the design.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The above URL links to a blog where the author talks about the CRC concepts, how it originated and also how it can help using this concept in Ruby. The author gives a link to the first paper written by Ward Cunningham where the CRC details are explained.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8127</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8127"/>
		<updated>2007-10-30T00:52:05Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Sites which show examples which explain CRC concepts well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A sample CRC card is as shown in the picture below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:CRC_card.jpg]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a good place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed above. In these examples each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each card that is used in the example. These explain this concept using a state diagram which helps better understanding of the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Objects, classes, relationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A screenshot of the tool that is used to develop the CRC card is shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Tools.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt&lt;br /&gt;
&lt;br /&gt;
                                                      &lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The above link talks about the design that can be used in Java where it makes a reference to CRC cards. How CRC cards helping reducing the design complexity. CRC is a concept and not a feature that is specific to any programming language.  Hence in the presentation the author explains how this CRC concept can be used in Java to improve the design.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; The above URL links to a blog where the author talks about the CRC concepts, how it originated and also how it can help using this concept in Ruby. The author gives a link to the first paper written by Ward Cunningham where the CRC details are explained.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Tools.jpg&amp;diff=8126</id>
		<title>File:Tools.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Tools.jpg&amp;diff=8126"/>
		<updated>2007-10-30T00:48:26Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Tool.jpg&amp;diff=8118</id>
		<title>File:Tool.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Tool.jpg&amp;diff=8118"/>
		<updated>2007-10-30T00:24:29Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: A screenshot of the tool used to develop CRC cards.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A screenshot of the tool used to develop CRC cards.&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8117</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8117"/>
		<updated>2007-10-30T00:23:43Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Sites which show examples which explain CRC concepts well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A sample CRC card is as shown in the picture below:&lt;br /&gt;
&lt;br /&gt;
[[Image:CRC_card.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a good place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed above. In these examples each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each card that is used in the example. These explain this concept using a state diagram which helps better understanding of the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Objects, classes, relationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
[[Image:Tools.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt&lt;br /&gt;
&lt;br /&gt;
                       http://books.google.com/booksid=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source&lt;br /&gt;
&lt;br /&gt;
                               &lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8115</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8115"/>
		<updated>2007-10-30T00:18:44Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* What is CRC and what are the cards? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A sample CRC card is as shown in the picture below:&lt;br /&gt;
&lt;br /&gt;
[[Image:CRC_card.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a good place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed above. In these examples each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each card that is used in the example. These explain this concept using a state diagram which helps better understanding of the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Objects, classes, relationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt&lt;br /&gt;
&lt;br /&gt;
                       http://books.google.com/booksid=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source&lt;br /&gt;
&lt;br /&gt;
                               &lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:CRC_card.jpg&amp;diff=8114</id>
		<title>File:CRC card.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:CRC_card.jpg&amp;diff=8114"/>
		<updated>2007-10-30T00:17:26Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: A sample CRC card is as shown in the picture.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A sample CRC card is as shown in the picture.&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8111</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8111"/>
		<updated>2007-10-30T00:16:12Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* What is CRC and what are the cards? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:CRC_card.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a good place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed above. In these examples each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each card that is used in the example. These explain this concept using a state diagram which helps better understanding of the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Objects, classes, relationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt.&lt;br /&gt;
&lt;br /&gt;
                       http://books.google.com/booksid=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source&lt;br /&gt;
&lt;br /&gt;
                               &lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8052</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8052"/>
		<updated>2007-10-29T20:50:21Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Sites which show examples which explain CRC concepts well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a good place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed above. In these examples each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each card that is used in the example. These explain this concept using a state diagram which helps better understanding of the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Objects, classes, relationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt.&lt;br /&gt;
&lt;br /&gt;
                       http://books.google.com/booksid=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source&lt;br /&gt;
&lt;br /&gt;
                               &lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8051</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8051"/>
		<updated>2007-10-29T20:48:19Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Sites which show examples which explain CRC concepts well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a good place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed above. In these examples each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which helps better understanding of the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt.&lt;br /&gt;
&lt;br /&gt;
                       http://books.google.com/booksid=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source&lt;br /&gt;
&lt;br /&gt;
                               &lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8050</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8050"/>
		<updated>2007-10-29T20:45:43Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Sites which show examples which explain CRC concepts well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a good place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt.&lt;br /&gt;
&lt;br /&gt;
                       http://books.google.com/booksid=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source&lt;br /&gt;
&lt;br /&gt;
                               &lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8049</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8049"/>
		<updated>2007-10-29T20:45:09Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Sites which show examples which explain CRC concepts well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few sites that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt.&lt;br /&gt;
&lt;br /&gt;
                       http://books.google.com/booksid=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source&lt;br /&gt;
&lt;br /&gt;
                               &lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8048</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8048"/>
		<updated>2007-10-29T20:43:25Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Sites which show examples which explain CRC concepts well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few examples that explain how to design the CRC cards in a specific situation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt.&lt;br /&gt;
&lt;br /&gt;
                       http://books.google.com/booksid=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source&lt;br /&gt;
&lt;br /&gt;
                               &lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8010</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8010"/>
		<updated>2007-10-29T17:08:13Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Site which explain CRC concepts in Java and Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few examples that explain how to design the CRC cards in a specific situvation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt.&lt;br /&gt;
&lt;br /&gt;
                       http://books.google.com/booksid=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source&lt;br /&gt;
&lt;br /&gt;
                               &lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8009</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=8009"/>
		<updated>2007-10-29T17:07:21Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Sites which show examples which explain CRC concepts well */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Review on few sites which explain CRC cards&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Sites which show examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
Below are few examples that explain how to design the CRC cards in a specific situvation.&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       http://www.agilemodeling.com/artifacts/crcModel.htm &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
                       http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
                       http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
                       http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==Site which explain CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
Below are few links which talk about CRC cards specific to programming languages link Java and Ruby. The concept of CRC cards is the same in these languages. The links show how they are implemented specific to a language. The concept of CRC cards is not bound to a specific language.&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
                       http://rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                       http://books.google.com/booksid=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source&lt;br /&gt;
&lt;br /&gt;
                               &lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
                       http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://www.softstar-inc.com/Download/Intro%20to%20CRC.pdf&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7713</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7713"/>
		<updated>2007-10-25T02:31:10Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7674</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7674"/>
		<updated>2007-10-25T01:49:42Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java and Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7672</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7672"/>
		<updated>2007-10-25T01:49:09Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Examples which explain CRC concepts well: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the JAVA object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7670</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7670"/>
		<updated>2007-10-25T01:48:29Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Examples which explain CRC concepts well: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the JAVA object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7662</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7662"/>
		<updated>2007-10-25T01:44:39Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java and Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the JAVA object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7661</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7661"/>
		<updated>2007-10-25T01:44:26Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Examples which explain CRC concepts well: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the JAVA object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7659</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7659"/>
		<updated>2007-10-25T01:41:20Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the JAVA object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7658</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7658"/>
		<updated>2007-10-25T01:41:11Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java and Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
JAVA:&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
RUBY:&lt;br /&gt;
&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards&lt;br /&gt;
&lt;br /&gt;
CRC concepts are very helpful for projects which will be developed in programming language like Java and Ruby. These are object oriented languages, using CRC helps the developers identify the objects, classes their relationships. The above links explains the JAVA object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7657</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7657"/>
		<updated>2007-10-25T01:39:45Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
CRC concepts are very helpful for projects which will be developed in programming language like Java. Java is an object oriented language, using CRC with Java helps the developers identify the objects, classes their relationships. The above links explains the JAVA object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7656</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7656"/>
		<updated>2007-10-25T01:39:36Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java and Ruby==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
CRC concepts are very helpful for projects which will be developed in programming language like Java. Java is an object oriented language, using CRC with Java helps the developers identify the objects, classes their relationships. The above links explains the JAVA object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7654</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7654"/>
		<updated>2007-10-25T01:39:07Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
CRC concepts are very helpful for projects which will be developed in programming language like Java. Java is an object oriented language, using CRC with Java helps the developers identify the objects, classes their relationships. The above links explains the JAVA object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7651</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7651"/>
		<updated>2007-10-25T01:38:34Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
CRC concepts are very helpful for projects which will be developed in programming language like Java. Java is an object oriented language, using CRC with Java help the developers identify the objects, classes their relationships. The above links explains the JAVA object oriented concepts and how CRC helps in understanding the relationship between the various classes and objects.&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7648</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7648"/>
		<updated>2007-10-25T01:32:47Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Examples which explain CRC concepts well: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7645</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7645"/>
		<updated>2007-10-25T01:31:32Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Examples which explain CRC concepts well: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective. Helps in understanding the concept well when relating the same using state diagrams.&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below. In this example each card is explained well with all the required details.&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. It has descripts for each cards that is used in the example. Explains this concept using a state diagram which help better understanding on the concept.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.These are available for various platforms like Windows, Mac OS and so on. These tools automates CRC cards, which helps the designers to quickly identify Object, classes, replationships and related information before the coding phase. All these make the implementation a lot easier.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7639</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7639"/>
		<updated>2007-10-25T01:23:44Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* Examples which explain CRC concepts well: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) Interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) To a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) Self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7638</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7638"/>
		<updated>2007-10-25T01:22:42Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
==Examples which explain CRC concepts well:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(i) interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) to a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7637</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7637"/>
		<updated>2007-10-25T01:20:22Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which exercises can be used to teach them best:&lt;br /&gt;
&lt;br /&gt;
(i) interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) to a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7636</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7636"/>
		<updated>2007-10-25T01:19:34Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which exercises can be used to teach them best:&lt;br /&gt;
&lt;br /&gt;
(i) interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) to a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.extremeprogramming.org/example/crcsim.html&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7635</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7635"/>
		<updated>2007-10-25T01:18:25Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which exercises can be used to teach them best:&lt;br /&gt;
&lt;br /&gt;
(i) interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) to a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
http://c2.com/doc/crc/draw.html &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
        http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &lt;br /&gt;
        http://www.extremeprogramming.org/example/crcsim.html&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7634</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7634"/>
		<updated>2007-10-25T01:16:54Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which exercises can be used to teach them best:&lt;br /&gt;
&lt;br /&gt;
(i) interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) to a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://c2.com/doc/crc/draw.html&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
        http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &lt;br /&gt;
        http://www.extremeprogramming.org/example/crcsim.html&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7633</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7633"/>
		<updated>2007-10-25T01:16:28Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which exercises can be used to teach them best:&lt;br /&gt;
&lt;br /&gt;
(i) interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) to a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://c2.com/doc/crc/draw.html&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
        http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &lt;br /&gt;
        http://www.extremeprogramming.org/example/crcsim.html&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7632</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7632"/>
		<updated>2007-10-25T01:15:41Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which exercises can be used to teach them best:&lt;br /&gt;
&lt;br /&gt;
(i) interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) to a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://c2.com/doc/crc/draw.html&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
        http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &lt;br /&gt;
        http://www.extremeprogramming.org/example/crcsim.html&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
CRC Cards generation tool&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
http://www.excelsoftware.com/quickcrcintro.html&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7631</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7631"/>
		<updated>2007-10-25T01:14:39Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which exercises can be used to teach them best:&lt;br /&gt;
&lt;br /&gt;
(i) interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) to a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://c2.com/doc/crc/draw.html&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
        http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &lt;br /&gt;
        http://www.extremeprogramming.org/example/crcsim.html&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
CRC Cards generation tool&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.excelsoftware.com/quickcrcintro.html&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Ruby==&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7629</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7629"/>
		<updated>2007-10-25T01:12:38Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// describes in details talks abt role play and structure.. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which exercises can be used to teach them best:&lt;br /&gt;
&lt;br /&gt;
(i) interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) to a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://c2.com/doc/crc/draw.html&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
        http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &lt;br /&gt;
        http://www.extremeprogramming.org/example/crcsim.html&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
CRC Cards generation tool&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.excelsoftware.com/quickcrcintro.html&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One link i cud get on Ruby n CRC&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
Its a blog but thats all i cud get:(&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;br /&gt;
&lt;br /&gt;
http://alistair.cockburn.us/index.php/Using_CRC_cards&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7621</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7621"/>
		<updated>2007-10-25T01:02:04Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: /* CRC concepts in Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// describes in details talks abt role play and structure.. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which exercises can be used to teach them best:&lt;br /&gt;
&lt;br /&gt;
(i) interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) to a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://c2.com/doc/crc/draw.html&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
        http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &lt;br /&gt;
        http://www.extremeprogramming.org/example/crcsim.html&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
CRC Cards generation tool&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.excelsoftware.com/quickcrcintro.html&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One link i cud get on Ruby n CRC&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
Its a blog but thats all i cud get:(&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7619</id>
		<title>CSC/ECE 517 Fall 2007/wiki2 5 pr</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2007/wiki2_5_pr&amp;diff=7619"/>
		<updated>2007-10-25T01:00:00Z</updated>

		<summary type="html">&lt;p&gt;Pmzachar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; Applying the object-oriented paradigm to the development of software requires individuals and teams to think and act differently than when designing procedural projects. While proponents of the object paradigm often say identifying objects is a simple and intuitive process, experienced developers know that this is not always true. The solution is the CRC (Classes, Responsibilities, Collaboration) Card method, a proven technique for identifying classes and visualizing and testing different class-based models during the design phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What is CRC and what are the cards?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; CRC stands for Class, Responsibilities, and Collaborators, and each of these are recorded on index cards which are then used to facilitate team-based roleplay.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; A CRC card is an index card that defines a Class, Responsibilities of classes and the interaction between the classes. They are used to determine which classes are needed and how they will interact. CRC cards are an informal approach to object oriented modeling. The cards are created through scenarios, based on the system requirements, that model the behavior of the system. &lt;br /&gt;
&lt;br /&gt;
The contents of an index card are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;    &amp;lt;li&amp;gt; The class name &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its Super and Sub classes (if applicable) &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The responsibilities of the class. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The names of other classes with which the class will collaborate to fulfill its responsibilities. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Author &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why bother about CRC cards?==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;li&amp;gt; They are portable. No computers are required so they can be used anywhere. Even away from the office.&amp;lt;br&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Reduces the complexity of the design.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The allow the participants to experience first hand how the system will work. No computer tool can replace the &lt;br /&gt;
      interaction that happens by physically picking up the cards and playing &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;the roll of that object.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Helps the designer focus on the essentials of the class rather than getting into inner details. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The are a useful tool for teaching people the object-oriented paradigm.&amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; They can be used as a methodology them selves or as a front end to a more formal methodology.  &amp;lt;br&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where to learn about this new and innovative method?==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are many websites and books that talk about this technique. Some in depth and some just enough to make life simpler for everyone. Listed below are some of the many websites that talk about this method along with the effectiveness with which each site explains this method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Sites&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This site gives a very good description about CRC cards. It starts with a very simple definition of CRC cards which does not right away deal with too many technicalities. It gives a succinct description of almost all the required details, starting from a brief history to the reason behind its existence. It also gives a brief description of the advantages of having CRC cards. The ''Tutorial'' section in this link gives a step by step approach on how to go about making CRC cards and also how to use them. &lt;br /&gt;
&lt;br /&gt;
Inference: &lt;br /&gt;
    &amp;lt;li&amp;gt; A very introductory description to CRC cards. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; The right kind of site for beginners. &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; Its disadvantage is same as its advantage, i.e it is just a basic layman way of explaining CRC cards. &amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	https://olt.qut.edu.au/it/itb611/gen/index.cfm?fa=frameLink&amp;amp;rNum=864389&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;In this site the author describes the CRC concept by comparing it to the processes, data flow and data store of the procedural designs regardless of the programming language and environment. This concept is explained by taking an example from the Smalltalk-80 image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      http://www.cs.utexas.edu/users/ndale/ObjectOriented.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;//Pdh paper...remember ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/RBiddle.html &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;One portion of the CRC card method that hasnt been covered in most of the other sites has been covered here- Roleplay. It says 'As a design technique, roleplay really creates a focus on how the design makes objects collaborate to work through a use case.' Here they also discuss about the usual problems faced while introducing people to this concept and also gives a way around this problem. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// describes in details talks abt role play and structure.. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	http://www.cs.umu.se/~jubo/Meetings/OOPSLA01/Contributions/MNordstrom.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This paper talks about the Object Oriented concepts using CRC cards and BlueJ. It gives a detailed case study on the benifits of using CRC cards as a tools for teaching Object oriented languages. The result of the case study proves the advantages of this technique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Which exercises can be used to teach them best:&lt;br /&gt;
&lt;br /&gt;
(i) interactively over the Web&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;This is a god place for anyone to practise the use and/or implementation of CRC cards. It gives a detailed explanation with a number of state diagrams which makes the experience much more effective.&lt;br /&gt;
	&lt;br /&gt;
(ii) to a class of students, via in-class exercises&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.agilemodeling.com/artifacts/crcModel.htm&lt;br /&gt;
&lt;br /&gt;
It gives a detailed step by step process on how to use CRC cards in Object Oriented programming. There are many more such sites that gives a pretty good explanation about this method. Some of them have been listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://c2.com/doc/crc/draw.html&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html&lt;br /&gt;
&lt;br /&gt;
(iii) self-study&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the above sites can be used as a means of learning about CRC cards all by oneself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/CRCCards.html#Deposit&lt;br /&gt;
        http://www.cs.gordon.edu/courses/cs320/ATM_Example/CRCcards.html &lt;br /&gt;
        http://www.extremeprogramming.org/example/crcsim.html&lt;br /&gt;
&lt;br /&gt;
(iv) Tools&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;There are some tools that are extremely useful in making CRC cards.&lt;br /&gt;
CRC Cards generation tool&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;http://www.excelsoftware.com/quickcrcintro.html&lt;br /&gt;
http://www.freedownloadscenter.com/Programming/Misc__Programming_Tools/QuickCRC_Windows_Download.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==CRC concepts in Java==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://books.google.com/books?id=SGOyQai2TboC&amp;amp;pg=PA215&amp;amp;lpg=PA215&amp;amp;dq=crc+in+java&amp;amp;source=web&amp;amp;ots=uV4gPOMunE&amp;amp;sig=TJmVqbYwB-LSibfSkpZzPGt6VHM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://209.85.165.104/search?q=cache:iXZrNJdMCK8J:rohan.sdsu.edu/~stewart/cs310-fall07/Ch03v2.0.ppt+Class+Responsibility+Collaboration+card+for+java&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=us&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One link i cud get on Ruby n CRC&lt;br /&gt;
http://weblog.rubyonrails.org/2006/6/14/remember-crc-cards &lt;br /&gt;
Its a blog but thats all i cud get:(&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;The overall conclusion is that CRC cards remains an effective technique for learning and practicing OO design. There are weaknesses, but strategies to compensate it too. Using these strategies, it is found that the CRC card technique is sound. We advocate use of the strategies to take advantage of the strengths of the CRC card technique, while addressing the weaknesses.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Class-Responsibility-Collaboration_card&lt;/div&gt;</summary>
		<author><name>Pmzachar</name></author>
	</entry>
</feed>