Basic Concepts of Object-Oriented Programming (OOP)
Object-Oriented Programming (OOP) is a programming paradigm that uses “objects” – data structures consisting of fields, properties, and methods – to design applications and computer programs. OOP offers a clear modular structure for programs, making it easy to maintain and modify existing code. The four main pillars of OOP are encapsulation, inheritance, polymorphism, and abstraction. Example codes are in Python coding
Encapsulation
Encapsulation is the concept of bundling the data (variables) and methods (functions) that operate on the data into a single unit called an object. It restricts direct access to some of the object’s components, which is a way of preventing accidental interference and misuse of the data.
class Car:
def __init__(self, make, model, year):
self.__make = make
self.__model = model
self.__year = year
def get_car_info(self):
return f"{self.__year} {self.__make} {self.__model}"
my_car = Car("Toyota", "Corolla", 2020)
print(my_car.get_car_info()) # Output: 2020 Toyota Corolla
In this example, the car’s make, model, and year are encapsulated within the Car class. They are accessed through the get_car_info
method, not directly.
Inheritance
Inheritance is a mechanism where a new class inherits the properties and methods of an existing class. This helps in code reusability and the creation of a hierarchical relationship between classes.
Example:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return f"{self.name} says Woof!"
class Cat(Animal):
def speak(self):
return f"{self.name} says Meow!"
dog = Dog("Buddy")
cat = Cat("Whiskers")
print(dog.speak()) # Output: Buddy says Woof!
print(cat.speak()) # Output: Whiskers says Meow!
In this example, Dog
and Cat
classes inherit from the Animal
class. They each have their own implementation of the speak
method.
Polymorphism
Polymorphism allows objects of different classes to be treated as objects of a common superclass. It provides a way to perform a single action in different forms.
Example:
class Bird:
def fly(self):
return "Bird is flying"
class Airplane:
def fly(self):
return "Airplane is flying"
def make_it_fly(entity):
print(entity.fly())
bird = Bird()
airplane = Airplane()
make_it_fly(bird) # Output: Bird is flying
make_it_fly(airplane) # Output: Airplane is flying
In this example, both Bird
and Airplane
have a fly
method. The make_it_fly
function can call the fly
method on any object that has it, demonstrating polymorphism.
Abstraction
Abstraction is the concept of hiding the complex implementation details and showing only the essential features of the object. It allows the user to interact with the object at a high level without needing to understand the complexities of the underlying code.
Example:
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
rectangle = Rectangle(5, 10)
circle = Circle(7)
print(rectangle.area()) # Output: 50
print(circle.area()) # Output: 153.86
In this example, Shape
is an abstract class with an abstract method area
. Rectangle
and Circle
are concrete classes that implement the area
method, providing specific implementations for calculating the area.
Conclusion
Understanding the four pillars of OOP—encapsulation, inheritance, polymorphism, and abstraction—provides a strong foundation for designing and developing robust and scalable software. These principles help create a modular and reusable codebase, making it easier to maintain and extend over time.
For more insights and detailed tutorials on software development, visit Marenah.com.
Resources
- Python OOP Documentation
- Java OOP Concepts (For Java)
- OOP Principles Explained – How to explain object-oriented programming concepts to a 6-year-old – From FreeCodeCamp.org