vanandel@stout.ucar.edu (Joe Van Andel) (09/12/89)
I saw yet another book on OOD/OOP , "Object Oriented Program Design with Examples in C++", by Mullin, in a bookstore, and was curious if any comp.lang.c++ readers had read the book, and would venture an opinion. Apparently, the author is concentrating on OOD, and assumes you will read another book to learn C++ syntax. I noticed that the author didn't discuss multiple inheritance in any detail, even though the book was just published this year. Thanks in advance, I've appreciated other mini book reviews in comp.lang.c++ Joe VanAndel Internet:vanandel@ncar.ucar.edu NCAR - RSG P.O Box 3000 Fax: 303-497-2044 Boulder, CO 80307-3000 Voice: 303-497-2071 Joe VanAndel Internet:vanandel@ncar.ucar.edu NCAR - RSG P.O Box 3000 Fax: 303-497-2044 Boulder, CO 80307-3000 Voice: 303-497-2071
wlp@calmasd.Prime.COM (Walter Peterson) (09/12/89)
In article <4275@ncar.ucar.edu>, vanandel@stout.ucar.edu (Joe Van Andel) writes: > I saw yet another book on OOD/OOP , "Object Oriented Program > Design with Examples in C++", by Mullin, in a bookstore, and was curious if > any comp.lang.c++ readers had read the book, and would venture an opinion. > Apparently, the author is concentrating on OOD, and assumes you will read > another book to learn C++ syntax. I noticed that the author didn't discuss > multiple inheritance in any detail, even though the book was just published > this year. > I saw that book a few days ago and at first hoped that someone had finally written a book that would concentrate on good OO design principles. I was soon disappointed. Having seen several very bad and several not-so-hot OOP books lately, I took a good bit of time in the book store to check this one out. One of the first thing that I looked for was what the author had to say about multiple inheritance. I have found that the proper design of multiple inheritance is one of the hardest things to get accross to people, so I wanted to see what this book had to say. You say he didn't discuss it in any detail; now that is an understatement! Basically he said that this thing called multiple inheritance exists, but ( this is not a direct quote, but it does convey the 'feel' of what the book says ) that it was not yet common enough nor 'firmed-up' enough to talk about. Excuse me ? C++ has multiple inheritance, several implementations of Smalltalk have it, Eiffel has it, CLOS and Flavors have it, DSM has it,... Not common enough ? Not 'firmed-up' enough ? These are, for the most part, commercially released products; some of them very successful. The rest of the book did not seem to be anything worth writing home about either. The few object models that were presented were too trivial and too poorly illustrated to be of much help to someone who is trying to learn OOP. I have found that teaching OOP and especially OO design requires very good object models and lots of meaningfull diagrams. I also do not feel that a book that is trying to teach the basic principles of Object-oriented design and the object paradigm should make exclusive use of any one language, even if it *IS* C++. Examples should be drawn from C++, Smalltalk, CLOS, Flavors, Eiffel, and so on. They all have different things to offer and different approaches to the same OO concepts. Frankly however, the omission of any meaningfull discussion of multiple inheritance invalidates any claim that this book may have to teaching OO design. Claiming to teach OO design and not teaching multiple inheritance is nonsense. It is like not teaching records and structures because they are done differently in Pascal, COBOL, PL/I and C and some languages like FORTRAN still don't have them. Poppycock ! Could you imagine buying a data structure book that made such a statement ? No, neither could I. Multiple inheritance may not be needed nor used all that often, but when it is needed, it had better be done correctly or you'll end up with a real mess ( I've posted about this at length here before, so I'll cut this preaching short for now. ) I have still not found a good or even adequate OO design book. I KNOW there is a market for one, simply because of the number of people who ask me to recommend one to them ! So far I have had to answer that there isn't a good one. There still isn't. -- Walt Peterson. Prime - San Diego R&D (Object and Data Management Group) "The opinions expressed here are my own."
sakkinen@tukki.jyu.fi (Markku Sakkinen) (09/18/89)
In article <576@calmasd.Prime.COM> wlp@calmasd.Prime.COM (Walter Peterson) writes: >In article <4275@ncar.ucar.edu>, vanandel@stout.ucar.edu (Joe Van Andel) writes: >> I saw yet another book on OOD/OOP , "Object Oriented Program >> Design with Examples in C++", by Mullin, in a bookstore, and was curious if >> [...] > [...] >I have found that the proper design of multiple inheritance is one of >the hardest things to get accross to people, so I wanted to see what >this book had to say. You say he didn't discuss it in any detail; now >that is an understatement! Basically he said that this thing called >multiple inheritance exists, but ( this is not a direct quote, but it >does convey the 'feel' of what the book says ) that it was not yet >common enough nor 'firmed-up' enough to talk about. Excuse me ? >C++ has multiple inheritance, several implementations of Smalltalk have it, >Eiffel has it, CLOS and Flavors have it, DSM has it,... Not common >enough ? Not 'firmed-up' enough ? These are, for the most part, >commercially released products; some of them very successful. > [...] Please calm down a little! Have you ever written a book yourself? Even if not, you might imagine that it takes some time from the basic concepts and outline of a book, to actual writing, to the publisher's copyediting, to printing, until the book is actually in the shops. Now, multiple inheritance exists in C++ only since 30 June this year when release 2.0 appeared (in USA, I have no idea when we Europeans have a chance to see it). It is absurd to blame an already published book for not handling that feature. I do personally believe in multiple inheritance, but I can understand that somebody considers it not to be well "firmed-up" today. It is handled differently in almost all existing languages and systems that incorporate it. What is worse, most of the approaches seem to have some fundamental flaws; see e.g. Alan Snyder, "Inheritance and the Development of Encapsulated Software Components" (in Reasearch Directions in Object-Oriented Programming, ed. by Shriver and Wegner). If the MI scheme of C++ really is like it was presented in an earlier paper by Stroustrup, it happens to be one of the best in my opinion (see my paper, "Disciplined Inheritance", in ECOOP'89). > [...] >I have still not found a good or even adequate OO design book. I KNOW >there is a market for one, simply because of the number of people who >ask me to recommend one to them ! So far I have had to answer that >there isn't a good one. There still isn't. Does that mean you condemn even Meyer's book (Object-oriented Software Construction)? I am not the only one who thinks highly of it in general. However, as has been brought up in the current discussions in comp.lang.eiffel, Meyer does not give a very good picture of multiple inheritance: the very first example is one where multiple inheritance should not be applied in the first place. Markku Sakkinen Department of Computer Science University of Jyvaskyla (a's with umlauts) Seminaarinkatu 15 SF-40100 Jyvaskyla (umlauts again) Finland