This text takes a object-oriented approach to teaching data abstraction using C++. It consists of three main sections: an overview, in which the principles of object oriented design and development are presented; the implementation of the various data abstractions including approximately 90 classes; and three case studies. The case studies and integrated examples reinforce other computer science topics, and the discussions of finite automata, program...