kittypie
recommended this
This was the first programming book I ever read, and I urge all new programmers to read it, even if you don't plan to use Java. It's a wonderful overview of Object Oriented programming and best practices. There is nothing else like it.