CSC 223 Grinnell College Fall, 2005
 
Software Design
 

Discussion Questions for Riel, Chapter 1

Other Questions

  1. Riel writes that C++ does not draw a distinction between containment by reference and assosiation through a referential attribute. Is this also true in java? (monica)
  2. Since a message must be passed in any case, why is it less complex to have a third-party association class? IT seems that simply putting some functions off into another non-obvious class doesn't necessarily simplify the design. (Elijah)
  3. From the "Recall" class example for car manufacturer where a third-party, top-level class, emerges from one big class, what are the rules and guidelines to make a class less complex? What are the justifications for breaking up classes and how to control and relate the new resulting classes? (Chayapan)
  4. What are the reverse engineering case tools that Riel mentions on pg. 145? Why doesn't C++ differentiate between containment by reference and aossociation through referential attribute? (Mike C)
  5. What would be a good example of many-to-many associaton relationship? (Saugar)
  6. Do associations always create situations in which one class is dependent on the implementation of another, or does that only happen when there is a choice between association and containment? (Lorelei)
  7. Can a referential attribute association be shown on a UML diagram? (Mike L.)
  8. Are there any exceptions to Heuristic 7.1. (David D)
  9. What is the difference between an "association" and a "simple association"? (Gaurav)
  10. Why are referential attributes given the same syntax as containment fields in C++? Is there really a notion of containment through a pointer, in C++? (John)
  11. What are the uses of descriptive attributes apart from giving a class a unique identity? (Saugar)
  12. On pg. 143 Riel states that any relationships between two classes which is not uses, containment or inheritance is called simple associations. Are there other types of associations and if so how do they differ from simple associations? (Mike C)
  13. Do you think it is better to first think of the relationships between classes in terms of assosiations and then refine these relationships or to think of class relationships as uses, containment or inheritance and then call any other relationship an association. (monica)
  14. Do association classes contain anything more than plain old reference data? (John)
  15. Can you give a better definition for an Association? (David D)
  16. In section 7.2 Reil mentions that C++ does not distinguish between containment by reference and association through a referential attribute. How does Java treat this issue? (Chayapan)
  17. Why does C++ not draw a distinction between two very different object oriented relationships, containment by reference and association through a referential attribute? and I do not get why this should be a problem. (Gaurav)
  18. Doesn't creating a third class for an indirect uses relationship violate earlier heuristics about keeping related behavior and data together? At what point does a class become complex enough to justify splitting off some of the behavior? (Lorelei)
  19. what is the purpose of the heatFlowRegulator? Why can't the Furnace or Room contain the functions of the heatFlowRegulator? (Elijah)
  20. Doesn't association through a third-party class cause the creation of practically empty classes? (Mike L.)
  21. C++ does not distinguish the difference between referential attribute and containment, what about Java? (Sheng)
  22. Need more examples and practice about analyzing the difference between containment and association relationship and how to make a choice in certain cases. (Sheng)
  23. What behaviors are implicitly covered by the "use" relationship as defined in 7.1? (Eric)
  24. In what ways do these behaviors differ from association relationships? (Eric)


This document is available on the World Wide Web as

http://www.cs.grinnell.edu/~walker/courses/223.fa05/readings/riel-.shtml

created 2 November 2005
last revised 2 November 2005
Valid HTML 4.01! Valid CSS!
For more information, please contact Henry M. Walker at walker@cs.grinnell.edu.