From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=BAYES_00,INVALID_DATE, MSGID_SHORT,REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site loral.UUCP Path: utzoo!watmath!clyde!burl!ulysses!mhuxr!ihnp4!cbosgd!cbdkc1!desoto!packard!edsel!bentley!hoxna!houxm!whuxlm!akgua!sdcsvax!sdcc3!sdcc6!loral!ian From: ian@loral.UUCP (Ian Kaplan) Newsgroups: net.lang.st80,net.lang.ada,net.lang.mod2 Subject: Re: Definition of Buzzwords: "Object-Oriented" Message-ID: <769@loral.UUCP> Date: Fri, 25-Jan-85 14:51:11 EST Article-I.D.: loral.769 Posted: Fri Jan 25 14:51:11 1985 Date-Received: Mon, 28-Jan-85 05:02:37 EST References: <4288@ucbvax.ARPA> <366@cavell.UUCP> Reply-To: ian@loral.UUCP (Ian Kaplan) Distribution: net Organization: Loral Instrumentation, San Diego Keywords: object oriented programming Xref: watmath net.lang.st80:163 net.lang.ada:165 net.lang.mod2:140 Summary: List-Id: 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