Pemrograman Berorientasi Objek (OOP) dengan Python

Pemrograman Berorientasi Objek (OOP) dengan Python

🐍 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.

  1. Atribut Instance → milik tiap objek.
  2. 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:

  1. Pengenalan OOP
  2. Class & Object
  3. Atribut
  4. Method
  5. Encapsulation
  6. Inheritance
  7. Polymorphism
  8. Abstraction
  9. Special Method
  10. Proyek Mini

Dengan OOP, kode lebih terstruktur, mudah dikembangkan, dan sesuai dengan dunia nyata.

Post a Comment

0 Comments