Vito Solin
  • Portfolio
  • Blog

© 2025 Vito Solin. All rights reserved.

← Back to Blog
cpp

OOP Gak Serumit Itu

October 29, 2025

1. Sebelum Ada OOP: Dunia yang Berantakan

Bayangin kamu kerja di restoran. Ada kasir, koki, pelayan, dan pelanggan. Kalau semuanya teriak bareng di dapur, gak ada aturan, semua orang pegang bahan makanan sembarangan, yang ada kekacauan.

Nah, program komputer juga gitu. Kalau semua logika dicampur jadi satu, nanti susah banget diatur dan gampang rusak.

Makanya lahirlah ide Object-Oriented Programming (OOP), cara berpikir yang bikin program lebih mirip dunia nyata: ada bagian-bagian (objek), masing-masing punya tugas dan batasan.


2. OOP Itu Apa Sih Sebenarnya?

Intinya: kamu bikin “kotak kecil” bernama objek, yang punya data dan kemampuan sendiri.

Misalnya kamu punya “kotak” bernama Mobil. Mobil punya data: warna, kecepatan. Dan kemampuan: gas, rem, belok.

Setiap “kotak” ini dibuat dari cetakan (class). Kalau class itu kayak resep, objek itu kayak kue hasilnya.

class Mobil {
public:
    int kecepatan;
    void jalan() { cout << "Mobil berjalan!\n"; }
};

3. Empat Pilar OOP (Versi Bahasa Manusia)

1. Encapsulation (Pembungkusan)

Bayangin kamu naik mobil. Kamu bisa tekan pedal gas, tapi nggak bisa langsung utak-atik mesin di bawah kap.

Di OOP, kita juga ngelindungin “mesin dalam” suatu objek supaya gak bisa diubah sembarangan.

Contoh:

class Mobil {
private:
    int kecepatan; // disembunyikan
public:
    void tambahGas() { kecepatan += 10; }
};

Kamu gak bisa langsung mobil.kecepatan = 9999; Kamu cuma bisa “nyetir” lewat fungsi yang disediakan.


2. Abstraction (Penyederhanaan)

Kamu nyalain TV cuma dengan tombol power, kan? Gak perlu tahu gimana listriknya jalan, gimana IC-nya nyala.

Nah, abstraction itu cara kita menyembunyikan detail rumit, dan cuma nunjukin tombol-tombol penting buat pengguna.

class MesinKopi {
public:
    void buatKopi() {
        gilingBiji();
        panaskanAir();
        tuangKeCangkir();
    }
private:
    void gilingBiji() { /* detail teknis */ }
    void panaskanAir() { /* detail teknis */ }
    void tuangKeCangkir() { /* detail teknis */ }
};

Kamu cukup panggil buatKopi(), gak perlu mikirin gimana biji digiling atau air dipanaskan.


3. Inheritance (Pewarisan)

Anak bisa mewarisi sifat dari orang tua, punya “dasar” yang sama, tapi bisa nambahin hal baru.

class Hewan {
public:
    void makan() { cout << "Hewan makan.\n"; }
};

class Kucing : public Hewan {
public:
    void meong() { cout << "Meong!\n"; }
};

Kucing bisa makan() karena dia turunan dari Hewan. Tapi hewan lain bisa punya perilaku masing-masing juga.


4. Polymorphism (Banyak Bentuk)

Kata “jalan” bisa beda maknanya tergantung siapa yang melakukannya. Manusia “jalan” pakai kaki, mobil “jalan” pakai roda.

Di OOP, fungsi yang sama bisa berperilaku beda tergantung objeknya.

class Hewan {
public:
    virtual void bersuara() { cout << "Suara hewan\n"; }
};
class Kucing : public Hewan {
public:
    void bersuara() override { cout << "Meong!\n"; }
};
class Anjing : public Hewan {
public:
    void bersuara() override { cout << "Guk!\n"; }
};

Kalau kamu punya daftar hewan:

Hewan* h1 = new Kucing();
Hewan* h2 = new Anjing();
h1->bersuara(); // Meong!
h2->bersuara(); // Guk!

4. OOP Itu Bukan Sekadar Teori

Begitu kamu ngerti konsep “kotak punya data dan fungsi sendiri,” kamu bisa bangun apa aja: aplikasi, game, robot, atau bahkan sistem bank.

Yang penting kamu paham:

  • Encapsulation → kunci data biar gak sembarangan diubah
  • Abstraction → tampilkan cuma yang perlu
  • Inheritance → turunkan sifat biar gak nulis ulang kode
  • Polymorphism → biar fungsi bisa punya banyak gaya

5. Kalau Mau Ingat Seumur Hidup

  • Encapsulation = “Jangan utak-atik mesin mobil.”
  • Abstraction = “Cukup pencet tombol start.”
  • Inheritance = “Anak mirip orang tua.”
  • Polymorphism = “Semua bisa ngomong ‘jalan’, tapi caranya beda-beda.”

Penutup

OOP bukanlah kumpulan istilah aneh buat nyiksa mahasiswa. Itu cuma cara berpikir yang ngikutin dunia nyata. Begitu kamu ngerti logikanya, sisanya tinggal gaya nulis di C++, Java, atau Python.