[comp.lang.c++] Object Oriented Program Design With Examples in C++, Mullin

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