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.

The object paradigm

1


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.

Comparing Smalltalk, Eiffel 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.

Design dimensions of object-oriented languages

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.

Prototypes -- delegation versus inheritance

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.