Object-Oriented Analysis, Design and Implementation: An Integrated Approach (Undergraduate Topics in Computer Science)
The second edition of this textbook includes revisions based on the feedback on the first edition. In a new chapter the authors provide a concise introduction to the remainder of UML diagrams, adopting the same holistic approach as the first edition.

Using a case-study-based approach for providing a comprehensive introduction to the principles of object-oriented design, it includes:

A sound footing on object-oriented concepts such as classes, objects, interfaces, inheritance, polymorphism, dynamic linking, etc.
A good introduction to the stage of requirements analysis
Use of UML to document user requirements and design
An extensive treatment of the design process
Coverage of implementation issues
Appropriate use of design and architectural patterns
Introduction to the art and craft of refactoring
Pointers to resources that further the reader's knowledge

The focus of the book is on implementation aspects, without which the learning is incomplete. This is achieved through the use of case studies for introducing the various concepts of analysis and design, ensuring that the theory is never separate from the implementation aspects.

All the main case studies used in this book have been implemented by the authors using Java. An appendix on Java provides a useful short tutorial on the language.