skip to main content
Skip header Section
Navigating C++ and object-oriented designOctober 1997
Publisher:
  • Prentice-Hall, Inc.
  • Division of Simon and Schuster One Lake Street Upper Saddle River, NJ
  • United States
ISBN:978-0-13-532748-7
Published:01 October 1997
Pages:
799
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
Abstract

Learn ANSI C++ right from the start!If you're going to learn C++, learn it right from the start! Navigating C++ and Object-Oriented Design is the first book that teaches ANSI C++ and the object-oriented techniques that make C++ a software development breakthrough.This comprehensive tutorial reflects the authors' extensive experience teaching C++ to professional developers. Start with the clearest introduction to object modeling you'll ever read. Then learn all the essentials of C++ and more advanced topics such as exceptions, namespaces, and dynamic memory allocation.Next, discover C++ classes, the basic building block of object-oriented design. Through proven analogies and examples, the authors introduce containment and inheritance, overloading, templates, RTTI, and exception handling. And, the authors' unique presentation on multiple inheritance will give you invaluable insights into this complex topic.Learn to apply C++ and object-oriented techniques to real-world development. Discover how to design classes effectively using the authors' class design boilerplate. Understand how to design container classes. Walk through class designs using the powerful OMT methodology. Along the way, try out the book's extensive exercises and take advantage of the exercise solutions and library of sample code on the accompanying CD-ROM.Navigating C++ and Object-Oriented Design is one of the first C++ tutorials that covers in detail powerhouse ANSI C++ features like: Namespaces, bool, member templates, and RTTI Explicit, export, and nothrow versions of new and delete The IOStream Library and Standard Template LibraryWhy learn C++ simply as a "better C" when you can write C++ code that really meets its potential? One book shows you how: Navigating C++ and Object-Oriented Design!

Contributors

Recommendations

Reviews

Ann E. Fleury

The authors recommend that you read this book sequentially. If you have the patience to persevere through its 799 pages, you will receive all the information you need to safely navigate the rough seas of C++ programming. The book introduces just enough background in object-oriented design to place C++ in context. Each chapter includes a summary of key points, a set of exercises, and a “Putting It All Together” section that develops a program using the new concepts. A CD-ROM contains the examples and solutions to the exercises. The first chapter introduces object-oriented design, including Object Modeling Technique (OMT) notation, using snippets of code to highlight the relationship between object-oriented design and C++. The second chapter presents the language primitives of C++, including such subtleties as the difference between variable declarations and variable definitions and the consequences of where the keyword const is placed. It includes all you will ever want to know about casts and operators. It even includes the goto statement, although the authors suggest that exception handling be used instead. The third chapter covers functions, including recursive functions and member functions. It also introduces storage classes, namespaces, and dynamic memory allocation. Chapters 4 and 5 explain C++ classes, the use of classes for encapsulation, and concepts needed to use classes effectively. They discuss member function calls, the this pointer, copy constructors, and member initialization lists. They explain the use of static objects, pointers, friend classes, and nested classes for designing even more useful classes. Chapter 6 covers function overloading. Chapter 7 builds on the previous chapters to present a boilerplate for class design and demonstrates this boilerplate by constructing a string class and a range of integers class. Chapter 8 considers the allocation and deallocation of dynamic memory. Chapters 9 and 10 present template functions and template classes. Chapter 11 introduces inheritance, using the realistic example of a shipping company that mails packages of various types. This chapter covers not only the commonly used concept of public derivation, but also private derivation and protected derivation. Finally, the chapter introduces polymorphism, illustrating it with a hierarchy of shapes. Chapter 12 introduces runtime type identification as a tool in designing portable class libraries. Chapter 13 explores exception handling, emphasizing the need to make error handling part of the design process. Chapter 14 discusses the controversial topic of multiple inheritance. Appendices summarize the IOStream Library, the Standard Template Library, and operator precedence. Thoroughness is only one strength of the book. The authors illustrate common errors as well as correct code. They carefully cross-reference the sections where more details are available on the current topic. They successfully remove much of the mystery from C++ programming by explaining the purpose of seemingly arbitrary rules of syntax and style. Whenever relevant, they explain the algorithms used by the compiler. The only error I discovered was an incorrect three-dimensional storage map equation (p. 101). The authors attempt “to provide a C++ reference book, a tutorial for C++ beginners, and an advanced book—all in one” (p. xix). This is an exceptional advanced book that will double as a reference book. If you are a beginner, however, I would suggest finding another introductory text. After you have written some C++ programs, you will be able to return to this book with enough background to appreciate its strengths.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.