This document reviews object-oriented programming principles, contrasting them with procedural paradigms. It explains key concepts such as classes, objects, inheritance, and polymorphism, demonstrating how they contribute to organizing complex systems and reduce their complexity. Additionally, it introduces the Unified Modeling Language (UML) as a standardized method for visualizing, specifying, constructing, and documenting software systems.