This chapter presented an overview
of object-oriented programming languages.
We discussed the heritage of Simula
and the various areas of research and
development the ideas introduced by
Simula has generated.
1
- notion of object -- viewpoints
- classification -- object extensions
slide: Section 5.1: The object paradigm
A classification and overview of
existing object-oriented languages
was given and we noted the prominence
of hybrid languages derived from Lisp
and C.
2
- criteria -- libraries, environments,
language characteristics
- comparison -- language characteristics
slide: Section 5.2: Comparing Smalltalk, Eiffel and C++
In section 2,
we looked at a comparison
of Smalltalk, Eiffel and C++,
including criteria such as the
availability of libraries,
programming environments and
language characteristics.
3
- object-oriented -- object-based + inheritance
- orthogonal dimensions --
objects, types, delegation, abstraction
- open systems --
dimensions of modularity
slide: Section 5.3: Design dimensions of object-oriented languages
In section 3,
we discussed the design dimensions
of object-oriented languages and
characterized an orthogonal set of
dimensions consisting of
objects, types, delegation and abstraction.
We also discussed the notion of open systems
and multi-paradigm languages
combining logic programming with
object-oriented features.
4
- prototypes -- cloning and delegation
- performance -- dynamic compilation
slide: Section 5.4: Prototypes -- delegation versus inheritance
In section 4,
we dealt with classless prototype-based
languages, supporting dynamic delegation
instead of inheritance.
We also discussed performance issues
and observed that dynamic compilation
based on runtime type information
may achieve good results.
Meta-level architectures
5
- class -- the concept of class
- meta architecture --
subclass and instance hierarchy
- reflection -- postulates
slide: Section 5.5: Meta-level architectures
Finally, in section 5, we reflected on the concept
of class and discussed a reflective
architecture unifying the interpretation
of a class as an object, capable of
answering messages, and as a description
of the properties of its instances.
- What are the basic characteristics
of object-oriented languages?
- How would you classify object-oriented
languages?
Name a few representatives of each category.
- What do you consider to be the major
characteristic of the object model
supported by C++? Explain.
\nop{
- By what criteria would you compare
Smalltalk, Eiffel and C++? Explain.
}
- How would you characterize Smalltalk,
Eiffel and C++ with respect to reliability,
efficiency and complexity?
Explain.
- How would you characterize the difference
between object-based and object-oriented?
- Along what orthogonal dimensions would
you design an object-oriented language?
Explain.
- How would you characterize prototype-based
languages?
- What are the differences between inheritance and delegation?
- Does C++ support delegation? Explain.
- How would you characterize the concept of a class?
- Can you sketch the meta architecture of Smalltalk?
- How would you phrase the postulates underlying
class-based languages?
Can you give a reflective version of these
postulates?
A concise treatment of programming languages
is given in [BG94].
Further, you may want to consult [Wegner87],
which contains the original presentation
of the discussion concerning the distinction
between object-based and object oriented.
For the Oberon language, you may read [Reiser92].