Object-Oriented Programming 
José M. Garrido
Charles River Media
This thorough text teaches the fundamental principles of object-oriented programming using Java. The author uses pseudo-code to describe each problem's solution, and then asks readers to implement the solution using actual Java code.