- "Object-oriented software construction" by Bertrand Meyer
Most fundamental work about object-orientation ever published. This is absolutely must have book for every "object-oriented" programmmer.
2.
"Object-Oriented Analysis and Design with Applications" by Grady Booch et al
Not so formal as Meyer's book, but this book can open your eyes on many questions in object-oriented world and in software development in general
3.
"Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma et al.
This is famous "Gang of Four" book about design patterns
4.
"Refactoring: Improving the Design of Existing Code" by Martin Fowler et al.
This is another classical book. First part perfectly describe many problem that modern software developer may faced during his work: code smells, readability vs performance, premature optimization drawbacks and many other topics.
5.
"Thinking in Java" by Bruce Eckel
This book may help many beginners not only in Java language but in object-oriented way of thinking too.
6.
"Touch of Class: Learning to Program Well with Objects and Contracts" by Bertrand Meyer
Excellent textbook by famous author.