Thinking Like an Object-Oriented Programmer
OOP is a mindset and a process. This course leads you towards understanding its power.
Download Code Files
Lesson 1 - Introduction
Lesson 2 - Establishing Crucial Metaphors
Lesson 3 - Application Lifecycle and Object Orientation
Lesson 4 - Big Upfront Design: Object Oriented Analysis and Design
Lesson 5 - Agile Methodology
Lesson 6 - The Process can Affect the Design
Lesson 7 - Abstracting the Real World into a Domain Model
Lesson 8 - Establishing Roles and Delegating Responsibilities to Objects
Lesson 9 - Contracts, Interfaces and Collaborations
Lesson 10 - Collaborations and Object Role Stereotypes
Lesson 11 - Collaborations: Conditions of Use and After Effect Guarantees
Lesson 12 - Domain vs Application Specific Objects
Lesson 13 - Components as Neighborhoods of Objects
Lesson 14 - Architectural Layers of Responsibility using Objects
Lesson 15 - Designing Objects and Interactions Guided By Principles and Patterns
Lesson 16 - Why Encapsulation?
Lesson 17 - Why Implementation Inheritance?
Lesson 18 - Why Interface Inheritance?
Lesson 19 - Why Polymorphism?
Lesson 20 - Understanding Relationships: Coupling and Dependency
Lesson 21 - Understanding Relationships: Inversion of Control and Dependency Injection
Lesson 22 - Understanding Relationships: Aggregation
Lesson 23 - Understanding Relationships: Composition
Lesson 24 - Understanding the Agile Analysis and Design Process using Visual Studio Team Services
Lesson 25 - Where to Go From Here