CS202

Object-Oriented Programming

Organizing large programs around objects: classes, encapsulation, inheritance, and polymorphism.

8 modules · 40 lessons · Practice after every lesson

Syllabus

  1. Module 1

    Objects and Data Abstraction

    • Objects as State and Behavior
    • Classes, Instances, and Constructors
    • Fields, Methods, and Object Identity
    • Encapsulation and Representation Invariants
    • Designing Stable Public Interfaces
  2. Module 2

    Class Relationships

    • Association, Aggregation, and Composition
    • Inheritance and Subtyping
    • Method Overriding and Dynamic Dispatch
    • Abstract Classes and Interfaces
    • Favoring Composition Over Inheritance
  3. Module 3

    Polymorphic Design

    • Subtype Polymorphism
    • Parametric Polymorphism and Generics
    • Ad Hoc Polymorphism and Overloading
    • Behavioral Subtyping and the Liskov Principle
    • Designing Against Interfaces
  4. Module 4

    Object Lifecycle and Resources

    • Construction Invariants
    • Object Ownership and Aliasing
    • Copying, Equality, and Hash Codes
    • Immutability and Value Objects
    • Resource Management and Deterministic Cleanup
  5. Module 5

    Errors and Contracts

    • Exceptions as Part of an API
    • Checked and Unchecked Failure Models
    • Defensive Copying and Validation
    • Assertions, Preconditions, and Postconditions
    • Design by Contract in Object Systems
  6. Module 6

    Collections and Generic Components

    • Generic Containers
    • Iterators and Iterable Protocols
    • Comparators and Ordering Strategies
    • Collection Views and Encapsulation
    • Covariance, Contravariance, and Type Safety
  7. Module 7

    Design Principles and Patterns

    • Single Responsibility and Cohesion
    • Open–Closed and Dependency Inversion
    • Factory and Builder Patterns
    • Strategy, State, and Command Patterns
    • Observer, Adapter, and Decorator Patterns
  8. Module 8

    Evolution of Object-Oriented Code

    • Unit Testing Object Collaborations
    • Test Doubles and Dependency Injection
    • Refactoring Class Structures
    • Recognizing Code Smells
    • Balancing Extensibility, Simplicity, and Performance

Start Object-Oriented Programming.

No setup, nothing to install. Try the first lessons before you sign up.