Christopher Smith wrote: > Tracy R Reed wrote: > > Andrew Lentvorski wrote: > >> > >> There are about 9 characteristics that "define" OO (I wish I could > >> find that article--I think it was on one of the Lisp resources). > >> Every language seems to use a slightly different subset of those 9 and > >> creates religious wars of the "We're real OO!"--"No you're not!" type. > > > > The essential meaning of OO is indeed reasonably well understood. You > > are talking about the bickerings of pedants. > > Exactly. There's a big difference between "the essential meaning" and > "the particulars". Nearly all possible subsets of those nine > characteristics embody the essence of OO, and the ones that don't are > nonsensical enough that it'd be challenging to construct a language that > functions (almost said "functional language" and then realized how > confusing that'd be ;-).
I could find only eight: 1) Class - a class defines the abstract characteristics of a thing, including the thing's characteristics (its attributes or properties) and the things it can do (its behaviors or methods or features). 2) Object - a particular instance of a class. 3) Method - an object's abilities. 4) Message passing - "The process by which an object sends data to another object or asks the other object to invoke a method." 5) Inheritance - In some cases, a class will have "subclasses," more specialized versions of a class. 6) Encapsulation - conceals the exact details of how a particular class works from objects that use its code or send messages to it. 7) Abstraction - simplifying complex reality by modeling classes appropriate to the problem, and working at the most appropriate level of inheritance for a given aspect of the problem. 8) Polymorphism - polymorphism is behavior that varies depending on the class in which the behavior is invoked, that is, two or more classes can react differently to the same message. -john -- [email protected] http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg
