All Courses
OOP: ABSTRACTION

What is Abstraction?

Abstraction is an OOP principle that hides unnecessary details and shows only what is important to the user.

It helps programmers use a class without understanding every internal step.

Simple Example

When you use a mobile banking app, you press:

Send Money

You do not directly handle:

  • Network connection.
  • Account verification.
  • Transaction logging.
  • Security checks.
  • Database updates.

Those details are hidden behind a simple interface.

That is abstraction.

Abstraction in Code

A class can expose simple public methods and hide complex internal helper logic.

#include <iostream>
using namespace std;

class CoffeeMachine {
private:
    void heatWater() const {
        cout << "Heating water" << endl;
    }

    void grindBeans() const {
        cout << "Grinding beans" << endl;
    }

    void brewCoffee() const {
        cout << "Brewing coffee" << endl;
    }

public:
    void makeCoffee() const {
        heatWater();
        grindBeans();
        brewCoffee();
        cout << "Coffee ready" << endl;
    }
};

int main() {
    CoffeeMachine machine;

    machine.makeCoffee();

    return 0;
}

Output:

Heating water
Grinding beans
Brewing coffee
Coffee ready

What The User Sees

The user only calls:

machine.makeCoffee();

The user does not need to call every internal step manually.

Why Abstraction Is Useful

Abstraction is useful because it:

  • Reduces complexity.
  • Makes code easier to use.
  • Separates interface from implementation.
  • Allows internal code to change without changing user code.
  • Helps large systems stay organized.

Viva Answer

Abstraction means hiding unnecessary implementation details and showing only the essential features or interface. In C++, abstraction can be achieved using classes, public methods, private helper functions, abstract classes, and pure virtual functions.

Quick Check

  1. What does abstraction hide?
  2. What does abstraction expose?
  3. In the coffee example, which method is the simple public interface?