Chapter 3
- Object-oriented development
centers around the decomposition of a system
into objects.
See slide
[3-development].
Aspects of the process of development include
the definition of an object model,
the choice of a method guiding the
process of development, the management
of the process of development and
the actual design, capturing the essential
architectural properties of the system.
- Modeling may be used to capture
the requirements of a system,
to define a conceptual model of the
domain in analysis, to describe the system
architecture during design and to realize the
implementation objects.
See slide
[3-perspectives].
- The OMT method distinguishes between
an object model, a dynamic model and a functional
model.
See slide
[3-dimensions].
- A functional approach describes the global
steps of a computation,
whereas an object-oriented approach
is of a more distributed nature,
describing the objects participating
in the computation.
Advantages of an object-oriented approach
are support for localized changes
and support to introduce concurrency
in the form of active objects.
See slides
[sli-3-functional] and [sli-3-OO].
- See slide
[3-booch].
- Most of the heuristics are based on a
linguistic analysis of the requirements
document.
See slide
[3-heuristics].
- Criteria to eliminate spurious classes
essentially come down to avoiding classes
that provide no information.
See slide
[3-eliminating].
- The CRC method consists of defining,
for each class,
its responsibilities and its collaborators,
that is the classes that are needed
to function properly.
See slide
[3-crc].
- A contract defines the behavior of
an object by means of an invariant
and assertions characterizing
the pre- and post-conditions of the methods
supported by an object.
See slide
[3-obligations].
- Contracts may help to decide
who is responsible for software failures.
See slide
[3-limits].
- Partial types are types designed
to have subtypes.
By refinement through inheritance,
partial types may be given a
concrete realization.
See slide
[3-partial].
- Refining a contract amounts
to strengthening the invariant
and, for each method,
weakening the pre-conditions
and strengthening the post-conditions.
Also, methods may be added.
See slide
[3-inheritance].
- Semantic modeling is mostly concerned
with defining the attributes of objects and
the relation between object classes.
Object-oriented modeling, in contrast,
is more concerned with characterizing
the behavioral properties of objects.
However, the two approaches are converging.
- Abstract systems may be regarded as the
characterization of the functionality offered
by a collection of abstract data types.
It specifies the repertoire of methods
available to the user of such a collection.
- Classes corresponding to actual events
specify the interactions which must occur
between objects.
The resources which are needed when the event
occurs are specified when creating the event.
Protection is offered by hiding
the interaction between the objects
in the definition of the event
activation operator.