topical media & game development
object-oriented programming
Summary
object-oriented programming
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
An
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
- {\em 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.
object-oriented programming
- 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?
object-oriented programming
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 {\em object-based} and {\em 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, 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 www.accu.org ,
and for Java, www.javasoft.com .
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.