< previous page page_xii next page >

Page xii
Chapter 16 extends the concepts of data abstraction and C++ classes to an exploration of object-oriented software development. Object-oriented design, introduced briefly in Chapter 4, is revisited in greater depth. Students learn to distinguish between inheritance and composition relationships during the design phase, and C++ derived classes are used to implement inheritance. This chapter also introduces C++ virtual functions, which support polymorphism in the form of run-time binding of operations to objects.
Chapter 17 examines pointer and reference types. We present pointers as a way of making programs more efficient and of allowing the run-time allocation of program data. The coverage of dynamic data structures continues in Chapter 18, in which linked lists, linked-list algorithms, and alternative representations of linked lists are presented.
Chapter 19 deals with recursion. There is no consensus as to the best place to introduce this subject. We believe that it is better to wait until at least the second semester to cover this topic. However, we have included recursion for those instructors who have requested it. Although Chapter 19 is the last chapter, we divide the examples into two parts: those that require only simple data types and those that require structured data types. Instructors can cover the first part after Chapter 8. The second part contains examples from simple arrays to dynamic linked lists. These examples could be used individually after the appropriate chapter (for example, simple arrays after Chapter 11) or as a unit after Chapter 18.
Additional Features
Goals Each chapter begins with a list of learning objectives for the student. These goals are reinforced and tested in the end-of-chapter exercises.
Special Sections Five kinds of features are set off from the main text. Theoretical Foundations sections present material related to the fundamental theory behind various branches of computer science. Software Engineering Tips discuss methods of making programs more reliable, robust, or efficient. Matters of Style address stylistic issues in the coding of programs. Background Information sections explore side issues that enhance the student's general knowledge of computer science. May We Introduce sections contain biographies of computing pioneers such as Blaise Pascal, Ada Lovelace, and Grace Murray Hopper.
Problem-Solving Case Studies Problem solving is best demonstrated through case studies. In each case study we present a problem and use problem-solving techniques to develop a manual solution. Next, we expand the solution to an algorithm, using structured design and/or object-oriented design, and then we code the algorithm in C++. We show sample test data and output and follow up with a discussion of what is involved in thoroughly testing the program.

 
< previous page page_xii next page >