Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site umcp-cs.UUCP Path: utzoo!watmath!clyde!cbosgd!ihnp4!mhuxn!mhuxb!mhuxr!ulysses!allegra!mit-eddie!godot!harvard!seismo!umcp-cs!koved From: koved@umcp-cs.UUCP (Larry Koved) Newsgroups: net.lang,net.lang.st80 Subject: What is Object-Oriented Message-ID: <3013@umcp-cs.UUCP> Date: Mon, 4-Feb-85 23:27:41 EST Article-I.D.: umcp-cs.3013 Posted: Mon Feb 4 23:27:41 1985 Date-Received: Thu, 7-Feb-85 02:42:35 EST Distribution: net Organization: U of Maryland, Computer Science Dept., College Park, MD Lines: 53 Xref: watmath net.lang:1377 net.lang.st80:179 After reading the many definitions of what "object-oriented" means, I have decided to put in my 2 cents (for whatever that is worth!). Object-oriented is a rather vague term which has been applied to many different concepts. Two areas in which OO has been used is in programming languages and computer systems (hardware and operating systems). Its roots date back to about 1966 in an infamous article written by Dennis and Van Horn (CACM, March 1966). Many ideas and concepts were expanded from that paper and developed during the late 60's and 70's. Many systems which evolved during this era were interested in abstraction mechanisms (data types, etc.), and protection of data (and data objects) in computing systems. What eventually evolved were systems such as Hydra, CLU, Smalltalk, Multics, Intel 432, IBM System/38, Sward, and many others which I can't remember offhand. A central themes of these systems was data, procedures, protection, and abstraction. Data is "encapsulated" into an object (of a type) which has a set of protected procedures which are allowed to manipulate the representation of the object. Only those procedures which are defined for the data type are allowed to manipulate the representation of the object. Note that procedures are also considered to be objects (procedure objects). Also, objects can contain other objects. (this also gets into the issue of data abstraction.) I could go on for pages, but I will leave that for another time. I will not pontificate on this subject much more...except: There are two related issues in programming language design which frequently gets confused with OO programming: overloaded operators and inheritence. Having overloaded operators and/or inheritence (single or multiple) does not determine whether or not a language is OO. Each of these is an issue in programming language design which can and should be considered seperately from the OO issues. There are languages which use overloading and/or inheritence, but are not OO, and visa versa. Finally, it should also be noted that there are different degrees of being OO. Smalltalk is almost at one extreme, while Modula-2 is almost at the other extreme. The performance of the language (instructions per second) is a major consideration in deciding the degree to which a language's design is OO. Being extremely OO is expensive in processing time and/or space. I will now get down off my soapbox and await for your reactions (flames). -- Spoken: Larry Koved Arpa: koved.umcp-cs@CSNet-relay Uucp:...{allegra,seismo}!umcp-cs!koved