Praktikum Modul Pewarisan (Inheritance) dan Overriding pada Pemrograman Lanjutan

 👋 Halo teman-teman pejuang kode!

Di praktikum Pemrograman Lanjutan kali ini, kita bakal bahas salah satu konsep OOP yang sering banget dipakai di dunia nyata: Pewarisan (Inheritance) dan Overriding. Kelihatannya mungkin agak “berat” di awal, tapi tenang—kalau sudah paham, konsep ini justru bikin ngoding kamu jadi lebih rapi, efisien, dan gampang dikembangkan.

Di modul ini, kita bakal ngulik gimana sebuah class bisa “nurunin” atribut dan method ke class lain, lalu gimana cara override method tersebut biar sesuai kebutuhan kita. Semua dibahas lewat contoh kode yang sederhana dan langsung praktik, jadi nggak cuma teori doang. Praktikum ini bakal ngebantu kamu memahami cara kerja OOP dengan lebih masuk akal dan aplikatif. Jadi, siap buat nyobain kodenya dan mainin class satu per satu? Yuk mulai dan naik level bareng! 🚀💻


- PRAKTIKUM 1 (Inheritance dalam OOP)










Pada praktikum pertama ini, kita belajar konsep pewarisan (inheritance) yang paling dasar.

  • class Animal → ini adalah class induk (parent class)

    • Punya method speak() yang menampilkan teks "Animal is speaking"

  • class Dog(Animal) → ini adalah class anak (child class)

    • Artinya Dog mewarisi semua atribut dan method dari Animal

    • Keyword pass berarti class ini belum menambahkan apa-apa, tapi tetap bisa memakai milik induknya

  • Saat objek dog = Dog() dibuat dan dog.speak() dipanggil:

    • Python mencari method speak() di class Dog

    • Karena tidak ada, Python mengambil method dari class Animal

    • Hasilnya:
      👉 Animal is speaking


- PRAKTIKUM 2 (Subclass dari Superclass)













1️⃣ Class Vehicle (Parent Class)

  • Memiliki:

    • Atribut brand dan model

    • Method show_info() untuk menampilkan informasi kendaraan

2️⃣ Class Car (Child Class)

  • Car mewarisi dari Vehicle

  • Menambahkan atribut baru: doors

  • Menggunakan super().__init__(brand, model):

    • Untuk memanggil constructor milik Vehicle

    • Supaya atribut brand dan model tetap dibuat


3️⃣ Overriding Method show_info()

Di sini terjadi overriding:

def show_info(self): super().show_info() print(f"Doors: {self.doors}")

  • Method show_info() di Car menimpa method show_info() di Vehicle

  • Tapi tetap memanggil versi parent dengan super().show_info()

  • Lalu menambahkan informasi baru (Doors)


- PRAKTIKUM 3 (Penggunaan Metode Super)






















1️⃣ Class Person (Parent Class)

  • Menyimpan data dasar seseorang:

    • name

    • age

  • Method display() berfungsi menampilkan data tersebut

2️⃣ Class Employee (Child Class)

  • Employee mewarisi class Person

  • Menambahkan atribut baru:

    • employee_id

  • Menggunakan super().__init__(name, age):

    • Untuk memanggil constructor milik Person

    • Supaya atribut name dan age tetap dibuat


3️⃣ Overriding Method display()

def display(self): super().display() print(f"Employee ID: {self.employee_id}")
  • Method display() di Employee menimpa method display() di Person

  • Tapi masih memanggil method induknya menggunakan super()

  • Hasilnya:

    • Data Person ditampilkan dulu

    • Lalu ditambah data khusus Employee


- PRAKTIKUM 4 (Pewarisan Satu Arah)





















1️⃣ Class Animal

  • Memiliki method move()

  • Method ini bisa digunakan oleh semua turunan Animal

2️⃣ Class Bird

  • Bird mewarisi dari Animal

  • Tidak mengubah method move()

  • Menambahkan method baru fly()


- PRAKTIKUM 5 (Studi Kasus)



















Penjelasan
  • Product adalah class dasar

  • Menyimpan atribut umum:

    • name → nama produk

    • price → harga produk

  • Method display_product():

    • Menampilkan informasi dasar produk

  • Class ini jadi fondasi untuk semua jenis produk


🔹 Class Electronic (Child Class)

class Electronic(Product): def __init__(self, name, price, warranty): super().__init__(name, price) self.warranty = warranty

