[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Mon Jul 1 07:24:56 1993 
Subject:Re: Opposed views on the nature of OOP diagnosed 
From:"A.Sloman" 
Volume-ID:930701.01 

[steve]
> As far as I can tell, the [A] viewpoint simply has nothing to do with
> object-oriented programming.

Steve, you are falling into the common trap of thinking there is a well
defined notion of OOP. There isn't . The situation is a complete
shambles with all sorts of definitions being used, implicitly or
explicitly. (I've even met people who think "object oriented" means
"concerned with things on the screen." Nearly as limiting is the view
that it means something to do with message passing!)

So even discussing what is or isn't "really" object oriented
is now a complete waste of time.

My note was a partial attempt to diagnose (some of) the reasons for this
diversity.

> PS.  I think the argument gets heated simply because the terms being used
> aren't well-defined.
Yes -- and you have no hope of changing that now. It's too late, alas.

So the phrase should be dropped and replaced by new more specific terms.
Recommonding how existing terms *should* be used will never produce
agreement because of the diversity and strength of views.

> Object-oriented:
>   I understand object-oriented to be rather vague
> term but, for me, at its core is the idea that the *same* procedure
> can be applied to *different* types to achieve a single effect.

That's just polymorphism. Compre "pr" and "+" and "<>" in Pop-11. We
didn't need objectclass for that. The main thing you get from
objectclass is *inheritance* of structure components and of
(polymorphic) methods.

That's what gives such languages their main power in relation to
software engineering. That's what I used to think was the essence of
OOP.

Because of the the fact that terminology is in a mess I suggest that a
new phrase is required, e.g. "inheritance-based programming"

There's further terminological confusion relating to design methods.
I like to talk about "Ontology oriented design", which starts by
developing an analysis of the types of things, properties, relations,
events, processes (*in the world*) that the software is concerned with
(rather than starting with datastructures in the machine, or
algorithms.)

If you combine that with ideas about inhertance, you get "Structure
sharing ontology oriented design" (SSOOD) (pronoused as in "pseudo") or
possibly (Inheritance based ontology oriented design) (IBOOD).

Aaron