A. Konsep Class dan Object
Pemrograman Berorientasi Objek (OOP) memodelkan sistem perangkat lunak sebagai interaksi antar-objek yang membungkus data status (*atribut*) dan perilaku tindakan (*method*):
| Komponen | Pengertian / Analogi | Contoh Kode Python |
|---|---|---|
| Class | Cetak biru (*blueprint*) atau cetakan kue yang mendefinisikan struktur atribut dan perilaku bersama. | `class Enemy:` |
| Object (Instance) | Perwujudan nyata hasil cetakan dari sebuah class di memori komputer. | `musuh1 = Enemy('Goblin', 10)` |
| Atribut (Field/Data) | Variabel milik objek yang menyimpan keadaan status data. | `self.name`, `self.damage` |
| Method | Fungsi yang menempel di dalam class yang mendefinisikan kemampuan/perilaku objek. | `def attack(self):` |
| Constructor (`__init__`) | Method inisialisasi khusus yang otomatis dieksekusi saat objek baru diciptakan. | `def __init__(self, name, hp):` |
| Keyword `self` | Parameter referensi yang menunjuk langsung ke objek itu sendiri yang sedang aktif dipanggil. | `self.name = name` |
B. Implementasi Kode Class & Instansiasi Objek
class Enemy: # Definisi CLASS (cetak biru)
def __init__(self, name, damage): # Constructor otomatis
self.name = name # Atribut objek
self.damage = damage # Atribut objek
def info(self): # Method objek
return self.name + ' menyerang dengan damage ' + str(self.damage)
# Proses Instansiasi (Pembuatan Objek Nyata)
enemy1 = Enemy('Goblin', 10) # Objek ke-1
enemy2 = Enemy('Orc', 25) # Objek ke-2
print(enemy1.info()) # Output: Goblin menyerang dengan damage 10
print(enemy2.damage) # Output: 25Prinsip Inti: Satu class dapat digunakan berulang kali untuk mencetak puluhan hingga ribuan objek yang berbeda, di mana setiap objek memiliki nilai atribut independennya masing-masing.
C. Empat Pilar Utama OOP
| Pilar OOP | Prinsip Kerja | Contoh Nyata di Industri Gim |
|---|---|---|
| 1. Encapsulation (Enkapsulasi) | Membungkus data atribut dan method dalam satu wadah class serta membatasi akses langsung dari luar demi integritas data. | Atribut `__health` karakter tidak bisa diubah langsung dari luar, wajib lewat method `take_damage()`. |
| 2. Inheritance (Pewarisan) | Class turunan (subclass) mewarisi seluruh atribut dan method dari class induk (superclass). | Class `Mage` dan `Warrior` mewarisi atribut dasar dari class induk `Character`. |
| 3. Polymorphism (Polimorfisme) | Satu nama method yang sama mampu berperilaku berbeda-beda sesuai dengan objek spesifik yang memanggilnya. | Memanggil `karakter.attack()` menghasilkan 'Tebasan Pedang' pada Warrior, namun 'Sihir Api' pada Mage. |
| 4. Abstraction (Abstraksi) | Menyembunyikan detail kerumitan implementasi internal dan hanya menyajikan antarmuka esensial bagi pengguna. | Pemain cukup menekan tombol `serang()`, tanpa perlu tahu perhitungan matriks kalkulasi fisika di balik layar. |