Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!uwm.edu!gem.mps.ohio-state.edu!ginosko!uunet!zephyr.ens.tek.com!orca!demiurge!brucec From: brucec@demiurge.WV.TEK.COM (Bruce Cohen;685-2439;61-028) Newsgroups: comp.lang.c++ Subject: Re: OO Design books Keywords: OOP, OOD, books Message-ID: <4557@orca.WV.TEK.COM> Date: 14 Sep 89 23:45:56 GMT References: <583@calmasd.Prime.COM> Sender: nobody@orca.WV.TEK.COM Reply-To: brucec@demiurge.WV.TEK.COM (Bruce Cohen) Organization: Tektronix, Inc., Wilsonville, OR Lines: 38 In article <583@calmasd.Prime.COM> wlp@calmasd.Prime.COM (Walter Peterson) writes: >In previous postings I have taken some people to task for the object >models that they have presented on the net and I believe that the main >reason for these poor models has been a lack of understanding of the >general principles of OOD and excessive concentration on the mechanics >of a particular language. There is also a regrettable tendency even among the well-informed to be careless in their use of OO terminalology (even when the proponents of different languages agree on the meaning of the terms). I find a classic (pun intended) example of this just today in the Lippman book. I could not remember how to mix member initializations with arguments to superclass constructors in a constructor definition, and I spent fifteen minutes finding the right section in the book, because the title of the section is "Class Initialization", which I took to mean initializing a class's classvars, not the initialization of instances of a class. Now, as you can see from *my* terminology, I learned Smalltalk as a first OOL, and I tend to hark back to it. I find that I have to sometimes, because C++ terminology is either impoverished (I'd much rather say "superclass", than "immediately ancestral base class"), or the meaning of terms is fuzzy from ambiguous use (many people use "object" and "class" interchangeably to mean "instance of class object"). Be clear that I'm not picking on Lippman; his book is my standard reference for the syntax and semantics of C++, and has been since the day I got it. I am saying that there is a body of theory and practice in OO languages, systems, and programming, and that much of that existed before C++, and is applicable to C++. Not applying it means that distinctions not clearly made by the programming language are not clear to the designer/programmer, who has no other abstractions to use in thinking about these areas. This makes such areas a source of loss of expressiveness and design options, and potentially even a source of error in programming. Bruce Cohen brucec@orca.wv.tek.com Interactive Technologies Division, Tektronix, Inc. M/S 61-028, P.O. Box 1000, Wilsonville, OR 97070