[5]
DejaVU Online:
Principles of Object-Oriented Software Development
(©)
[5]
-
[up]
[top] -
[I]
[II]
[III]
[IV] -
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12] -
[A]
[R]
Instructor's Guide
intro,
paradigms,
comparison,
design,
prototypes,
architectures,
summary,
Q/A,
literature
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
overview of
existing object-oriented languages
was given in section 1 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, C++ and Java
In section 2,
we looked at a comparison
of Smalltalk, Eiffel, C++ and Java,
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.
Instructor's Guide
intro,
paradigms,
comparison,
design,
prototypes,
architectures,
summary,
Q/A,
literature
- 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.
- Why would you need friends?
- How would you characterize the difference
between object-based and object-oriented?
- Along what orthogonal dimensions would
you design an object-oriented language?
Explain.
- Give a characterisation of active objects.
In what situations may active objects be advantageous?
- How would you characterize prototype-based
languages?
- What are the differences between inheritance and delegation?
Does C++ support delegation? Explain. And Java?
- 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?
slide: Questions
Instructor's Guide
intro,
paradigms,
comparison,
design,
prototypes,
architectures,
summary,
Q/A,
literature
A concise treatment of programming languages
is given in [BG94].
For a collection of papers on object-oriented
concepts, see [KL89].
Further, you may want to consult [Wegner87],
which contains the original presentation
of the discussion concerning the distinction
between object-based and object-oriented.
Concurrency is studied in [AWY93].
For Java, read the original white paper, [Java].
An interesting extension of C++ is described in [Petitpierre98].
At the corresponding web site, http://ltiwww.epfl.ch/sCxx ,
there is much additional material.
Finally, for an account of the design and evolution of C++,
read [Stroustrup97].
For more information on C++, visit http://www.accu.org ,
and for Java, http://www.javasoft.com .
slide: Literature
[5]
-
[up]
[top] -
[I]
[II]
[III]
[IV] -
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12] -
[A]
[R]