Emulating object technology in
ortran, Cobol, Pascal, C, Basic, PL/I and even assembly language still account for a
large part of the software being written or updated today. Clearly, a project using one of
these languages will not be able to draw the full benefits of object technology, as this would
require a notation such as the one we have studied in this book, and the supporting
compiler, environment and libraries. But people who are required to use pre-O-O tools,
often because of non-technical constraints, can still gain inspiration from object technology
and use some of its concepts to improve the quality of their software development.
This chapter presents the techniques of
that may enable you to
approximate some of object technology. It will particularly examine the case of Fortran,
Pascal and C. (Ada and other encapsulation languages were discussed in the preceding
chapter; the following one covers O-O languages such as Simula, Smalltalk, Objective-C,
C++ and Java.) This presentation will be directly applicable if you must use one of these
languages. But it extends further:
• If you use another non-O-O language not on this list, such as Basic or Cobol, you
should not have too much trouble transposing the concepts.
• Even if you are able to use an O-O language, the following discussion can give you
a better grasp of the innovations of object technology and of the supporting
implementation techniques (which often make use, internally, of older languages).
LEVELS OF LANGUAGE SUPPORT
In assessing how programming languages succeed in supporting object-oriented concepts,
we may distinguish three broad categories (ignoring the lowest level, mostly containing
assembly languages, which does not even support a routine construct):
level comprises languages whose unit of decomposition is the
a functional abstraction capturing a processing step. Data abstraction is handled, if at
all, through definitions of data structures, either local to a routine or global.
• Languages at the
level provide a way to group a set of routines and
data declarations in a syntactical unit, called a
; typically each unit
can be compiled separately. This was discussed in some detail for Ada.