From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,7f8fc37d854731d6 X-Google-Attributes: gid109fba,public X-Google-Thread: 1108a1,7f8fc37d854731d6 X-Google-Attributes: gid1108a1,public X-Google-Thread: 103376,7f8fc37d854731d6 X-Google-Attributes: gid103376,public X-Google-Thread: 114809,7f8fc37d854731d6 X-Google-Attributes: gid114809,public X-Google-Thread: 10461e,7f8fc37d854731d6 X-Google-Attributes: gid10461e,public From: Alan Lovejoy Subject: Re: Interesting but sensitive topic to discuss (HELP: - OOP and CASE tools) Date: 1996/11/06 Message-ID: <328109CD.6685@concentric.net>#1/1 X-Deja-AN: 194947807 references: <32813322.41C6@kyebek3.kjist.ac.kr> <55pqr5$136a@grimsel.zurich.ibm.com> content-type: text/plain; charset=us-ascii organization: Modulation mime-version: 1.0 newsgroups: comp.object,comp.lang.c++,comp.lang.ada,comp.lang.smalltalk,comp.ai x-mailer: Mozilla 2.01Gold (Win95; U) Date: 1996-11-06T00:00:00+00:00 List-Id: Paul_Gover@uk.ibm.com wrote: > > In <32813322.41C6@kyebek3.kjist.ac.kr>, Dong Oh Kim writes: > > ... > >Let me have your opinions about followings: > > > > 1. Is everything OK with existing oo development methods? > > If not, what are needed? and what stage should be enforced in the > > future,i.e,analysis or design,etc...? > > ... > > OK, here's my 2 cents: most OO development methods concentrate too much > on objects and too little on classes. This obstructs investigation of > inheritance and polymorphism, making it hard to attain the benefits of OO. > IMHO, in many cases this is because the design method derives from some > entity modelling tool from before the days of OO, and entities are objects, > not classes. Objects are objects, not classes. OO programs are systems of interacting **objects**, not systems of interacting **classes**. The architecture and design of a program is a function of what **objects** it contains and how they interact. What classes these objects may or may not be instances of is a separate issue--a fact which becomes obvious in a Self program, for example. What matters is the **interface** supported by each object, and the **role** each object plays in the program. Note that two objects may support the same interface, but be instances of different classes and/or play different roles. Class inheritance is an abstraction mechanism for code sharing. It has nothing much to do with architecture or design of a program. Proof: any program using class inheritance can easily be converted into a completely equivalent program where all the leaf classes are root classes: one simply duplicates all the inherited methods in each leaf class. Of course, this requires either dynamic typing or Java-like interfaces, but that's a different issue. It's true that static typing and improperly using classes as type constraints "obstructs investigation of...polymorphism, making it hard to attain the benefits of OO." But blaming that on OO methodologies that focus on objects instead of classes is unjustified. -- Alan L. Lovejoy |==============================================| Smalltalk Consultant | Beware of Geeks bearing GIFs! | alovejoy@concentric.net |==============================================|