Instructors' Guide
Ch 1
Ch 2
Ch 3
Ch 4
Ch 5
Ch 6
Ch 7
Ch 8
Ch 9
Ch 10
Ch 11
Ch 12
- Object-oriented programming stands for an approach
to structure programs using the object metaphor as an abstraction device.
See slide
[1-themes].
It is motivated by the need to manage the complexity of
software.
- An exhaustive overview is given in slide
[1-features]
and slide [1-benefits].
The most important features are, obviously,
data abstraction and polymorphism due to inheritance.
- The complexity referred to is not
the structural complexity of the computation,
that is the space and time needed
to solve a problem,
but the conceptual complexity of programming,
the organization of the software.
- Contracts are a means to specify the obligations
of the client and the services an object is to provide,
in case these obligations are met,
in a formal way.
- From a historical perspective, OOP is a paradigm of programming.
See slide
[1-paradigms].
However, from a software engineering perspective,
OOP is increasingly becoming important for design and analysis
as well.
See slide [1-respons].
- These include imperative languages, functional languages and logic programming
languages.
The essential features of OOP encapsulation and inheritance.
These may be realized in a variety of language settings.
- An object-oriented approach blurs the distinction between
analysis, design and implementation.
See slide
[1-lifecycle].
Moreover, it allows for different software development models,
such as prototyping.
See slide [1-development].
What is your opinion?
As concerns maintenance, corrective maintenance is facilitated
by the localization due to encapsulation.
Adaptive maintenance is quite another matter. Polymorphism helps,
but only if extensibility has been an explicit design goal.
- Aspects of software quality include
correctness, robustness and extendibility.
In particular, with regard to the cost of maintenance,
a valid criterion would be maintainability.
OOP contributes to maintainability by supporting
a strong notion of locality.
- See slide
[1-languages].
- See the discussion in section
[Challenges].
slide: Answers