- Published on
Understanding Object-Oriented Programming
- Authors
-
-
- Name
- by Hamza El Idrissi
-
Just like many of us, I began my coding journey with procedural programming. It’s like learning the basics of handling a bicycle before even thinking about a motorcycle. It’s straightforward and logical, making it an excellent starting point for anyone new to programming. However, as you progress and your projects become more complex, you’ll inevitably encounter the need for a more sophisticated toolset – that’s where Object-Oriented Programming (OOP) comes into play.
What is OOP?
It is a paradigm that consists of modeling a problem with a set of objects:
OOP ≡ (SET OF OBJECTS AND THE INTERACTIONS BETWEEN THESE OBJECTS)
- An object represents a concept, an idea, or any entity from the physical world (a car, a person, or even a page of a book).
- OOP is easily conceivable because it describes entities as they exist in the real world.
- The program is built around objects that combine data (attributes) and actions (methods).
Advantages of OOP: ease of organization, reusability, inheritance capability, ease of correction, easier to manage projects.
- OOP allows securing a program by either allowing or prohibiting access to these objects by other parts of the program.
What is an Object?
It is a data structure responsible for managing data, organizing it, and storing it in a certain form:
OBJECT ≡ IDENTITY + STATE (attributes) + BEHAVIOR (member methods)
-
Identity: An object has an identity that allows it to be distinguished from other objects, regardless of its state.
-
Attributes: These are the data characterizing the object. They are variables that store information about the object’s state.
-
Methods (member functions): An object’s methods characterize its behavior, i.e., the set of actions that allow:
- To consult, modify, etc.… the object’s state (the values of the attributes),
- To communicate with other objects by sending messages to perform a process…
-
Communications between objects are synchronous: The calling object waits for a response before being able to do something else.
What is a Class?
Objects of the same nature belong to the same family called Class:
CLASS ≡ (Abstraction of a set of objects sharing a common structure and common behavior)
CLASS ≡ INSTANTIATION + ATTRIBUTES (instance variables) + MEMBER METHODS
- Instantiation: represents the relationship between an object and its belonging class that allowed its creation.
- Attributes (also called instance variables): They have a name and a type: either a basic type (simple or constructed), or a class (the attribute references an object of the same or another class).
- Member methods: They are the operations applicable to an object of the class. They can modify all or part of an object’s state and return calculated values based on that state.
Inheritance:
Inheritance (class derivation): the mechanism that allows creating a class (derived class, subclass, or child class) from an existing class (superclass or parent class).
Inheritance ≡ (Generalization/Specialization relationship between classes)
- Inheritance is like passing down family traits from one generation to the next. Children inherit characteristics, skills, and sometimes even responsibilities from their parents.
Types of Inheritance
-
Single Inheritance: a class can inherit only one superclass.
-
Multiple Inheritance: some object-oriented languages, such as C++, allow for multiple inheritance, which means they offer the possibility of inheriting a class from two or more superclasses. This technique allows grouping attributes and methods of multiple classes into a single class.
-
Example: Think of a family tree where the superclass represents common traits passed to all descendants.
Polymorphism:
It is the object’s ability to belong to multiple classes:
POLYMORPHISM ≡ (OBJECT’S ABILITY TO HAVE MULTIPLE FORMS)
- Polymorphism is like a universal remote control. It doesn’t matter what brand or model your TV is; the remote can control them all. In programming, polymorphism allows you to interact with different objects in a consistent way, regardless of their specific types.
Types of Polymorphism
- Ad-hoc polymorphism (overloading)
- Parametric polymorphism (generics)
- Inheritance polymorphism (overriding)
Encapsulation:
It is a mechanism (also called abstraction) that involves grouping data and methods within a structure while hiding the object’s implementation.
ENCAPSULATION ≡ DATA PROTECTION (public or private)
-
Encapsulation is like a car’s dashboard. When you drive a car, you don’t need to know how the engine works; you interact with the dashboard, which provides access to essential controls while hiding the complex machinery underneath.
-
Encapsulation allows defining visibility levels for class elements to provide access rights to data via a method of the class itself, a subclass, or any class.
Visibility Levels
-
Public: functions from all classes can access the data or methods of a class defined with public visibility.
-
Protected: only member functions of the subclass and its descendants can access the data.
-
Private: only methods of the class itself can access the data.
-
These visibility levels are like different levels of access to the dashboard controls: public (anyone can use them), protected (only authorized users), and private (only the driver).