🧠 Penjelasan:

  • Electronic mewarisi Product

  • Menambahkan atribut khusus:

    • warranty (masa garansi)

  • super().__init__(name, price):

    • Memanggil constructor Product

    • Supaya name dan price tetap dibuat


🔁 Overriding display_product()

def display_product(self): super().display_product() print(f"Warranty: {self.warranty} years")
  • Method display_product() dioverride

  • Tetap memanggil method induk

  • Ditambah info khusus produk elektronik (garansi)


🔹 Class Clothing (Child Class)

class Clothing(Product): def __init__(self, name, price, size): super().__init__(name, price) self.size = size

🧠 Penjelasan:

  • Clothing juga mewarisi Product

  • Menambahkan atribut:

    • size (ukuran pakaian)


🔁 Overriding display_product()

def display_product(self): super().display_product() print(f"Size: {self.size}")
  • Method display_product() dioverride

  • Menampilkan info dasar + ukuran pakaian




- PRAKTIKUM 6 (Konsep Overriding dalam OOP)

















 a. Class Induk (Parent Class)

class Animal: def sound(self): print("Hewan mengeluarkan suara")
  • Animal = kelas induk

  • Punya method:

    sound()
  • Kalau dipanggil → output:

    Hewan mengeluarkan suara

🔹 b. Class Turunan (Child Class)

class Dog(Animal):

Artinya:

Dog MEWARISI semua milik Animal

Jadi Dog otomatis punya method sound() dari AnimalTAPI 👇

def sound(self): print("Anjing menggonggong")

Di sini method sound() ditulis ulang.

Ini disebut:

🔥 Method Overriding

Method dari induk diganti oleh method di kelas anak.


🔹 c. Membuat Objek

dog = Dog()

Artinya:

  • Membuat objek bernama dog

  • Objek ini bertipe Dog


🔹 d. Pemanggilan Method

dog.sound()

Python akan cek:

  1. Apakah Dog punya method sound()? → YA

  2. Maka Python tidak pakai method dari Animal


- PRAKTIKUM 7 (Overriding Metode di Subclass)


















🔹 1. Class Induk: Vehicle

class Vehicle: def start_engine(self): print("Mesin kendaraan dinyalakan")

Ini adalah parent class.

Punya 1 method:

start_engine() → menyalakan mesin

🔹 2. Class Turunan: Car

class Car(Vehicle):

Artinya:

Car mewarisi semua milik Vehicle

Tapi methodnya diubah 👇

def start_engine(self): super().start_engine() print("AC mobil dinyalakan")

Ini disebut overriding + memperluas method.


🔹 3. Fungsi super()

super().start_engine()

Artinya:

"Jalankan dulu method milik induk"

Jadi urutannya saat dipanggil:

Car.start_engine() ↓ Vehicle.start_engine() → Mesin kendaraan dinyalakan ↓ print tambahan → AC mobil dinyalakan

- PRAKTIKUM 8 (Studi Kasus)





















 1. Class Induk: BankAccount

def get_interest_rate(self): return 0.02

Default bunga rekening = 2%


🔹 2. Class Turunan

ClassBunga
SavingsAccount3%
FixedDepositAccount5%

Semua punya method yang sama:

get_interest_rate()

Tapi isinya beda → ini polymorphism.


🔹 3. Pembuatan Objek

savings = SavingsAccount() fixed_deposit = FixedDepositAccount()

🔹 4. Pemanggilan Method

print("Bunga Tabungan:", savings.get_interest_rate()) print("Bunga Deposito:", fixed_deposit.get_interest_rate())

Python memilih method sesuai jenis objeknya.


LATIHAN DAN TUGAS

1. Implementasi Inheritance dalam Program Sederhana











2. Studi Kasus Simulasi Toko Online dengan Inheritance










3. Implemetasi Overriding pada Subclass














4. Studi Kasus BankAccount dengan Overriding

































Referensi
Sumber utama:
Modul Praktikum Pemrograman Dasar Lanjutan (Python), disusun oleh Adi Muhamad Muhsidi (2025).
Program Studi Bisnis Digital, Fakultas Ekonomi dan Bisnis, Universitas Kuningan. 
link: https://heyzine.com/flip-book/6d9cf7412d.html
Atau dapat diakses langsung dari blog pribadi penulis di: https://adi-muhamad.my.id

Komentar

Postingan populer dari blog ini

Praktikum Modul Tipe Data Casting pada Pemrograman Dasar Lanjutan

Praktikum Modul Pengenalan dan Konsep OOP pada Pemrograman Dasar Lanjutan

Praktikum Mengelola File di Python pada Pemrograman Dasar Lanjutan