OOP mengelompokkan data dan perilaku ke dalam class. Kita mulai dari class, constructor, dan destructor, lalu melangkah ke inheritance, polymorphism, dan abstract class — bekal utama sebelum menyusun program yang lebih besar dan terstruktur.

# Class dan Object: Konsep Dasar OOP

Pahami class sebagai cetak biru dan object sebagai instans nyata, lengkap dengan konsep state, behavior, dan alasan OOP dipakai untuk mengorganisasi program.

Buka →
# Mendefinisikan Class

Pelajari sintaks definisi class di C++, aturan titik koma yang sering terlewat, serta perbedaan mendefinisikan member function di dalam dan di luar class.

Buka →
# Access Specifiers: public, private, protected

Kendalikan siapa yang boleh mengakses member sebuah class memakai access specifiers, pahami default class versus struct, dan alasan data perlu disembunyikan.

Buka →
# Data Members dan Member Functions

Rancang isi class secara lengkap: deklarasi data member dengan in-class initializer, penulisan member function di dalam dan di luar class, serta pemanggilan lewat operator . dan ->.

Buka →
# Constructor

Kenali constructor sebagai fungsi khusus yang mengisi object otomatis saat ia dibuat, lengkap dengan aturan penamaan dan teknik beberapa constructor dalam satu class.

Buka →
# Default Constructor

Pahami default constructor: kapan compiler membuatnya secara otomatis, kapan ia menghilang, cara memaksa pembuatannya dengan = default, dan bahaya member tanpa nilai awal.

Buka →
# Parameterized Constructor

Kirim data ke object sejak detik pertama lewat constructor berparameter, kuasai overloading constructor, dan bandingkan sintaks pembuatan object dengan kurung dan kurawal.

Buka →
# Member Initializer List

Pelajari member initializer list: sintaks : member(nilai), alasan member const dan reference wajib memakainya, efisiensinya dibanding penugasan, serta aturan urutan inisialisasi.

Buka →
# Delegating Constructors

Kurangi duplikasi antar constructor dengan delegating constructor: satu target constructor yang bekerja, sisanya meneruskan argumen kepadanya.

Buka →
# Destructor

Kenali destructor: fungsi otomatis yang berjalan saat object berakhir, urutan destruksi yang kebalikan konstruksi, dan perannya saat object di heap dihapus dengan delete.

Buka →
# Copy Constructor dan Copy Assignment

Pahami dua mekanisme penyalinan object — copy constructor yang menyalin saat object lahir dan copy assignment yang mengisi object lama — lengkap dengan deep copy, self-assignment guard, serta = default dan = delete.

Buka →
# this Pointer

Kenali this, pointer tersembunyi yang menunjuk object pemanggil: membedakan member dan parameter yang bernama sama, serta memicu method chaining lewat return *this.

Buka →
# Const Member Functions

Tandai method yang tidak mengubah object dengan const di akhir deklarasinya, pahami hubungannya dengan object const, dan hindari kesalahan umum lupa const.

Buka →
# Static Members

Kenali static data member yang dibagi seluruh object dan static member function yang tidak punya this, termasuk definisi klasik di luar class dan inline static dari C++17.

Buka →
# Friend Functions dan Friend Classes

Izinkan fungsi atau class tertentu mengakses member private melalui friend, pahami posisinya di luar urutan private/public, dan kenali kapan friend tepat serta kapan berbahaya.

Buka →
# Operator Overloading

Berikan makna operator seperti +, ==, [], ++, dan << pada class sendiri: pilih member atau free function, terapkan pola kanonik dengan return type yang tepat, dan kenali batas kapan overload justru merugikan.

Buka →
# Encapsulation

Rangkai access specifier, constructor, dan getter/setter menjadi prinsip encapsulation: sembunyikan detail internal, buka hanya antarmuka yang bermakna, dan jaga invariant class.

Buka →
# Composition

Bangun class yang memiliki class lain sebagai bagian internalnya: member bertipe class, constructor member yang dipanggil otomatis, dan urutan konstruksi serta destruksinya.

Buka →
# Inheritance

Bangun class baru dari class yang sudah ada dengan inheritance: apa yang diwariskan, mengapa dasar dibangun lebih dulu, dan cara memanggil constructor dasar.

Buka →
# Access Control pada Inheritance

Pahami bagaimana access specifier pada penulisan inheritance — public, protected, dan private — mengubah status akses member dasar di class turunan, dan kapan tiap bentuk layak dipakai.

Buka →
# Multiple Inheritance

Mewarisi dua class dasar sekaligus: sintaks dan urutan konstruksinya, diamond problem yang menyertainya, serta virtual inheritance sebagai jalan keluarnya.

Buka →
# Virtual Functions

Kenali keyword virtual: cara satu baris ini mengubah pemilihan method dari saat kompilasi menjadi saat program berjalan, dan mekanisme vtable yang bekerja di baliknya.

Buka →
# Overriding

Tulis ulang virtual function di class turunan dengan benar: aturan signature yang sama, keyword override yang menangkap kesalahan ketik, jebakan hiding, dan final yang menutup gerbang.

Buka →
# Polymorphism

Rasakan buah dari virtual function: satu antarmuka, banyak perilaku — dikelola lewat container pointer dasar, plus peta kapan polimorfisme runtime atau compile-time yang tepat.

Buka →
# Abstract Classes

Gunakan pure virtual function untuk menjadikan class abstrak: tidak bisa diinstansiasi, hanya bisa diwarisi — kontrak antarmuka yang ditegakkan compiler sejak awal.

Buka →
# Pure Virtual Functions

Bedah sintaks virtual ... = 0: kewajiban override bagi turunan, kemampuan pure virtual tetap punya implementasi default yang dipanggil lewat Dasar::nama, dan turunan yang tetap abstract bila lupa mengisi.

Buka →
# Virtual Destructors

Menghapus object turunan lewat pointer class dasar hanya aman bila destructor class dasar virtual — chapter ini membuktikan perangkapnya, solusinya, dan aturan emas yang mengikutinya.

Buka →
# Object Slicing

Menyalin object turunan ke variabel class dasar by value memotong seluruh bagian turunannya — mekanisme object slicing, bentuk-bentuknya yang menyamar, dan cara mencegahnya dengan reference, pointer, dan class dasar abstract.

Buka →
# Composition vs Inheritance

Dua alat penyusun class dibandingkan secara tuntas: kapan is-a lewat inheritance, kapan has-a lewat composition — tabel keputusan, dua desain untuk satu masalah, dan penutup Section OOP.

Buka →