This document provides an overview of object-oriented programming (OOP) concepts including class, object, encapsulation, inheritance, polymorphism, and software architectures like MVC. It discusses class design principles like single responsibility, open/closed, and dependency inversion. Common relationships between classes like association, aggregation, and composition are defined. Abstract classes and interfaces are compared. Use cases, class diagrams, and sequence diagrams are introduced in the context of software design.