Algorithms, Data Structures, and Programming (ADSP)
Bagian dari Combined Module: Pendahuluan High Performance (Pemrograman Parallel) for Data Science (HPDS)

Bagian ke-5 dari "dasar Python" untuk Big Data & Data Science. Bagian dari modul HPDS dan ADSP di kurikulum tau-data Indonesia.
Pembahasan Pendahuluan OOP di Python bagian ke-02:
- OOP Inheritance(s)
- Super Function
- Method Overwriting/Overriding
Video Lesson ADSP-05
Algorithms, Data Structures, and Programming (ADSP)
https://taudata.blogspot.com/2022/04/adsp-05.html
ADSP-05: Inheritance
(C) Taufik Sutanto
Contoh Class dan Object pada lesson sebelumnya:¶
# Tambah fungsi rata-rata nilai kelas
class Mahasiswa:
def __init__(self, nama, nilai):
self.nama = nama
self.nilai = nilai
def nilai_mahasiswa(self):
return self.nilai
class Kuliah:
def __init__(self, nama, max_mahasiswa):
self.nama = nama
self.max_mahasiswa = max_mahasiswa
self.mahasiswa = []
def tambah_mahasiswa(self, nama):
if len(self.mahasiswa) < self.max_mahasiswa:
self.mahasiswa.append(nama)
return True
else:
return "Error: Maaf kelas Penuh"
def rerata_nilai(self):
sum_ = 0
for siswa in self.mahasiswa:
sum_ += siswa.nilai_mahasiswa()
# perhatikan disini kita melakukan ini karena siswa adalah objek
# objek siswa punya methode "nilai_mahasiswa"
return sum_/len(self.mahasiswa)
m1 = Mahasiswa('Udin', 77)
m2 = Mahasiswa('Ucok', 67)
m3 = Mahasiswa('Asep', 87)
kelas = Kuliah('Kalkulus', 2)
kelas.tambah_mahasiswa(m1), kelas.tambah_mahasiswa(m2)
(True, True)
'Nilai rata-rata kelas ', kelas.nama, ' adalah = ', kelas.rerata_nilai()
('Nilai rata-rata kelas ', 'Kalkulus', ' adalah = ', 72.0)
Outline Lesson ADSP-05:¶
- Inheritance
- Super Function
- Method Overriding/Overwriting
inheritance di OOP (Python)¶
- Ketika child class diwariskan property dari class parent, maka hal ini disebut inheritance
Mengapa menggunakan inheritance?¶
- Code reusability: bayangkan seperti "template".
- Transition & Readability: Baik untuk teamwork.
- Realworld Relationship: Hubungan antar class/objects
# Contoh paling sederhana inheritance
class Ortu:
def pungsi1(self):
print("ini fungsi di orang tua")
class Anak(Ortu):
def pungsi2(self):
print("ini fungsi di anak")
sulung = Anak()
# PERHATIKAN "sulung" memiliki fungsi dari "Ortu"
sulung.pungsi1(), sulung.pungsi2()
ini fungsi di orang tua ini fungsi di anak
(None, None)
# Menggunakan init seperti lesson sebelumnya (ADSP-04)
class Ortu:
def __init__(self, nama='Bambang', umur='40'):
self.nama = nama
self.umur = umur
def pungsi1(self):
print("ini fungsi di orang tua")
def info(self):# Method dari class seperti Lesson sebelumnya
print("Nama = {}, Umur = {}".format(self.nama, self.umur))
class Anak(Ortu):
def __init__(self, nama, umur, anakKe):
Ortu.__init__(self, nama, umur)
self.anakKe = anakKe
def pungsi2(self):
print("ini fungsi di anak")
def info(self):
print("Nama = {}, Umur = {}, anak Ke-{}".format(self.nama, self.umur, self.anakKe))
sulung = Anak("Budi", 5, 2) # Property/Method "Ortu" di OVERWRITE oleh "Anak"
print(sulung.info())
Nama = Budi, Umur = 5, anak Ke-2 None
- Single: 1 child, 1 parent (Contoh sebelumnya)
- Multiple: Parent>1
- Multilevel: Child menjadi Parent bagi Child lain
- Hierarchical: Hybrid dari jenis diatas.
- image source: https://www.edureka.co/blog/object-oriented-programming-python/
# Contoh Multiple Inheritance
class Ayah:
def __init__(self, nama='Bambang', umur='40'):
self.nama = nama
self.umur = umur
def pungsiAyah(self):
print("ini fungsi di Ayah")
def info(self):
print("Nama = {}, Umur = {}".format(self.nama, self.umur))
class Ibu:
def __init__(self, nama='Wati', umur='40'):
self.nama = nama
self.umur = umur
def pungsiIbu(self):
print("ini fungsi di Ibu")
def info(self):# Method dari class seperti kuliah sebelumnya
print("Nama = {}, Umur = {}".format(self.nama, self.umur))
class Anak(Ayah, Ibu):
def __init__(self, nama, umur, anakKe):
Ayah.__init__(self, nama, umur)
self.anakKe = anakKe
def pungsiAnak(self):
print("ini fungsi di anak")
def info(self):
print("Nama = {}, Umur = {}, anak Ke-{}".format(self.nama, self.umur, self.anakKe))
sulung = Anak("Budi", 5, 2) # Property/method "Ayah & Ibu" diwariskan ke "Anak"
print(sulung.pungsiAyah(), sulung.pungsiIbu())
ini fungsi di Ayah ini fungsi di Ibu None None
# Contoh Multilevel Inheritance
class Kakek:
def __init__(self, nama='Iwan', umur='40'):
self.nama = nama
self.umur = umur
def pungsiKakek(self):
print("ini fungsi di Kakek")
def info(self):# Method dari class seperti kuliah sebelumnya
print("Nama = {}, Umur = {}".format(self.nama, self.umur))
class Ortu(Kakek):
def __init__(self, nama='Parto', umur='40'):
self.nama = nama
self.umur = umur
def pungsiOrtu(self):
print("ini fungsi di Ortu")
def info(self):
print("Nama = {}, Umur = {}".format(self.nama, self.umur))
class Anak(Ortu):
def __init__(self, nama, umur, anakKe):
Ayah.__init__(self, nama, umur)
self.anakKe = anakKe
def pungsiAnak(self):
print("ini fungsi di anak")
def info(self):
print("Nama = {}, Umur = {}, anak Ke-{}".format(self.nama, self.umur, self.anakKe))
sulung = Anak("Budi", 5, 2) # Property/method "Ortu dan Kakek" diwariskan ke "Anak"
print(sulung.pungsiKakek())
ini fungsi di Kakek None
# Contoh Hierarchical inheritance
class Kakek:
def __init__(self, nama='Iwan', umur='40'):
self.nama = nama
self.umur = umur
def pungsiKakek(self):
print("ini fungsi di Kakek")
def info(self):
print("Nama = {}, Umur = {}".format(self.nama, self.umur))
class Ortu(Kakek):
def __init__(self, nama='Parto', umur='40'):
self.nama = nama
self.umur = umur
def pungsiOrtu(self):
print("ini fungsi di Ortu")
def info(self):
print("Nama = {}, Umur = {}".format(self.nama, self.umur))
class Paman():
def __init__(self, nama='Denis', umur='32'):
self.nama = nama
self.umur = umur
def pungsiPaman(self):
print("ini fungsi di Paman")
def info(self):
print("Nama = {}, Umur = {}".format(self.nama, self.umur))
class Anak(Paman, Ortu):
def __init__(self, nama, umur, anakKe):
Paman.__init__(self, nama, umur)
self.anakKe = anakKe
def pungsiAnak(self):
print("ini fungsi di anak")
def info(self):
print("Nama = {}, Umur = {}, anak Ke-{}".format(self.nama, self.umur, self.anakKe))
sulung = Anak("Budi", 5, 2)
print(sulung.pungsiPaman(), sulung.pungsiKakek())
ini fungsi di Paman ini fungsi di Kakek None None
Super Function¶
class Ortu():
def pungsiOrtu(self):
print("ini fungsi di Ortu")
class Anak(Ortu):
def pungsiAnak(self):
super().pungsiOrtu()
print("ini di dalam fungsi Anak")
sulung = Anak()
sulung.pungsiAnak()
ini fungsi di Ortu ini di dalam fungsi Anak
Method Overriding/Overwriting¶
- MO merubah fungsi di class Parent.
class Ortu():
def pungsi(self):
print("ini fungsi di Ortu")
class Anak(Ortu):
def pungsi(self): # Perhatikan Nama fungsi Sama
print("ini di dalam fungsi Anak")
sulung = Anak()
sulung.pungsi()
ini di dalam fungsi Anak
Code Lesson ADSP-05
Code dari lesson ini dapat di akses di Link berikut (wajib login ke Google/Gmail): Code ADSP-05
Di link tersebut anda langsung bisa merubah code dan menjalankannya. Keterangan lebih lanjut di video yang disertakan.
Sangat disarankan untuk membuka code dan video "side-by-side" untuk mendapatkan pengalaman belajar yang baik. SIlahkan modifikasi (coba-coba) hal lain, selain yang ditunjukkan di video untuk mendapatkan pengalaman belajar yang lebih mendalam. Tentu saja juga silahkan akses berbagai referensi lain untuk memperkaya pengetahuan lalu diskusikan di forum yang telah disediakan.

No comments:
Post a Comment
Relevant & Respectful Comments Only.