CMSC 203 Module 1
CMSC 203 Module 1
CMSC 203 Module 1
Programming
CMSC 203 – Object-Oriented Programming
Module 1
Programming Paradigm
• Fundamental style or approach
• Dictates how developers write and structure code
Procedural Programming
• Based on the concepts of procedure calls.
• Program is composed of a series of procedure.
Characteristics of Procedural
Programming
• Sequential
• Functions and Procedures
• Global State
Functional Programming
• Treats computation as the evaluation of mathematical
functions.
• Avoid changing-state and mutable data
Characteristics of Functional
Programming
• Immutability
• First Class Function
• Pure Functions
Object-Oriented Programming
• Organizes software around data, or objects, rather than
functions and logics.
Characteristics of Object-Oriented
Programming
• Encapsulation
• Inheritance
• Polymorphism
• Abstraction
Event-Driven Programming
• The flow of program is determined by events such as
user actions, sensor outputs, or message passing.
Characteristics of Event-Driven
Programming
• Event Handlers
• Event Loop
• Asynchronous Execution
Origins of OOP
Simula (1960s)
• Ole-Johan Dahl and Kristen Nygaard
• Introduced foundational concepts like classes, objects,
inheritance, and polymorphism.
• Laying the foundation for future OOP Languages
Smalltalk (1970s)
• Alan Kay
• The first pure object-oriented programming
• Message Passing between Objects
• Introduce dynamic typing
• Solidifying OOP principles
Rise of OOP
C++ (1980s)
• Bjarne Stroustrup
• Combined the efficiency of C with object-oriented
features.
• Introduced constructors, deconstructors, and operator
overloading.
Objective C
• Brad Cox and Tom Love
• Combined Smalltalk’s object-oriented capabilities with
the C programming language
• The primary language for Apple software development
for many years.
Modern Era of OOP
Java (1990s)
• James Gosling
• Introduced features like automatic garbage collection
and a rich standard library
• Further popularizing OOP concepts
Python and Other Languages
• Evolved to effectively support OOP principles
• Expanded upon OOP principles, leading to their
widespread adoption in modern software development.
Advantages of OOP