An Introduction to Object-Oriented Programming
By Timothy Budd
Study Guide for Chapter 2
After reading this chapter, you should be able to:
Explain why a design approach based on behavior can be applied
sooner in the development process than can a design approach
based on other software characteristics
use the CRC card technique to give a responsibility-driven design for
an object-oriented solution to a problem
describe some of the basic characteristics of a software component
describe Parnas's principles of information hiding
identify the stages of the software life cycle
You may wish to use the print or save as command
on your web browser to produce a copy of this study guide.
That way you can fill in the answers to the questions as part of
your assimilating the information you learn in this chapter.
What is the name given to
the design technique driven by the determination and delegation of
Explain how an emphasis on behavior and responsibility is naturally
linked to greater information hiding and a looser connection between
What are some of the characteristics that differentiate programming
in the large from programming in the small?
What is the main advantage of first describing an application in
terms of behavior as opposed to, for example, discussing the
basic data structures that will be used in the application?
What is the principle purpose of walking through scenarious?
What are the two most important characteristics of a software
What do the three fields of a CRC card represent?
What are some of the advantages of using a physical index card
to represent a CRC card?
What is the what-who cycle?
Why should the user manual be written before actual coding of
an application is begun?
What are the most common sources of change in the requirments
for an application over time? How can some of the difficulties
inherient in change be mitigated?
Describe in your own words the following aspects of software components
- Behavior and state
- Instances and Classes
- Coupling and Cohesion
- Interface and Implementation
What are Parnas's principles of information hiding?
What are some guidelines to follow in the selection of names
for components, arguments, behaviors, and so on?
After design, what are the later stages of the software life cycle?
What is a facilitator component?
What is regression testing?
What is software maintenance?
Timothy Budd, 1995.