Newsgroups: comp.object,comp.lang.smalltalk
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!satisfied.elf.com!news.mathworks.com!uunet!rcm!rmartin
From: rmartin@rcmcon.com (Robert Martin)
Subject: Re: Teaching OO
References: <D2150022.k0e90w@ed.bse.com> <1995Jan17.174104.4480@rcmcon.com> <3fma1g$2ne@jabba.ess.harris.com> <1995Jan20.141454.3790@rcmcon.com> <3g37vo$dv9@jabba.ess.harris.com>
Organization: R. C. M. Consulting Inc. 708-918-1004
Date: Wed, 25 Jan 1995 17:31:32 GMT
Message-ID: <1995Jan25.173132.27728@rcmcon.com>
Lines: 45
Xref: glinda.oz.cs.cmu.edu comp.object:25607 comp.lang.smalltalk:19882

wdavis@dw3f.ess.harris.com (Bill Davis) writes:

>In article <1995Jan20.141454.3790@rcmcon.com>, rmartin@rcmcon.com (Robert
>Martin) writes:

>|>My definition of OO is: "A modeling technique in which engineers use
>|>abstract polymorphic interfaces to manage the dependencies between
>|>software modules, such that those modules can be maintained in
>|>isolation, and possibly reused in other applications."

>In spite of the valuable insights in this definition, I don't see the word
>"object" in it anywhere.  My definition of Object Oriented is still evolving
>but it includes:
>      A technique which model problem domain objects as software objects.

>Your definition seems to be "Interface Management Oriented".

Yes, it certainly is.  And I will not aplogize for breaking the
circular dependency of the definition.   I think that the omission of
the word "object" from the definition is a plus, rather than a minus.
After all, I could have said: "Object Oriented Design is a design
technique that is oriented around objects."  But what does this really
say?  It is circular.

>I agree that interface management is important in OO.  It was also important
>in SA/SD.  The difference between SA/SD and OO is in the interfaces.
>SA/SD manages interfaces based on a process view of the problem.
>OO manages interfaces based on a object view of the problem.

This misses the imporant point.  SA/SD does manage interfaces, but the
primary goal of that management is to minimize coupling between
functions, and increase the cohesion of functions.  OOD manages
interfaces for a very different reason.  We create abstract interfaces
because they -- utterly -- break the dependencies that SA/SD could
only strive to minimize.    Minimized dependencies do not lead to
reusability and isolation from change.  Broken dependencies do.




-- 
Robert Martin       | Design Consulting   | Training courses offered:
Object Mentor Assoc.| rmartin@rcmcon.com  |   Object Oriented Analysis
2080 Cranbrook Rd.  | Tel: (708) 918-1004 |   Object Oriented Design
Green Oaks IL 60048 | Fax: (708) 918-1023 |   C++
