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.
Pahami class sebagai cetak biru dan object sebagai instans nyata, lengkap dengan konsep state, behavior, dan alasan OOP dipakai untuk mengorganisasi program.
Buka → # Mendefinisikan ClassPelajari 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, protectedKendalikan 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 FunctionsRancang 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 → # ConstructorKenali constructor sebagai fungsi khusus yang mengisi object otomatis saat ia dibuat, lengkap dengan aturan penamaan dan teknik beberapa constructor dalam satu class.
Buka → # Default ConstructorPahami default constructor: kapan compiler membuatnya secara otomatis, kapan ia menghilang, cara memaksa pembuatannya dengan = default, dan bahaya member tanpa nilai awal.
Buka → # Parameterized ConstructorKirim data ke object sejak detik pertama lewat constructor berparameter, kuasai overloading constructor, dan bandingkan sintaks pembuatan object dengan kurung dan kurawal.
Buka → # Member Initializer ListPelajari member initializer list: sintaks : member(nilai), alasan member const dan reference wajib memakainya, efisiensinya dibanding penugasan, serta aturan urutan inisialisasi.
Buka → # Delegating ConstructorsKurangi duplikasi antar constructor dengan delegating constructor: satu target constructor yang bekerja, sisanya meneruskan argumen kepadanya.
Buka → # DestructorKenali 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 AssignmentPahami 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 PointerKenali this, pointer tersembunyi yang menunjuk object pemanggil: membedakan member dan parameter yang bernama sama, serta memicu method chaining lewat return *this.
Buka → # Const Member FunctionsTandai method yang tidak mengubah object dengan const di akhir deklarasinya, pahami hubungannya dengan object const, dan hindari kesalahan umum lupa const.
Buka → # Static MembersKenali 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 ClassesIzinkan 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 OverloadingBerikan 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 → # EncapsulationRangkai access specifier, constructor, dan getter/setter menjadi prinsip encapsulation: sembunyikan detail internal, buka hanya antarmuka yang bermakna, dan jaga invariant class.
Buka → # CompositionBangun class yang memiliki class lain sebagai bagian internalnya: member bertipe class, constructor member yang dipanggil otomatis, dan urutan konstruksi serta destruksinya.
Buka → # InheritanceBangun 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 InheritancePahami 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 InheritanceMewarisi dua class dasar sekaligus: sintaks dan urutan konstruksinya, diamond problem yang menyertainya, serta virtual inheritance sebagai jalan keluarnya.
Buka → # Virtual FunctionsKenali keyword virtual: cara satu baris ini mengubah pemilihan method dari saat kompilasi menjadi saat program berjalan, dan mekanisme vtable yang bekerja di baliknya.
Buka → # OverridingTulis 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 → # PolymorphismRasakan 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 ClassesGunakan pure virtual function untuk menjadikan class abstrak: tidak bisa diinstansiasi, hanya bisa diwarisi — kontrak antarmuka yang ditegakkan compiler sejak awal.
Buka → # Pure Virtual FunctionsBedah 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 DestructorsMenghapus 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 SlicingMenyalin 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 InheritanceDua 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 →