Xref: utzoo comp.lang.c++:3124 comp.lang.misc:2873 comp.lang.smalltalk:1029 comp.lang.lisp:1707 comp.lang.modula2:1465 Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!cs.utexas.edu!uunet!mcvax!cernvax!ethz!marti From: marti@ethz.UUCP (Robert Marti) Newsgroups: comp.lang.c++,comp.lang.misc,comp.lang.smalltalk,comp.lang.lisp,comp.lang.modula2 Subject: Re: C++ and other OOP Languages Keywords: C++, OOPS Message-ID: <832@ethz.UUCP> Date: 26 Apr 89 10:08:19 GMT References: <823@ethz.UUCP> <5971@pdn.paradyne.com> Organization: ETH Zuerich Lines: 55 In article <5971@pdn.paradyne.com>, alan@rnms1.paradyne.com (Alan Lovejoy) writes: | In article <823@ethz.UUCP> marti@ethz.UUCP (Robert Marti) writes: | >A language is OO if | >1) it supports data encapsulation (information hiding, abstract data types), | | It must have classes. A class can be instantiated. Data encapsulation is | just a synonym for information hiding. Sine you mention abstract data types | in your definition, however, you get at least 1/2 credit. Thanks for the 1/2 credit :-) At any rate, class instantiation is not all that important to me, since it can be "simulated" in a straightforward manner within more conventional languages. I do agree that it's a nice feature to have, though. | So what's the difference between a class and an abstract data type? | Comments? Same difference as far as I am concerned. | >[ A language is OO if ] | >2) it supports inheritance (subclassing, extensible record types, ... ) | > and | | Extensibilty is NOT the same thing as inheritance. Inheritance permits | the definition of a new class in terms of the differences between the new | class and the superclass. An extension is only one type of difference. Agreed. Ideally you'd want to extend, restrict and override definitions inherited from a superclass. | >[ A language is OO if ] | >3) it supports determination of the procedure body to be executed at the | > time of the actual procedure call (message passing, virtual functions). | | Your language is ambiguous. "At the time of the actual procedure call" could | mean either at run time or at compile time. I meant at run time, of course. | If only at compile time, then | this is the same thing as overloading. If also at run time, then it is | dynamic message-to-method binding. Your parenthetical comment indicates | you are referring to dynamic method binding (for which overloading is a | prerequisite). More violent agreement here :-) | Alan Lovejoy; alan@pdn; 813-530-2211; AT&T Paradyne: 8550 Ulmerton, Largo, FL. -- Robert Marti Phone: +41 1 256 52 36 Institut fur Informationssysteme ETH-Zentrum CSNET/ARPA: marti%inf.ethz.ch@relay.cs.net CH-8092 Zurich, Switzerland UUCP: ...uunet!mcvax!ethz!marti