Topik 07:
Pemrograman OOP Python
Makul : Algoritma & Pemrograman
Pengampu : Khamarudin Syarif
Tujuan
• Memahami konsep dasar OOP seperti class, object,
inheritance, encapsulation, dan relationship antar class.
• Menerapkan OOP dalam Python melalui pembuatan class,
object, method, serta penggunaan instance variable dan
pewarisan (inheritance).
• Mengembangkan program Python sederhana berbasis OOP
untuk menyelesaikan masalah secara terstruktur dan
modular.
Class
Class adalah cetak biru (blueprint) untuk Contoh:
membuat objek yang mendefinisikan atribut
class Mahasiswa:
(data) dan metode (fungsi) yang dimiliki objek
tersebut. def __init__(self, nama, nim):
[Link] = nama
Sintaks: [Link] = nim
class NamaClass:
# Atribut dan metode
Object
Objek adalah instansi dari sebuah class, yaitu representasi konkret dari class tersebut.
Contoh:
mhs = Mahasiswa("Budi", "12345") # Objek mhs adalah instansi dari class Mahasiswa
print([Link]) # Output: Budi
Relationship (Antar Class)
Hubungan antar class menjelaskan bagaimana
class-class berinteraksi. Jenis hubungan meliputi
dependence, aggregation, composition, dan
inheritance.
Dependence
Dependence adalah hubungan di mana satu class menggunakan class lain sebagai bagian dari
operasinya, tetapi tidak memiliki kepemilikan.
Contoh: Sebuah class Kalkulator menggunakan class Matematika untuk melakukan operasi.
class Matematika:
def tambah(self, a, b):
return a + b
class Kalkulator:
def hitung(self, x, y):
mat = Matematika()
return [Link](x, y)
Aggregation
Aggregation adalah hubungan "has-a" di mana satu class memiliki class lain, tetapi class yang dimiliki dapat berdiri
sendiri.
Contoh: Class Kelas memiliki daftar objek Mahasiswa, tetapi Mahasiswa tetap ada meskipun Kelas dihapus.
class Mahasiswa:
def __init__(self, nama):
[Link] = nama
class Kelas:
def __init__(self):
self.daftar_mahasiswa = []
def tambah_mahasiswa(self, mhs):
self.daftar_mahasiswa.append(mhs)
Inheritance
Inheritance adalah hubungan "is-a" di Contoh:
mana class turunan (subclass) mewarisi class Kendaraan:
atribut dan metode dari class induk def __init__(self, merk):
(superclass). [Link] = merk
def info(self):
Sintaks: return f"Merk: {[Link]}"
class SubClass(SuperClass):
class Mobil(Kendaraan):
# Atribut dan metode tambahan def __init__(self, merk, model):
super().__init__(merk)
[Link] = model
def info(self):
return f"{super().info()}, Model: {[Link]}"
Encapsulation
Encapsulation adalah mekanisme untuk Contoh:
menyembunyikan detail implementasi dengan
class BankAccount:
membatasi akses ke atribut atau metode
menggunakan pengubah akses (conventionally def __init__(self, pemilik, saldo):
dengan _ atau __). [Link] = pemilik
Atribut Privat: Menggunakan __ di awal nama atribut. self.__saldo = saldo # Atribut privat
def cek_saldo(self):
return self.__saldo
def deposit(self, jumlah):
if jumlah > 0:
self.__saldo += jumlah
Instantiation & Instance Variable
Instantiation: Proses membuat objek dari class menggunakan konstruktor.
Instance Variable: Atribut yang unik untuk setiap objek (didefinisikan dalam __init__).
Contoh:
class Mahasiswa:
def __init__(self, nama, nim):
[Link] = nama # Instance variable
[Link] = nim # Instance variable
mhs1 = Mahasiswa("Budi", "12345") # Instantiation
mhs2 = Mahasiswa("Ani", "67890") # Instantiation
Contoh:
class Mahasiswa:
Method jumlah_mahasiswa = 0 # Class variable
def __init__(self, nama):
Method adalah fungsi yang didefinisikan dalam
class untuk menentukan perilaku objek. [Link] = nama
Mahasiswa.jumlah_mahasiswa += 1
Jenis Method: def info(self): # Instance method
• Instance Method: Beroperasi pada instance return f"Nama: {[Link]}"
(menggunakan self).
• Class Method: Beroperasi pada class itu @classmethod
sendiri (menggunakan @classmethod dan cls). def get_jumlah_mahasiswa(cls): # Class method
return cls.jumlah_mahasiswa
• Static Method: Tidak bergantung pada
instance atau class (menggunakan
@staticmethod). @staticmethod
def is_valid_nama(nama): # Static method
return len(nama) > 0
Latihan Latihan 2: Inheritance
class Kendaraan:
def __init__(self, merk):
Latihan 1: Membuat Class dan Object
[Link] = merk
class Mahasiswa:
def __init__(self, nama, nim):
def jalan(self):
[Link] = nama
print(f"{[Link]} sedang berjalan")
[Link] = nim
class Mobil(Kendaraan):
def sapa(self): def klakson(self):
print(f"Halo, nama saya {[Link]} dengan NIM print("Klakson mobil: Beep Beep!")
{[Link]}")
m = Mobil("Toyota")
mhs1 = Mahasiswa("Budi", "12345") [Link]()
[Link]() [Link]()
Latihan 4: Aggregation dan Dependensi
class Buku:
Latihan
def __init__(self, judul):
[Link] = judul
Latihan 3: Encapsulation
class Perpustakaan:
class Bank:
def __init__(self):
def __init__(self):
self.daftar_buku = []
self.__saldo = 0
def tambah_buku(self, buku):
def set_saldo(self, nominal):
self.daftar_buku.append(buku)
self.__saldo += nominal
def tampilkan_buku(self):
def get_saldo(self):
for buku in self.daftar_buku:
return self.__saldo
print([Link])
b = Bank()
b1 = Buku("Python Dasar")
b.set_saldo(1000)
perpus = Perpustakaan()
print(b.get_saldo())
perpus.tambah_buku(b1)
perpus.tampilkan_buku()
Tugas dan Praktek
Pemrograman OOP Python
Tugas 1
• Buatlah struktur class berikut:
• Mahasiswa (nama, nim, jurusan)
• Dosen (nama, nip, matkul)
• Kelas yang memiliki banyak Mahasiswa dan satu Dosen
• Implementasikan relasi aggregation dan gunakan method
dalam masing-masing class untuk menampilkan informasi.
• Gunakan prinsip encapsulation dan inheritance bila
diperlukan.
Keluaran Program:
• Daftar mahasiswa dalam kelas tertentu
• Data dosen pengampu
• Informasi kelas secara keseluruhan
Tugas 2
• Buat class Mahasiswa dengan atribut nama, nim, __ipk (privat),
dan daftar nilai (list).
• Tambahkan method untuk menghitung IPK (rata-rata nilai) dan
menyimpannya di __ipk.
• Buat class Kelas yang mengelola daftar Mahasiswa (aggregation).
• Tambahkan method di Kelas untuk:
• Menambah mahasiswa.
• Menampilkan daftar mahasiswa dengan IPK di atas 3.0.
• Menghitung rata-rata IPK kelas.
• Buat class turunan MahasiswaS2 yang mewarisi Mahasiswa dan
menambahkan atribut tesis.
• Uji program dengan membuat beberapa objek Mahasiswa dan
MahasiswaS2, menambahkannya ke Kelas, dan menampilkan
daftar mahasiswa dengan IPK di atas 3.0.
Terima Kasih