Path: utzoo!utgpu!cunews!cognos!garym From: garym@cognos.uucp@uunet.uu.net (Gary Murphy) Newsgroups: comp.lang.forth Subject: Re: NEON/Object Oriented Forth/OOF Message-ID: Date: 21 Sep 90 12:54:25 GMT References: <1748.UUL1.3#5129@willett.pgh.pa.us> Sender: garym@cognos.UUCP Organization: Cognos Inc., Ottawa, Canada Lines: 48 In-reply-to: ForthNet@willett.pgh.pa.us's message of 16 Sep 90 01:40:23 GMT Anyone who has read the comp.object groups will recognize this thread as an endless one -- there is no clear consensus on what OOP means, only a few loose definitions of OOP languages. The list presented does outline most of the features advertised in other OOP systems, namely... >>>>> On 16 Sep 90 01:40:23 GMT, ForthNet@willett.pgh.pa.us (ForthNet articles from GEnie) said: FN-> Tim Korson and John D. McGregor in CACM, Vol 33, No 9, pp 38... FN-> maintain there are but five concepts that clearly define Object Oriented FN-> Programming. These are as follows: FN-> o Objects - the basic run time entities that occupy memory and FN-> have an associated address FN-> o Classes - a set of possible objects, ideally with implementation FN-> details unique to the class FN-> o Inheritance - relation between classes that allows for the definition FN-> and implementation of one class to be based on that of FN-> existing class(es) FN-> o Polymorphism - the ability to take more than one form. In OOP this FN-> means the a polymorphic reference may, over time, refer FN-> to more than one class FN-> o Dynamic Binding - in essence, the nature of a proceedure call is not FN-> known (predefined) until the moment of call at runtime Dynamic binding is not really a requirement and most real (read "useful") systems give the compile-time option to choose between dynamic and static. Polymorphism is likewise an independent idea found also in many Functional languages such as Hope, Lisp and I think also in FP. As one who uses OOP everyday, I do think the list cited above does lack two OOP features, one which is essential and the second which is very powerful and at the same time extremely dangerous. The first is encapsulation, AKA information hiding, which imposes strict scoping on variables and selected functions and allows a complete change of the implementation without affecting the remainder of the application (provided the interface is unchanged). The second is multiple inheritance, the bane of all OOPL designers, but a very powerful idiom when used correctly. -- Gary Murphy uunet!mitel!sce!cognos!garym (garym%cognos.uucp@uunet.uu.net) (613) 738-1338 x5537 Cognos Inc. P.O. Box 9707 Ottawa K1G 3N3 "There are many things which do not concern the process" - Joan of Arc