🐍 OOP Python
1. Pengantar OOP
Object Oriented Programming (OOP) adalah paradigma pemrograman yang berfokus pada objek. Objek menggabungkan data (atribut/properties) dan perilaku (method/fungsi).
- Paradigma Prosedural: program ditulis dalam urutan langkah-langkah (fungsi/prosedur).
- Paradigma OOP: program disusun berdasarkan objek nyata.
Contoh kehidupan nyata:
- Siswa: atribut (nama, umur, kelas), method (belajar, absen, ujian).
- Mobil: atribut (merk, warna, kecepatan), method (maju, mundur, berhenti).
2. Class dan Object
Class = blueprint atau cetakan untuk membuat objek.
Object = hasil nyata dari class.
# Membuat class
class Siswa:
def __init__(self, nama, umur):
self.nama = nama
self.umur = umur
# Membuat object dari class
siswa1 = Siswa("Andi", 16)
print(siswa1.nama) # Output: Andi
__init__() adalah constructor, otomatis dipanggil saat objek dibuat.
3. Atribut (Properties)
Atribut adalah variabel yang dimiliki oleh object.
- Atribut Instance → milik tiap objek.
- Atribut Class → milik bersama semua objek.
class Siswa:
sekolah = "SMK Yadika" # atribut class
def __init__(self, nama, umur):
self.nama = nama # atribut instance
self.umur = umur
s1 = Siswa("Budi", 15)
s2 = Siswa("Sari", 16)
print(s1.sekolah) # SMK Yadika
print(s2.nama) # Sari
4. Method (Fungsi dalam Class)
Method adalah fungsi yang dimiliki class.
class Siswa:
def __init__(self, nama):
self.nama = nama
def perkenalan(self): # method
print(f"Halo, saya {self.nama}")
s1 = Siswa("Rani")
s1.perkenalan()
Method wajib punya parameter pertama self → mewakili objek itu sendiri.
5. Encapsulation (Pembungkusan Data)
Encapsulation melindungi data agar tidak diakses sembarangan.
- Public: bisa diakses dari mana saja.
- Protected (
_atribut): hanya boleh diakses di dalam class dan turunan. - Private (
__atribut): hanya bisa diakses di dalam class itu sendiri.
class Tabungan:
def __init__(self, saldo):
self.__saldo = saldo # private
def lihat_saldo(self):
return self.__saldo
t1 = Tabungan(100000)
print(t1.lihat_saldo()) # 100000
6. Inheritance (Pewarisan)
Class anak bisa mewarisi atribut & method dari class induk.
class Manusia:
def __init__(self, nama):
self.nama = nama
def makan(self):
print(f"{self.nama} sedang makan.")
class Guru(Manusia): # pewarisan
def mengajar(self):
print(f"{self.nama} sedang mengajar.")
g1 = Guru("Pak Budi")
g1.makan() # diwarisi dari Manusia
g1.mengajar() # method Guru sendiri
super() digunakan untuk memanggil constructor class induk.
7. Polymorphism (Banyak Bentuk)
Satu method bisa punya bentuk berbeda pada class turunan.
class Hewan:
def suara(self):
print("Hewan bersuara")
class Kucing(Hewan):
def suara(self):
print("Meow")
class Anjing(Hewan):
def suara(self):
print("Guk guk")
hewan = [Kucing(), Anjing()]
for h in hewan:
h.suara()
Output:
Meow
Guk guk
8. Abstraction (Abstraksi)
Menyembunyikan detail implementasi, hanya menampilkan kerangka.
from abc import ABC, abstractmethod
class Kendaraan(ABC):
@abstractmethod
def bergerak(self):
pass
class Mobil(Kendaraan):
def bergerak(self):
print("Mobil berjalan di jalan raya")
m = Mobil()
m.bergerak()
9. Special Method (Dunder/Magic Method)
Python menyediakan method khusus dengan __nama__.
__init__→ constructor__str__→ representasi string__len__,__add__, dll.
class Buku:
def __init__(self, judul, halaman):
self.judul = judul
self.halaman = halaman
def __str__(self):
return f"Buku: {self.judul}, {self.halaman} halaman"
b = Buku("Python Dasar", 200)
print(b) # Buku: Python Dasar, 200 halaman
10. Proyek Mini OOP
🔹 Sistem Data Siswa
class Siswa:
def __init__(self, nama, umur):
self.nama = nama
self.umur = umur
def tampilkan(self):
print(f"{self.nama}, {self.umur} tahun")
daftar_siswa = [
Siswa("Andi", 16),
Siswa("Sari", 15)
]
for s in daftar_siswa:
s.tampilkan()
🔹 Game Sederhana
class Karakter:
def __init__(self, nama, hp):
self.nama = nama
self.hp = hp
def serang(self, musuh):
musuh.hp -= 10
print(f"{self.nama} menyerang {musuh.nama}!")
p1 = Karakter("Hero", 100)
p2 = Karakter("Monster", 80)
p1.serang(p2)
print(p2.hp) # 70
📝 Kesimpulan
Materi OOP Python mencakup:
- Pengenalan OOP
- Class & Object
- Atribut
- Method
- Encapsulation
- Inheritance
- Polymorphism
- Abstraction
- Special Method
- Proyek Mini
Dengan OOP, kode lebih terstruktur, mudah dikembangkan, dan sesuai dengan dunia nyata.

0 Comments