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.