REVIEW - C++ Program Design - An Introduction to Programming and Object-Oriented Design

Title:

C++ Program Design - An Introduction to Programming and Object-Oriented Design

Author:

James P. Cohoon, Jack Winfred Davidson

ISBN:

0071161473

Publisher:

McGraw-Hill (1999)

Pages:

896pp

Reviewer:

Francis Glassborow

Reviewed:

February 2000

Rating:

★★☆☆☆

I am unhappy with the title of this book. In fact the substance of the text is a perfectly respectable introduction to C++. It isn't the way I would introduce the subject because the authors lean heavily on simple arithmetical programs which are certainly easy to grasp but are hardly exciting to the ordinary novice and serve to consolidate the myth that programming is about arithmetic.

On the positive side, the authors do use the full power of standard C++ including use of the string class and the STL. The text comes with a graphical API from the author called EzWindows which is provided for MSWindows, Unix systems and Macintosh computers. I have not had time to test this on more than MSWindows but it certainly allows the novice to focus on C++ programming while enjoying the benefits of some graphical programming. Sadly there are several fundamental flaws in the implementation. The most significant of these is the failure to provide any virtual destructors in base classes. Indeed the authors seem to have a blind spot (and by deduction so did their technical reviewers) where it comes to the concept of virtual functions. They do not even touch on the subject until sometime after they have started covering template functions.

The pace of the text accelerates alarmingly. It isn't until page 363 that the authors start coverage of writing your own class. Inheritance has to wait till page 659. The main text finishes on page 791. In other words all the big stuff that makes C++ such a powerful language is squeezed into the last sixth of the main text. I think this book has a lot going for it so it is a shame that some of the flaws lie in areas where good programming is important. It also sadly reflects on the authors' own C++ that their own code is flawed this way. None-the-less it is a good candidate for introducing programming virgins to C++ as long as they are warned that the book falls short in some places and that the authors' code needs some serious work.


Book cover image courtesy of Open Library.