¿Cuál es el mejor libro introductorio sobre programación orientada a objetos?

Los tipos son importantes, por lo que evitaría los lenguajes que desestiman su sistema de tipos (como Ruby, Python, PHP y el más sin tipo de lenguajes, JavaScript). La programación sin tipos no escala. Al principio parece fácil, pero se convierte en una trampa en sistemas grandes.

Además, OO no debe considerarse el todo y el final del diseño del programa. Tiene muchas limitaciones serias que están bien abordadas por la programación funcional (FP). La PF está creciendo, pero lentamente, porque las personas la entienden mal y aún no se han dado cuenta de cuán limitantes son realmente los cultivos actuales de idiomas OO (-ish).

Así que te sugiero que pruebes Scala. Admite OO y FP, se ejecuta en la JVM, se encuentra en una etapa de desarrollo que califica como madura y hay bastantes recursos de aprendizaje por ahí. El clásico, “Programación en Scala” es un buen lugar para comenzar, pero es mucho para asimilar. “Scala para pacientes impacientes” también es bueno, y como su nombre indica es un tratamiento más rápido que intenta cubra primero las construcciones más comúnmente utilizadas.

Algunas personas dicen que este es un muy buen libro Construcción de software orientado a objetos (Libro / CD-ROM) (2ª edición): Bertrand Meyer.
Aprendí bien con: Thinking in Java (4th Edition): Bruce Eckel, aunque los conceptos pueden mencionarse en resumen, creo que necesitas un lenguaje para comprenderlos correctamente.