This book is rather naive. It starts with a quote by, the inventor of Smalltalk, Alan Kay. The book focuses on Java.
Smalltalk is a message-passing language. Java is a method-calling language.
A book about object-oriented programming that doesn't distinguish between message-passing and method-calling fails to express how languages like Ruby and Objective-C work.
Excellent point. I think that more generally, as it relates to what a student might be interested in, it fails to address the fundamental question "why am I learning this?"
I think if I were going to design a book or course in object-oriented programming I would either approach top-down using a dynamic language or bottom-up with C. In the top-down version I would focus on the advantages of OOP as a discipline and why seemingly arbitrary restrictions really are useful (not just some hand-waving about static type checking) Going the other way, I'd have them write method dispatchers and basically implement classes without the features of modern object-oriented languages and then discuss OO languages in terms of the features they provide to simplify that style.
Smalltalk is a message-passing language. Java is a method-calling language.
A book about object-oriented programming that doesn't distinguish between message-passing and method-calling fails to express how languages like Ruby and Objective-C work.