CHAPTER I: LESSON 0 – FROM PROCEDURAL PROGRAMMING TO OBJECT-ORIENTED PROGRAMMING

In this lesson, we are going to discuss the evolution of programming approaches and the transition from procedural programming to Object-Oriented Programming (OOP). We will explore the advantages and limitations of procedural programming and understand why OOP has become a standard approach in modern software development. The lesson will introduce fundamental OOP concepts such as classes, objects, properties, methods, encapsulation, inheritance, polymorphism, and abstraction through real-world examples. By the end of the lesson, students will appreciate the importance of OOP in creating organized, reusable, scalable, and maintainable applications.

Procedural and Object Oriented Programming: Differences

Introduction

Programming has evolved significantly over the years. As software systems became larger and more complex, developers needed better ways to organize code, improve maintainability, and reduce redundancy. One of the most influential approaches developed to address these challenges is Object-Oriented Programming (OOP).

Before learning how to implement OOP in PHP, it is important to understand the fundamental concepts behind it and why it has become one of the most widely used programming paradigms in modern software development.

This lesson introduces students to programming paradigms, explores the limitations of procedural programming, and explains how Object-Oriented Programming provides solutions for developing scalable and maintainable applications.


What is a Programming Paradigm?

A programming paradigm is a style or approach used to organize and structure computer programs. It defines how programmers think about and solve problems through code.

Different paradigms provide different methods for organizing logic and data.

Common programming paradigms include:

1. Procedural Programming

Procedural programming focuses on procedures or functions that perform specific tasks. Programs are executed step by step according to a sequence of instructions.

Examples:

  • C
  • PHP (traditional style)
  • Pascal

Characteristics:

  • Uses functions and procedures
  • Follows a top-down approach
  • Data and functions are separate

2. Object-Oriented Programming (OOP)

Object-Oriented Programming organizes code into objects that represent real-world entities.

Examples:

  • PHP
  • Java
  • C#
  • Python

Characteristics:

  • Uses classes and objects
  • Promotes code reusability
  • Improves maintainability

3. Functional Programming

Functional programming treats computation as mathematical functions and avoids changing data.

Examples:

  • Haskell
  • Lisp
  • Scala

4. Event-Driven Programming

Programs respond to events such as button clicks, keyboard input, or user actions.

Examples:

  • JavaScript
  • React
  • Mobile applications

Understanding Procedural Programming

Procedural programming is often the first programming style learned by beginners.

In this approach, a program is divided into functions that perform specific tasks.

Example:

<?php

function calculateTotal($price, $quantity)
{
    return $price * $quantity;
}

$total = calculateTotal(100, 5);

echo $total;

?>

The program executes instructions sequentially.

Advantages of Procedural Programming

  • Simplicity
  • Easy to learn and understand.
  • Faster Development for Small Programs
  • Suitable for simple applications.
  • Less Memory Consumption
  • Generally requires fewer system resources.

Limitations of Procedural Programming

As programs grow larger, several problems emerge.

  • Code Duplication
  • The same code may be repeated multiple times.
  • Difficult Maintenance
  • Changing one feature may require modifying many parts of the system.
  • Poor Scalability
  • Large projects become difficult to manage.
  • Weak Data Security
  • Program data can be accessed and modified from different parts of the code.

Why Modern Applications Need OOP

Consider a school management system.

The system may contain:

  • Students
  • Teachers
  • Subjects
  • Enrollments
  • Grades
  • Payments

In procedural programming, managing these components becomes increasingly difficult as the application grows.

Object-Oriented Programming solves this problem by organizing code into logical units called objects.

Benefits include:

Better Organization

Code is grouped into meaningful structures.

Reusability

Existing code can be reused in different parts of the application.

Easier Maintenance

Errors can be fixed more efficiently.

Scalability

Applications can grow without becoming difficult to manage.

Team Collaboration

Multiple developers can work on different components simultaneously.


Real-World Objects and Software Objects

To understand OOP, think about objects in real life.

Examples:

Object Attributes Behaviors
Car Color, Brand, Speed Start, Stop, Accelerate
Student Name, ID, Course Enroll, Study, Take Exam
Phone Model, Storage, Battery Call, Text, Browse

Every object has:

Attributes

Attributes describe the characteristics of an object.

Examples:

Student:

  • Name
  • Age
  • Course

Car:

  • Color
  • Engine Type
  • Brand

Behaviors

Behaviors describe what an object can do.

