Rationale
This chapter presents an overview of the issues
involved in the design of object-oriented software.
Attention is paid to the process of design, the problem
of identifying an object and the formalization of the
design in contracts.
This chapter stresses the importance of modeling
and the need to express the characteristics of the objects that
participate in the model in a behavioral contract,
specifying the restrictions and
obligations of the object and its clients.
Some classical examples are used to illustrate these notions.
The approach taken in this chapter may be characterized
as eclectic, in that various methods are referred to
when illustrating design issues without commitment
to a particular method or approach.
Hints
In presenting the material to students, I prefer
to maintain a certain distance from the particularities of the
individual methods.
To compensate for this apparent lack of commitment,
I invite students to make the method of their choice
the subject of their paper project.
For further study, I recommend [Booch94], [WWW90]
and [Rum91].
Also worthwhile are [Henderson93] and [Champeaux93].
Additional literature is mentioned in section [methods].
An overview and comparative study of design representation methods
is given in [Webster].
Project assignments
The material contained in this chapter suggests various
project assignments, including
- a study of any of the individual methods mentioned, and
- a comparative study of a few selected methods.
Further, you may select any of
problems mentioned as programming projects
in appendix [app-program] as
Comments
In my view, design may be characterized as the effort leading to
a rational description and justification
of the architectural structure of a software system.
Whether design precedes implementation or the
other way around is irrelevant from this point of view.
Nevertheless, some heuristics are discussed that may be used to arrive
at a proper object model.