Module 7: Advanced Object-Oriented Concepts
Composition vs Inheritance
Decide when delegation beats inheritance and how to migrate brittle hierarchies toward composition.
Composition wraps functionality from other classes, allowing runtime substitution and better testability.
Refactor deep hierarchies by extracting reusable collaborators (e.g., MovementController, Renderer).
Document design decisions so future maintainers know why composition or inheritance was chosen.