Object-oriented programming adalah paradigma utama untuk memodelkan domain yang kompleks. Section ini membahas class dan object secara bertahap, lalu naik ke inheritance, polymorphism, composition, sampai multiple inheritance dan MRO.

# Memahami Class dan Object

Pahami class sebagai cetak biru dan object sebagai wujud nyatanya, lengkap dengan attribute dan behavior.

Buka →
# Constructor dan __init__

Pelajari cara __init__ mengisi object baru saat dibuat, peran self, dan pembuatan banyak instance sekaligus.

Buka →
# Instance Attributes

Bedah data milik tiap object: penyimpanan per-instance, urutan lookup attribute, dan isi __dict__ yang sebenarnya.

Buka →
# Class Attributes

Kenali data bersama di level class, fallback lookup, jebakan mutable attribute, dan konstanta class.

Buka →
# Instance Methods

Pelajari cara method bekerja lewat self, pemanggilan lewat class, dan __repr__ untuk output yang mudah dibaca.

Buka →
# classmethod dan staticmethod

Bandingkan classmethod dengan staticmethod: alternative constructor, utility function, dan kapan memakainya.

Buka →
# Encapsulation

Pahami konvensi _protected, name mangling dengan __private, dan pratinjau property pada class Python.

Buka →
# Inheritance

Bangun hierarki class dengan inheritance: reuse method, override, extend lewat super(), dan relasi is-a.

Buka →
# Polymorphism

Lihat satu interface menghasilkan banyak perilaku: method override, duck typing, dan protokol seperti len().

Buka →
# Composition

Kenali relasi has-a lewat composition dan delegation, serta kapan komposisi lebih baik daripada inheritance.

Buka →
# Multiple Inheritance

Pelajari sintaks multiple inheritance, diamond problem, dan pola mixin lewat contoh LogMixin yang bekerja.

Buka →
# Method Resolution Order

Bongkar urutan pencarian method (MRO) dengan __mro__, algoritma C3, dan alasan urutan class parent penting.

Buka →
# super()

Kuasai super() pada single inheritance dan cooperative __init__, termasuk mekanisme bentuk tanpa argumen.

Buka →
# Kapan Menggunakan OOP

Kenali sinyal kapan OOP layak dipakai, kapan fungsi biasa atau dataclasses lebih tepat, dan bahaya over-engineering.

Buka →