This book is based on the classic "Walls and Mirrors" approach used in the best-selling Data Abstraction and Problem Solving with C++, and is now updated to the Java programming language. It uses the running theme of "Walls and Mirrors" to help make clear the challenging concepts of recursion (the mirrors) and data abstraction (the walls). Authors Carrano and Prichard cover key object-oriented concepts, including encapsulation, inheritance, and polymorphism. However, the focus of the book remains on data abstraction