This course teaches principles and practices of advanced object-oriented design and programming.
Students learn the following concepts:
Class-Level
-
Method design
-
Class design
-
Classes and interfaces
-
Subtyping and inheritance
-
Implementing inheritance
-
Design by contract
Collaboration-Level
-
Values vs. objects
-
Role objects
-
Type objects
-
Object creation
-
Collaboration-based design
-
Design patterns
Component-Level
-
Error handling
-
Meta-object protocols
-
Frameworks and components
-
Domain-driven design
-
API evolution