Agree. OOP is great for packaging libraries, but when it comes to software architecture it's way too easy to shoot yourself in the foot.
One common mistake, which I don't think is emphasized enough, is that modeling the problem and modeling the software are not the same thing. The problem can have a "User" actor, but this doesn't mean at all that the software should also have a User class. And yet you see User classes far too often.
Comments
A lot of good programmers aren't fans of OOP.
Of course, before you can decide whether you're a fan or not, you should understand it. So I'm all for that:)
Agree. OOP is great for packaging libraries, but when it comes to software architecture it's way too easy to shoot yourself in the foot.
One common mistake, which I don't think is emphasized enough, is that modeling the problem and modeling the software are not the same thing. The problem can have a "User" actor, but this doesn't mean at all that the software should also have a User class. And yet you see User classes far too often.