The primary aim of this book is to introduce the fundamental aspects of object-oriented programming and design, using the language C++ as a vehicle. It is widely recognized that there is more to programming than just writing code and so a second aim of the text is to introduce some principles of software engineering, primarily those of problem solving, abstraction, design and testing - developing Apprentice Software Engineers who see these aspects as a natural and inherent part of constructing software systems. The fundamental approach in the book is the use of types and objects, and the use of these concepts pervades the whole learning process covered in the book, from problem comprehension and solution design, through to implementation. A design notation is introduced that is used throughout the book to aid the understanding and development of Programmer Defined Types (PDTs) as well as program statements that make use of these PDTs. The book allows the reader to develop a "toolkit" of useful paradigms and algorithms. These building blocks can then be used to implement simple but useful programs.
The theory is supported by numerous examples and exercises, together with specimen answers. The book concludes with a number of major worked-through software projects. An accompanying lab manual and disk provides material for both practical classes and homework study.