Joona said:
Which would mean that not all OOP is structured then, wouldn't it?
Apparently,
data and algorithmic abstraction are orthogonal to each other.
The following plot illustrates that point:
| | | Object | Object
| | | Based | Oriented
| | | Programming | Programming
--+-------------+---------------+---------------+---------------
| | built-in | User Defined | inheritance
| | types | Type (UDT) | polymorphism data
--+-------------+---------------+---------------+------------------------------>
i | spaghetti | assembler | | abstraction
m | code | [Dartmouth] | |
p | | BASIC | |
e | | Fortran IV | |
r | | Fortran 66 | |
a +-------------+---------------+---------------+---------------
t | structured | Fortran 77 | Algol, | Smalltalk,
i | programming | | Pascal, Ada, | C++, Java
v | | | Modula, C, |
e | | | Fortran 90 |
--+-------------+---------------+---------------+---------------
a | functional | lisp | |
p | programming | | |
p | | | |
l | | | |
i | | | |
c | | | |
a | | | |
t | | | |
i | | | |
v | | | |
e | | | |
--+-------------+---------------+---------------+---------------
d | logic | prolog | |
e | programming | | |
c | | | |
l | | | |
a | | | |
r | | | |
a | | | |
t | | | |
i | | | |
v | | | |
e | | | |
--+-------------+---------------+---------------+---------------
|
v
algorithmic
abstraction
I'm not an expert in computer programming language classification.
In the comp.object newsgroup, Bruno Desthuilliers complains that
two object oriented functional programming languages --
Scheme and OCaml -- don't appear on my plot.
Of course, programming language is actually multidimensional.
You should think of the plot above as a "projection" --
a sort of "principal component analysis" in two dimensions.
Algorithmic abstraction deals mostly with the *implementation*
of complicated algorithms.
Data abstraction deals mostly with the *representation*
of complicated data.