Re: He's right about black boxes and over-abstraction though
> Then you're doing OO badly.
That seems to be a "no true Scotsman" defence of OO. I was talking about the OO that I encounter in existing programs I need to debug and/or modify. I would agree with you, though, that OO can be helpful as long as its essential features aren't overused.
> Those data objects are "dumb" with little to no business logic. The business logic is all in service classes. Those data objects rarely use inheritance, and the service classes the same.
What I, as a C programmer, would term data and functions.
> Inheritance is not something that most classes need, and it should be made clear that ... it's to be avoided where possible.
Couldn't agree more. Just as the goto statement should be avoided where possible in C programs. Though for advanced users, there are legitimate uses both for goto and inheritance, as you point out in the bit I elided.
I think we're in violent agreement regarding most of these things. It's worth pointing out that Paul Graham, the Lisp hacker, once wrote he had never once used the OO constructs in Common Lisp, despite these being full-featured. OO is a _choice_, not a necessity.