Rationale
This chapter is about object-oriented
programming languages.
It presents an overview of existing
languages and discusses their heritage from
Simula.
Further, it contains a detailed comparison
of the three major object-oriented languages;
Smalltalk, Eiffel and C++.
It discusses the design dimensions of object-oriented
languages and proposes orthogonal dimensions of design,
following [Wegner87].
Also, class-less prototype-based languages
are dealt with.
These languages use dynamic delegation instead
of static inheritance for sharing resources.
Finally, the chapter discusses meta-level
architectures for object-oriented languages.
Hints
According to [Tai], the heritage of Simula
may be observed in many well-established research and development areas.
You may need to provide some additional
material with respect to these areas
if your audience is not familiar with them.
.so literat
Project assignments
As subjects for a paper, you may think of
- Is language X object-oriented?
where X may range over Turbo Pascal,
Nexpert Object, or any language that claims
to be object-oriented.
Features to pay attention to include
protection mechanisms and inheritance.
As practical assignments you may think of
- Develop an interpreter for an object-oriented extension of X
where X may be any non object-oriented
language.
An interesting project would be to develop
an object-oriented extension of yacc.
Comments
Many object-oriented languages and extensions
to languages have been developed.
For example, a variety of such extensions
has been proposed for the language Tcl
that is discussed
in section [hush].
These extensions support radically different
object models, ranging from a model based on CLOS
to a model based on C++.
See the {\tt comp.lang.tcl} newsgroup
for a discussion of these extensions.