- Introduction - [[Welcome]] - [[Who this course is for]] - [[What to expect from this course]] - [[Exploring object-oriented analysis, design, and development]] - [[Reviewing software development methodologies]] - Core Concepts - [[Why we use object-orientation]] - [[What is an object?]] - [[What is a class?]] - [[What is abstraction?]] - [[What is encapsulation?]] - [[What is inheritance?]] - [[What is polymorphism?]] - Object-Oriented Analysis and Design - [[Understanding the object-oriented analysis and design processes]] - [[Defining requirements]] - [[Introduction to the Unified Modeling Language (UML)]] - Utilizing Use Cases - [[Understanding use cases]] - [[Identifying the actors]] - [[Identifying the scenarios]] - [[Diagramming use cases]] - [[Employing user stories]] - Domain Modeling (Modeling the App) - [[Creating a conceptual model]] - [[Identifying the classes]] - [[Identifying class relationships]] - [[Identifying class responsibilities]] - [[Using CRC cards]] - Creating Classes - [[Creating class diagrams]] - [[Converting class diagrams to code]] - [[Exploring object lifetime]] - [[Using static or shared members]] - Inheritance and Composition - [[Identifying inheritance situations]] - [[Using inheritance]] - [[Using abstract classes]] - [[Using interfaces]] - [[Using aggregation and composition]] - Advanced Concepts - [[Creating sequence diagrams]] - [[Working with advanced UML diagrams]] - [[Using UML tools]] - Object-Oriented Design Patterns - [[Introduction to design patterns]] - [[Example - the singleton pattern]] - [[Example - the memento pattern]] - Object-Oriented Design Principles - [[Introduction to object-oriented design principles]] - [[Exploring general development principles]] - [[Introduction to SOLID principles]] - [[Introduction to GRASP principles]] - Conclusion - [[Reviewing feature support across different object-oriented languages]] - [[Additional resources]] - [[Goodbye]]