
This course introduces learners to the foundational principles and practices of Object-Oriented Programming (OOP), a paradigm that organizes software design around data structures known as "objects." These objects encapsulate both data (attributes) and behavior (methods), allowing for modular, reusable, and maintainable code. The course begins by defining OOP and explaining how it differs from traditional procedural programming by emphasizing abstraction, encapsulation, inheritance, and polymorphism.
Students explore the historical evolution of OOP, tracing its roots from Simula in the 1960s to Smalltalk, Ada, and modern languages like Java, C++, Python, and C#. The course also compares OOP with other programming paradigms such as imperative, declarative, functional, and event-driven programming, helping learners understand the broader context of software development styles.
Key concepts include the design of classes and objects, the use of constructors and methods, and the creation of relationships between objects through inheritance and composition. Learners also examine the merits of OOP, such as improved code organization, scalability, and ease of maintenance, as well as its limitations, including complexity and performance overhead in certain scenarios.
The course further introduces Object-Oriented Databases (OODBs), which store data as objects and support features like persistence, inheritance, and query languages. Hybrid databases and pure object-oriented data models are discussed to illustrate how OOP principles extend into data management systems.
By the end of the course, students will be able to design and implement object-oriented programs, understand the role of OOP in modern software development, and evaluate its suitability for various applications. Practical exercises and examples using languages like Java, Python, and C++ reinforce theoretical knowledge and prepare learners for advanced programming tasks and software engineering roles.
- Teacher: MERCY JEPKEMEI