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
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.