I’ve been thinking lately about the ways that different authors explain OOP. I’ve drawn a little diagram that I would like to share with you.
The sources for this are, in no particular order:
- Eric Evans, DDD Reference
- Ivar Jacobson, Object-Oriented Software Engineering
- Peter Coad, Archetypes, Color, and the Domain-Neutral Component
- Rebecca Wirfs-Brock, Characterizing Classes
- Steve Freeman, Nat Pryce, Growing Object-Oriented Software
- Vaughn Vernon, Implementing DDD
Each of these authors has a perspective I find useful. I would love it if there was a comprehensive, single model, but so far I can’t see how to systematize them.
It gets weirder when you start collecting design principles… I might do a mind map of those some day. Somehow I can see how SOLID and GRASP (for instance) are compatible. They are pointing in the same general direction, but from different angles.