Examples:

Student:

  • Study()
  • Enroll()

Car:

  • Start()
  • Brake()

In software development, these attributes and behaviors become properties and methods.


Introduction to Object-Oriented Programming

Object-Oriented Programming is a programming approach where applications are built using objects.

Instead of focusing only on functions, OOP combines data and functionality into a single structure.

The main goal of OOP is to model real-world entities in software.


Fundamental OOP Concepts

1. Object

An object is an instance of a class.

Examples:

  • Student Juan
  • Student Maria
  • Student Pedro

Each student is a separate object.

Think of an object as a real thing that exists.


2. Class

A class serves as a blueprint or template for creating objects.

Example:

A blueprint of a house is not the actual house.

Similarly:

A Student class is not an actual student.

It simply defines:

  • What information students have
  • What actions students can perform

Example Concept:

Class: Student

Properties:
- Name
- Age
- Course

Methods:
- Enroll()
- Study()

3. Property

Properties represent the characteristics of an object.

Examples:

Student:

  • Name
  • Age
  • Course

Car:

  • Brand
  • Color
  • Speed

Properties store information.


4. Method

Methods represent actions that objects can perform.

Examples:

Student:

  • Study()
  • TakeExam()

Car:

  • StartEngine()
  • StopEngine()

Methods contain the behavior of an object.


The Four Pillars of Object-Oriented Programming

Object-Oriented Programming is built around four major principles.


1. Encapsulation

Encapsulation means bundling data and methods together while restricting direct access to internal details.

Think of an ATM machine.

Users can:

  • Withdraw money
  • Deposit money

Users cannot:

  • Access internal banking algorithms

Benefits:

  • Improved security
  • Better organization
  • Controlled access to data

2. Inheritance

Inheritance allows a class to acquire properties and methods from another class.

Example:

Parent Class:

  • Person

Child Classes:

  • Student
  • Teacher

Since students and teachers are both persons, they can inherit common characteristics.

Benefits:

  • Code reuse
  • Reduced duplication
  • Easier maintenance

3. Polymorphism

Polymorphism means “many forms.”

Different objects can perform the same action in different ways.

Example:

Method:

makeSound()

Objects:

Dog → Bark
Cat → Meow
Bird → Chirp

The same method behaves differently depending on the object.

Benefits:

  • Flexibility
  • Extensibility
  • Cleaner code

4. Abstraction

Abstraction means hiding unnecessary details and showing only essential functionality.

Example:

When driving a car:

You use:

  • Steering wheel
  • Pedals
  • Gear shifter

You do not need to understand:

  • Fuel injection process
  • Internal engine mechanisms

Benefits:

  • Simplicity
  • Reduced complexity
  • Better user experience

Comparing Procedural Programming and OOP

Procedural Programming Object-Oriented Programming
Function-centered Object-centered
Data and functions are separate Data and methods are combined
Difficult to maintain large systems Easier to maintain large systems
Limited code reuse High code reuse
Suitable for small projects Suitable for large projects
Less organized for complex systems Highly organized

Applications of Object-Oriented Programming

Today, OOP is used in almost every area of software development.

Web Applications

Examples:

  • Learning Management Systems
  • Online Stores
  • Food Delivery Systems

Mobile Applications

Examples:

  • Android Applications
  • iOS Applications

Desktop Applications

Examples:

  • Microsoft Office
  • Adobe Photoshop

Enterprise Systems

Examples:

  • Banking Systems
  • Hospital Information Systems
  • Inventory Systems

Game Development

Examples:

  • Character Systems
  • Weapons
  • Vehicles

Importance of OOP in PHP Development

Modern PHP frameworks heavily rely on Object-Oriented Programming.

Examples include:

  • Laravel
  • Symfony
  • CodeIgniter 4

Without understanding OOP, developers will struggle to work with modern PHP applications.

By mastering OOP, developers can create:

  • Organized code
  • Reusable components
  • Secure applications
  • Scalable systems
  • Professional web applications

Lesson Summary

Programming paradigms provide different approaches to solving software problems. Procedural programming is effective for small applications, but it becomes difficult to manage as systems grow larger. Object-Oriented Programming addresses these limitations by organizing software into classes and objects that model real-world entities. Through concepts such as classes, objects, properties, methods, encapsulation, inheritance, polymorphism, and abstraction, OOP enables developers to create scalable, reusable, and maintainable applications that meet the demands of modern software development.

Leave a Reply