Bayangkan kamu diminta membangun sebuah kota. Kamu bisa bangun satu per satu bata tanpa rencana — atau kamu bisa bikin cetak biru (blueprint) untuk tiap jenis bangunan, lalu tinggal "cetak" sebanyak yang kamu butuhkan. OOP Python (Pemrograman Berorientasi Objek) bekerja persis seperti itu. Daripada nulis kode yang acak-acakan, kamu mendefinisikan "blueprint" yang disebut class, lalu buat banyak object dari situ. Hasilnya? Kode yang bersih, terstruktur, dan bisa dipakai ulang — persis kayak kota yang direncanakan dengan baik.
Di artikel ke-13 dari seri "Python from Zero to Zorro" ini, kamu akan belajar konsep dasar pemrograman berorientasi objek dengan cara yang paling masuk akal: lewat analogi kehidupan nyata dan contoh kode yang bisa langsung kamu coba.
🏗️ Apa Itu OOP Python dan Kenapa Kamu Butuh Ini?
Sebelum OOP Python ada, programmer nulis kode secara prosedural — dari atas ke bawah, satu langkah demi satu langkah. Ini oke untuk program kecil. Tapi bayangkan kamu bikin game RPG dengan ratusan karakter, masing-masing punya nama, HP, serangan berbeda... Kodenya bakal jadi mimpi buruk.
OOP hadir sebagai solusi: kamu mendefinisikan satu "cetakan" karakter, lalu buat ribuan karakter berbeda dari cetakan itu. Di Python, cetakan ini disebut class, dan setiap karakter yang dibuat disebut object (atau instance).
Satu cetakan bisa bikin ribuan kue. Setiap kue punya ukuran dan rasa yang bisa berbeda, tapi semua dibuat dari cetakan yang sama. Class di Python bekerja persis begitu!
Ada 4 pilar utama OOP yang perlu kamu kenal — dan semuanya ada di Python:
| Pilar OOP | Artinya | Analogi |
|---|---|---|
| Encapsulation | Membungkus data & fungsi dalam satu unit | Dompet — isinya tersimpan rapi di dalam |
| Inheritance | Class anak mewarisi sifat class induk | Anak mewarisi sifat orang tua |
| Polymorphism | Satu nama, banyak bentuk/perilaku | Tombol "play" di Spotify vs YouTube — sama tapi beda |
| Abstraction | Sembunyikan kompleksitas, tampilkan yang penting | Setir mobil — kamu gak perlu tahu cara kerja mesinnya |
🐍 Cara Membuat Class dan Object di Python OOP
Oke, cukup teorinya. Mari kita masuk ke kode! Kita akan buat class Mobil sebagai contoh pertama — sesuatu yang familiar dan mudah dibayangkan.
class# Membuat object dari class Mobil mobil1 = Mobil("Toyota", "Merah", 2022) mobil2 = Mobil("Honda", "Putih", 2020) mobil1.info() # Mobil Toyota warna Merah, tahun 2022 mobil2.info() # Mobil Honda warna Putih, tahun 2020 mobil1.klakson() # Beep beep! 🚗 # Akses atribut langsung print(mobil1.merk) # Toyota
selfself adalah cara Python merujuk ke object itu sendiri. Ketika kamu panggil mobil1.info(), Python otomatis mengisi self dengan mobil1. Jadi self.merk = data merk milik mobil1 itu sendiri.__init__?__init__ (dibaca: dunder init) adalah constructor — fungsi yang otomatis dijalankan ketika object baru dibuat. Di sinilah kamu set data awal (atribut) object. Dua underscore di depan dan belakang menandakan ini adalah "method spesial" bawaan Python.🧬 Inheritance: Sifat Turun-Temurun di OOP Python
Salah satu fitur paling powerful di pemrograman berorientasi objek Python adalah inheritance (pewarisan). Konsepnya sederhana: class anak bisa "mewarisi" semua atribut dan method dari class induk, lalu menambahkan atau mengubah sesuai kebutuhan.
Bayangkan kamu sudah punya class Hewan. Sekarang kamu mau buat class Anjing dan Kucing. Daripada nulis ulang dari nol, kamu cukup warisi class Hewan dan tambahkan keunikan masing-masing:
# Class Induk (Parent Class) class Hewan: def __init__(self, nama, umur): self.nama = nama self.umur = umur def makan(self): print(f"{self.nama} sedang makan 🍖") def info(self): print(f"Nama: {self.nama}, Umur: {self.umur} tahun") # Class Anak — Mewarisi Hewan class Anjing(Hewan): # ← ini sintaks pewarisan! def __init__(self, nama, umur, ras): super().__init__(nama, umur) # panggil __init__ induk self.ras = ras def suara(self): print(f"{self.nama} berkata: Guk guk! 🐶") class Kucing(Hewan): def suara(self): print(f"{self.nama} berkata: Meong! 🐱") # Penggunaan rex = Anjing("Rex", 3, "Golden Retriever") mimi = Kucing("Mimi", 2) rex.info() # Warisan dari Hewan: Nama: Rex, Umur: 3 tahun rex.makan() # Warisan dari Hewan: Rex sedang makan 🍖 rex.suara() # Milik Anjing: Rex berkata: Guk guk! 🐶 mimi.suara() # Milik Kucing: Mimi berkata: Meong! 🐱
type(42) di Python — kamu akan dapat <class 'int'>. Berarti angka 42 pun adalah object dari class int!- Program kecil & sederhana
- Script sekali pakai
- Kode dari atas ke bawah
- Mudah dipelajari pertama kali
- Proyek besar & kompleks
- Kode yang reusable
- Kerja dalam tim
- Aplikasi, game, sistem nyata
🎭 Polymorphism & Encapsulation: Dua Pilar OOP yang Sering Dilupakan
Kita sudah lihat inheritance. Sekarang mari sentuh dua pilar OOP Python lainnya yang bikin kode kamu makin profesional.
Anjing dan Kucing keduanya punya method suara(), tapi hasilnya berbeda. Ini polymorphism! Satu antarmuka (suara()), perilaku yang berbeda tergantung objectnya.# Polymorphism dalam aksi hewan_hewan = [ Anjing("Buddy", 4, "Labrador"), Kucing("Luna", 2), Anjing("Max", 5, "Poodle"), ] # Satu loop, tapi tiap object bersuara berbeda! for hewan in hewan_hewan: hewan.suara() # Output: # Buddy berkata: Guk guk! 🐶 # Luna berkata: Meong! 🐱 # Max berkata: Guk guk! 🐶
__ (double underscore). Ini disebut atribut private.class RekeningBank: def __init__(self, pemilik, saldo_awal): self.pemilik = pemilik self.__saldo = saldo_awal # private! tidak bisa diakses langsung def lihat_saldo(self): print(f"Saldo {self.pemilik}: Rp{self.__saldo:,}") def setor(self, jumlah): if jumlah > 0: self.__saldo += jumlah print(f"Berhasil setor Rp{jumlah:,}") rekening = RekeningBank("Budi", 1000000) rekening.lihat_saldo() # Saldo Budi: Rp1,000,000 rekening.setor(500000) # Berhasil setor Rp500,000 rekening.lihat_saldo() # Saldo Budi: Rp1,500,000 # rekening.__saldo ← ERROR! Tidak bisa diakses langsung
__ sebenarnya tidak benar-benar tersembunyi seperti di Java atau C++. Ini lebih sebagai konvensi — sinyal ke programmer lain "jangan langsung akses ini". Python percaya programmer dewasa untuk patuhi aturan ini 😄OOP Python: Kamu Sudah Selangkah Lebih Maju!
Di artikel ini, kamu sudah belajar bahwa OOP Python (pemrograman berorientasi objek) adalah cara mengorganisir kode dengan menggunakan class dan object — layaknya blueprint dan produk jadinya. Kita telah menjelajahi:
- ✅ Class & Object — blueprint dan hasil cetakannya
- ✅ Method & Atribut — fungsi dan data yang dimiliki object
- ✅ Inheritance — class anak mewarisi sifat class induk
- ✅ Polymorphism — satu antarmuka, banyak perilaku
- ✅ Encapsulation — melindungi data dengan atribut private
No comments:
Post a Comment