Object Oriented Software Development Using Java, 2/E by Xiaoping Jia
http://www.aw.com/productpage?ISBN=0201737337 Object-Oriented Software Development Using Java focuses on
developing skills in designing software-particularly in
writing well-designed, medium-sized object-oriented
programs. It provides a broad and coherent coverage of
object-oriented technology, including object-oriented
modeling using the Unified Modeling Language (UML),
object-oriented design using Design
Patterns, and
object-oriented programming using Java.