From: ian@loral.UUCP (Ian Kaplan)
Subject: Re: Definition of Buzzwords: "Object-Oriented"
Date: Fri, 25-Jan-85 14:51:11 EST [thread overview]
Date: Fri Jan 25 14:51:11 1985
Message-ID: <769@loral.UUCP> (raw)
In-Reply-To: 366@cavell.UUCP
In article <366@cavell.UUCP> brian@cavell.UUCP (Brian Wilkerson) writes:
>
>I therefore propose that the original definition be revised to read :
>
>object-oriented, adj., 1. wholly or largely concerned with the definition
> and use of abstract data types. 2. consisting wholly or largely of
> abstract data types.
>
>Brian Wilkerson
> ...!ihnp4!alberta!brian
Several books have come out which suggest that languages like Ada and
Modula-2 are "object oriented" languages[1]. These languages are object
oriented in that a module (or package) can be defined which contains a
data structure and the operations which can be performed on the data
structure. A Modula definition module defining such a stack "object"
is shown below. The actual stack data structure is hidden inside the
module. It can only be manipulated by the two procedures Push and Pop.
DEFINITION MODULE StackOps;
FROM ExpTypes IMPORT Operators;
EXPORT QUALIFIED Push, Pop;
PROCEDURE Push( Value : REAL );
PROCEDURE Pop() : REAL;
END StackOps.
In Modula there would also be a separately compiled implementation module
which would implement the data structure and the procedures Push and Pop.
This module is not important for this discussion.
There is a real difference between the type of "object" which can be
created using Modula's modules and the objects in a language like
Smalltalk or C++. These languages support abstract data types. To add
this facility to Modula, one would have to be able to declare a variable
whose type was the object. For example:
VAR
MyStack : StackOps.
Operations on the object would be performed in the following way
Value := MyStack.Pop;
and
MyStack.Push( Value );
In this case the operations are explicitly associated with the data
type, it is not a loose associate as is the case with a Modula module.
Concurrant Pascal uses a scheme similar to the one I have outlined[2].
This is a rather long winded way of stating that I agree with Brian
Wilkerson's definition of an object oriented language. An object
oriented language provides an abstract data type which embodies both
the data and the operations which can be performed on the data.
Although there are clearly similarities between this and the facilities
provided by Modula and Ada, these languages are not truly object
oriented languages.
[1] "Software Engineering With Modula-2 and Ada" by Wiener and Sincovec,
John Wiley and Sons, 1984
[2] "The Architecture of Concurrent Programs" by Per Brinch Hansen,
Prentice-Hall, 1977
Ian Kaplan
Loral Data Flow Group
Loral Instrumentation
USENET: {ucbvax,ihnp4}!sdcsvax!sdcc6!loral!ian
ARPA: sdcc6!loral!ian@UCSD
USPS: 8401 Aero Dr., San Diego, CA 92123
(619) 560-5888 x4812
next parent reply other threads:[~1985-01-25 19:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4288@ucbvax.ARPA>
[not found] ` <366@cavell.UUCP>
1985-01-25 19:51 ` Ian Kaplan [this message]
1985-01-31 20:10 ` Definition of Buzzwords: "Object-Oriented" Robert Stroud
1985-02-04 15:47 ` Ian Kaplan
1985-02-07 18:45 ` Definition of Buzzwords: "Object-Oriented" (really C++) Arnold Robbins
1985-02-05 16:21 ` Definition of Buzzwords: "Object-Oriented" Juha I. Heinanen
1985-02-11 9:52 ` Dick O Schefstr|m
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox