[comp.object] What is OOP / OOD

jearls@polyslo.CalPoly.EDU ( Stupid ) (10/02/89)

Sorry if this doesn't belong here, but could someone please tell me
exactly what IS Object Oriented Programming or Object Oriented Design ?

Thanks,

- John

-- 
_______________________________________________________________________________
Stupid@Idiots.Anonymous.Com | There's an explanation for everything. Tis a pity
jearls@polyslo.CalPoly.EDU  | that many of those explanations make no sense.
earlsj@AFAL-EDWARDS.AF.MIL  | - The Teachings of Ebenezum, volume LXIX

djones@megatest.UUCP (Dave Jones) (10/03/89)

From article <1989Oct2.161552.14306@polyslo.CalPoly.EDU>, by jearls@polyslo.CalPoly.EDU (  Stupid  ):
> Sorry if this doesn't belong here, but could someone please tell me
> exactly what IS Object Oriented Programming or Object Oriented Design ?


In a word, no.

But be of good cheer. Many will try. The bad news is that they will all
tell you something different. You will be amazed by the amount of response
your simple looking request will get. Within two or three months we will be
well into, "It's not really Object-Oriented unless it uses my favorite
trick, namely para-subreferenced attribute enheritance short circuitry."

dune@cbnewsl.ATT.COM (Greg Pasquariello) (10/03/89)

In article <1989Oct2.161552.14306@polyslo.CalPoly.EDU> jearls@polyslo.CalPoly.EDU (  Stupid  ) writes:
>Sorry if this doesn't belong here, but could someone please tell me
>exactly what IS Object Oriented Programming or Object Oriented Design ?

Welllll, I am not an expert (so flames will be automatically doused), but
here is what I know from working with C++ for about a year now.

Object Oriented Programming (also know as the buzz-word from hell), is
a method of developing software using some kind of object.  An object is
nothing more than a collection of data, and the code that operates on that
data, usually autonomously.  For instance, if I have an object that represents
a window, I do not have to store the window data, and I do not have to 
draw the window on the screen;  the window keeps it's own data, and I can
tell the window to draw itself on the screen.  This has the benefit of 
isolating instances of windows, among other things.

OO Design is the methodology used to design both objects, and applications
that use them.  It involves isolating the pieces of code that will be both
reusable and autonomous, and resolving the functionality and data of these
objects.  For instance, if I am designing a window system, I would decide 
that a window is an autonomous object that will be able to draw itself,
display bitmap data, and determine it's optimum size.  To this end, it will
need to keep it's own coordinates, length and width, the bitmap data, etc.
In addition I will need to define an interface to the application code that
will be consistent across instances of windows as well as flexible.

I feel as if I should recommend a book here, but I can't think of one off the
top of my head.  Hope this helps though!


-Greg

kentb@Apple.COM (Kent Beck) (10/03/89)

An object has identity (can be differentiated from all other objects), responds
to stimuli idiosyncratically, and contains hidden internal state.  OOD is the
process of dividing responsibility among collaborating objects.  See my paper
with Ward Cunningham in OOPSLA '89 (which I am right now missing because of
impending fatherhood- Hi everybody, I miss you).

Kent

jnh@ecemwl.ncsu.edu (Joseph N. Hall) (10/04/89)

In article <2109@cbnewsl.ATT.COM> dune@cbnewsl.ATT.COM (Greg Pasquariello) writes:
>In article <1989Oct2.161552.14306@polyslo.CalPoly.EDU> jearls@polyslo.CalPoly.EDU (  Stupid  ) writes:
>>Sorry if this doesn't belong here, but could someone please tell me
>>exactly what IS Object Oriented Programming or Object Oriented Design ?
>...
>I feel as if I should recommend a book here, but I can't think of one off the
>top of my head.

I can.  See the first few chapters of Bertrand Meyer's book (the Eiffel
reference manual, from Prentice-Hall).  It's called Object-Oriented-
something-or-other (too many books on my shelf starting with object-oriented-
for me to remember).  He gives a lucid, concise, thorough treatment of
all of the major topics relating to object-oriented software design, and
convincing arguments for the use of object-oriented design as well.

It is not necessary to know or care about Eiffel in order to read the first
parts of this book; they ought to be required reading for people being
introduced to OOP, at least until an OOP book that doesn't cover just one
OOPL comes along.

v   v sssss|| joseph hall                      || 4116 Brewster Drive
 v v s   s || jnh@ecemwl.ncsu.edu (Internet)   || Raleigh, NC  27606
  v   sss  || SP Software/CAD Tool Developer, Mac Hacker and Keyboardist
-----------|| Disclaimer: NCSU may not share my views, but is welcome to.

jima@hplsla.HP.COM (Jim Adcock) (10/04/89)

>Sorry if this doesn't belong here, but could someone please tell me
>exactly what IS Object Oriented Programming or Object Oriented Design ?

What is god? what is motherhood? what is apple_pie? What is jazz?  What is?

1/2 :-)

.....More than half seriously, I'm not sure anyone agrees on what OOP is, but
everyone agrees the other guy isn't doing it.  

See "Genericity vs Inheritance vs Delegation vs Conformance vs..." by
Blair, Gallagher & Malik in Journal Object Oriented Programming Sept/Oct 1989
for what appears to be an intelligent but not easy to read discussion of
what is or isn't in OOP while avoiding taking sides.  [I've scanned this,
haven't really read it yet]

Most articles on "What is Object Oriented Programming" are heavily biased to
define the answer in terms of the author's favorite language.

ech@cbnewsk.ATT.COM (ned.horvath) (10/04/89)

 In article <1989Oct2.161552.14306@polyslo.CalPoly.EDU> jearls@polyslo.CalPoly.EDU (  Stupid  ) writes:
>Sorry if this doesn't belong here, but could someone please tell me
>exactly what IS Object Oriented Programming or Object Oriented Design ?

From article <2109@cbnewsl.ATT.COM>, by dune@cbnewsl.ATT.COM (Greg Pasquariello):
	[ short article deleted ]
> I feel as if I should recommend a book here, but I can't think of one off the
> top of my head.  Hope this helps though!

I can strongly recommend Bertrand Meyer's "Object-Oriented Software
Construction," Prentice-Hall '88.  This is one of the few places I've seen
anyone actually set forth the reasons for doing O-O at all, what kinds of
characteristics one might want in an O-O programming system, etc.  Examples
are all in the author's (commercial) language Eiffel, but the lessons are
pretty much language-independent.  A great intro.

Disclaimer: I have nothing to do with Meyer, UCSB, ISC, or Eiffel (I don't
even own a copy of Eiffel, just the book).

=Ned Horvath=

scc@cl.cam.ac.uk (Stephen Crawley) (10/04/89)

>>Sorry if this doesn't belong here, but could someone please tell me
>>exactly what IS Object Oriented Programming or Object Oriented Design ?
>
>What is god? what is motherhood? what is apple_pie? What is jazz?  What is?
>
> 1/2 :-)
>
>......More than half seriously, I'm not sure anyone agrees on what OOP is, but
>everyone agrees the other guy isn't doing it.

I often refer people to the article "Learning the Language" by Peter Wegner
in the March '89 issue of Byte.  Wegner gives good definitions for lots of 
terms (e.g. object-oriented, object-based, class, abstract data type)
that are commonly used as buzzwords.  In the process of doing this, he 
classifies a number of well established programming languages and systems.

-- Steve

jima@hplsla.HP.COM (Jim Adcock) (10/05/89)

> I can strongly recommend Bertrand Meyer's "Object-Oriented Software
> Construction," Prentice-Hall '88.  This is one of the few places I've seen
> anyone actually set forth the reasons for doing O-O at all, what kinds of
> characteristics one might want in an O-O programming system, etc.  Examples
> are all in the author's (commercial) language Eiffel, but the lessons are
> pretty much language-independent.  A great intro.

I think the Meyer is a good book, worth reading, but heavy on the Eiffel
dogma.  At least read several different books, the Smalltalk books, the
Brad Cox book, a good C++ book like Lippmann, etc, so that all the dogma
you get exposed to from various sources will start to cancel out.  Finally,
spend more than a superficially amount of time programming in the different
languages in order to get over the initial blush of playing with a new toy,
and start finding the real language problems you have to work around --
problems that every language has in one form or another.  Also Journal of
Object Oriented Programming covers several languages each month.

jima@hplsla.HP.COM (Jim Adcock) (10/06/89)

>I often refer people to the article "Learning the Language" by Peter Wegner
>in the March '89 issue of Byte.  Wegner gives good definitions for lots of 
>terms (e.g. object-oriented, object-based, class, abstract data type)
>that are commonly used as buzzwords.  In the process of doing this, he 
>classifies a number of well established programming languages and systems.

I got around to reading the Blair, Gallagher & Malik article, and liked it
a lot.  They make a reasoned argument for a more general discription of
"object oriented" than Wegner.  They also cover a number of the most
recent language issues.

yost@esquire.UUCP (David A. Yost) (10/10/89)

In article <9450002@hplsla.HP.COM> jima@hplsla.HP.COM (Jim Adcock) writes:
>At least read several different books, ... so that all the dogma you
>get exposed to from various sources will start to cancel out.  Finally,
>spend more than a superficially amount of time programming in the different
>languages ...

It's too bad that 99% of us will never have time to do these things
nor have the authority to pick the language we prefer to use, and
so what we end up using will be whatever language musters the most
PR/buzzword/advertising/backward-compatibility/hearsay/availability
momentum.

 --dave yost

jima@hplsla.HP.COM (Jim Adcock) (10/12/89)

> yost@esquire.UUCP (David A. Yost) /  7:23 am  Oct 10, 1989 /
>In article <9450002@hplsla.HP.COM> jima@hplsla.HP.COM (Jim Adcock) writes:
>>At least read several different books, ... so that all the dogma you
>>get exposed to from various sources will start to cancel out.  Finally,
>>spend more than a superficially amount of time programming in the different
>>languages ...
>
>It's too bad that 99% of us will never have time to do these things
>nor have the authority to pick the language we prefer to use, and
>so what we end up using will be whatever language musters the most
>PR/buzzword/advertising/backward-compatibility/hearsay/availability
>momentum.

Well, one technique to learn a bunch of Object Oriented Programming Languages
is to choose one--as you suggest based on PR/buzzword/management-dictate etc,
and then when your programming project fails based on that choice, you then get
to go back and learn another OOPL.  I think for most people, making the 
wrong choice once will either smarten them up enough to make a good choice
the next time, or to drive them out of Object Oriented Programming 
altogether.  Ideally, one would work for a company that knows "on-the-job"
training is the most expensive.  But on-the-job training can be effective too--
just not as cost/time effective.

I would encourage people who make/are-given a bad first choice of OOPLs not
to give up on the field, but rather to go back, study the other languages, and
go for a more reasoned choice the second time.