Thinking Like an Object-Oriented Programmer

In this first of a series of courses on Object Oriented Programming, Bob Tabor presents the rationale for a more conceptual starting point to learning OOP. In this course he talks about the concepts and processes of Object Oriented Analysis, Design and Programming, abstraction of the real world into a conceptual model, the philosophy of object orientation, establishing roles and delegating responsibilities to objects that work together in community to accomplish tasks outlined in use cases. He talks about the tenets of Object Oriented Programming, discussing encapsulation, composition, inheritance (both implementation and interface inheritance), polymorphism, aggregation, and how these tenets play a role in higher level principles and design patterns.
Lifetime Membership

Lifetime Membership


This option provides full access to *all* courses on DevU (including any new courses that are added) for a lifetime. Lifetime members also may download the course videos in .MP4 format for offline viewing.

1 Year Membership

1 Year Membership


This option provides full access to *all* courses on DevU (including any new courses that are added) for 1 year.

Just This Course

Thinking Like an Object Oriented Programmer Course


This option provides full access to the "Thinking Like an Object Oriented Programmer Course" on DevU forever.

Lessons in this Course

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