topical media & game development
This chapter has given an outline of the major theme
of this book, which may be characterized
as the unification of a software engineering
perspective and a foundational approach.
The minor theme may be characterized by
saying that a considerable amount of
technology is involved.
- terminology -- all phrases
- object computation -- message passing
- contracts -- for constructing and validating software
slide: Section 1.1: Themes and variations
In section 1 we looked at the terminology associated with
object orientation, we studied the mechanisms underlying
and we discussed an approach to the development
of software that centers around the identification
of responsibilities and the definition of abstract
data types embodying the mutual
responsibilities of a client and a server object in terms
of a contract.
- styles of programming -- as a family of conventions
- data abstraction -- and its possible realizations
- polymorphism -- and the features of inheritance
slide: Section 1.2: Paradigms of programming
Then, in section 2, we looked at object-orientation as
a paradigm of programming, extending
an abstract data type approach with support
for the organization of object types
in a polymorphic type structure.
Further, an overview was given of the literature available on OOP,
including a number of landmark papers on which this book was originally based.
- software development models -- in particular the role of prototyping
- software quality -- in relation to reuse and maintenance
- programming languages -- the choice of a vehicle
slide: Section 1.3: The object-oriented software life-cycle
In section 3
we looked at the object-oriented software life-cycle,
consisting of the phases of analysis, design and implementation.
We discussed software development models and
the role of prototyping,
how an object-oriented approach
may promote software quality and facilitate maintenance,
and we looked at some programming languages as vehicles
for the implementation of object-oriented code.
- modeling -- patterns, UML
- components -- CORBA, (D)COM, Java
- heterogeneous systems -- separating logic and control
slide: Section 1.4: Trends and technologies
In section 4
we attempted to discern trends in the research
and deployment of object-oriented technologies.
We also tried to formulate the challenges we are faced
with which concern the utilization of components
for the development of knowledge-intensive heterogeneous systems,
that allow to factor out the (business) logic in
a declarative manner.
- How would you characterize OOP
and what, in your opinion, is the motivation underlying
the introduction of OOP?
- Characterize the most important features of OOP.
- Explain the meaning of the phrase
`object orientation reduces the
complexity of programming.'
- How would you characterize contracts?
Why are contracts important?
- How is OOP related to programming languages?
- What classes of languages support OOP features? Explain.
- What influence is an object-oriented approach said to
have on the software life-cycle?
What is your own opinion?
Discuss the problem of maintenance.
- How would you characterize software quality?
- Mention a number of object-oriented programming languages, and give a brief characterization.
- What do you see as the major challenges for research
in object orientation?
Nowadays there are many books that may serve
as a starting point for reading about OO.
Dependent on your interest, you may look
at [Surviving], which treats issues of OO project management,
[Meyer97], which gives an extensive introduction to
design by contract and programming in Eiffel, or
[Fowler97], which gives a succinct introduction to
Alternatively, you may take one of the introductory
programming books for Java, from which you will almost certainly
learn something about OO as well.
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.