comp.lang.ada
 help / color / mirror / Atom feed
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

       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