Disusun Oleh:
Arif Fadllullah
A. TUJUAN
B. PETUNJUK
Awali setiap praktikum dengan berdoa agar mendapatkan keberkahan dan kemudahan dalam mengerjaka
Baca modul dengan seksama dan pahami tujuan dan dasar teori dengan baik.
Kerjakan latihan-latihan dan tugas-tugas praktikum dengan baik, benar, sabar, teliti, dan jujur.
Tanyakan kepada asisten praktikum/dosen pengampu apabila ada hal dalam modul yang kurang jelas.
C. DASAR TEORI
1. Inheritance
Salah satu keuntungan utama dari OOP adalah penggunaan kembali kelas yang dibuat ke
dalam kelas yang lebih khusus, atau dalam istilahnya disebut dengan pewarisan (inheritance).
Ini memungkinkan programmer untuk menulis kode yang lebih baik, karena dengan
menggunakan inheritance, programmer dapat menggunakan semua atribut dan method yang
tersedia di kelas dasar untuk dipakai kembali ke dalam kelas turunan tanpa perlu menulis kode
dari awal. Kelas yang mewariskan disebut dengan superclass/parent class/base class,
sedangkan kelas yang mewarisi (class yang baru) disebut dengan subclass/child class/derived
class.
Subclass tidak dapat mewarisi anggota method atau artibut bersifat private dari
superclass- nya. Dengan inheritance, kelas yang baru (subclass) akan mirip dengan kelas yang
lama (superclass) namun memiliki karakteristik tambahan. Kelebihan python adalah satu
subclass bisa memiliki lebih dari satu superclass (multiple inheritance), sedangkan superclass
bisa memiliki satu subclass atau lebih. Berikut ini adalah sintaks dasar penerapan inheritance:
Single Inheritance
class KelasDasar:
#Body dari superclass/parentclass bernama KelasDasar
class KelasTurunan(KelasDasar):
#Body dari subclass/childclass bernama KelasTurunan yang
dapat memanggil superclass
Multilevel Inheritance
class KelasDasar:
#Body dari superclass/parentclass bernama KelasDasar
class KelasTurunan(KelasDasar):
#Body
dari subclass bernama KelasTurunan yang
dapat memanggil superclass
class KelasTurunan2(KelasTurunan):
#Body dari subclass bernama KelasTurunan2 yang
dapat memanggil subclass KelasTurunan
Hierarchical Inheritance
class KelasDasar:
#Body dari superclass/parentclass bernama KelasDasar
class KelasTurunan(KelasDasar):
#Body dari subclass bernama KelasTurunan yang
dapat memanggil superclass
class KelasTurunan2(KelasDasar):
#Body dari subclass bernama KelasTurunan2 yang
dapat memanggil superclass
Multilevel Inheritance
class KelasDasar:
#Body dari superclass/parentclass bernama KelasDasar
class KelasDasar2:
#Body dari superclass/parentclass bernama KelasDasar2
class KelasTurunan(KelasDasar, KelasDasar2):
#Body dari subclass bernama KelasTurunan yang memanggil 2
superclass, yaitu KelasDasar dan KelasDasar2
Output
Gambar 5.1 menunjukkan bahwa pertama kali kelas yang dibuat sebagai superclass
adalah kelas Tanggal yang meneruskan object sebagai argumen. Object di sini adalah kelas
bawaan yang disediakan oleh Python. Kemudian dibuat kelas lain yang disebut Waktu dengan
kelas Tanggal sebagai argumennya. Melalui panggilan ke superclass-nya, maka kelas Waktu
mendapatkan akses ke semua atribut dan method yang tersedia pada kelas Tanggal, kecuali ada
enkapsulasi private.
Saat suatu objek yang akan disimpan dan diolah perlu dipecah lagi ke dalam sub-sub
objek. Misalnya, kita ingin menyimpan object dengan nama HEWAN, maka instance/object
data yang bisa dibuat adalah AN, Kucing, Burung, Ikan. Akan tetapi bagaimana jika instance
yang akan diisi adalah poodle, pitbull, bulldog untuk jenis anjing. Persia, anggora, siam, russian
blue untuk jenis kucing. Kenari, elang, kelelawar untuk jenis burung. Bandeng, Hius, Paus,
Lele untuk jenis Ikan? Maka jika ini terjadi, Anjing, Kucing, Burung dan Ikan bukan lagi
sekedar instance, tetapi naik satu tingkat menjadi subclass dengan superclass-nya adalah
HEWAN.
Gambar 5.2 menunjukkan hierarki dalam membuat kelas inheritance, dimana:
ANIMAL : Superclass HEWAN
Cat : Subclass dari Kelas ANIMAL
Dog : Subclass dari Kelas ANIMAL
Dalam Python, konstruktor kelas digunakan untuk membuat objek (instance), dan menetapkan
nilainya untuk atribut. Konstruktor subclass selalu memanggil sebuah konstruktor kelas induk
(superclass) untuk menginisialisasi nilai atribut dari kelas induk, baru kemudian menetapkan
nilai untuk atributnya.
2. Polymorphism
Polymorphism di bangun berdasarkan dua suku kata, yaitu Poly (banyak) dan Morphism
(bentuk). Artinya adalah fungsi maupun method yang sama dapat digunakan pada tipe yang
berbeda, sehingga memungkinkan kita untuk mendefinisikan method pada childclass dengan
menggunakan nama yang sama seperti pada method di parentclass. Hal ini tentu mmembuat
programming lebih intuitif dan mudah. Dalam bahasa pemrograman berorientasi objek pada
Python, kita memiliki cara-cara yang berbeda untuk mendefinisikan polymorphism.
Output
Output
Gambar 5.4 menunjukkan contoh dua kelas, "Indonesia()" dan "Malaysia()" yang
didalamnya memiliki method dengan nama sama yaitu bahasa dan ibukota dengan
isian berbeda. Di sini, terdapat pernyataan for yang berulang melalui tupel untuk memanggil
objek. Saat memanggil tiap objek, isian method ikut dipanggil tanpa khawatir tertukar di tipe
kelas mana. Isian yang tampil dari method menyesuaikan dengan kelas yang membuat objek
tersebut. Inilah yang dimaksud konsep polymorphism dengan kelas.
Output
Gambar 5.5 menunjukkan bahwa kelas User merupakan parentclass/superclass yang dapat
mewariskan method yang didefinisikannya ke dalam kelas Admin sebagai subclass-nya.
Polymorphism dengan overriding method terlihat pada saat method message yang sudah
didefinisikan pada superclass itu definisikan ulang kembali di kelas Admin selaku subclass-
nya. Dengan kata lain, saat kita membuat objek dengan kelas Admin, maka init
construtor diambil dari superclass-nya, sedangkan method message diambil dari kelas
Admin itu sendiri.
Kemudian, apakah bisa jika kita ingin membangun init constructor di superclass
dan subclass sekaligus, dengan kriteria atribut di init constructor pada subclass
mengambil sebagian dari init constructor superclass-nya?
Jawabannya bisa. Caranya dengan menambahkan fungsi Super pada init
constructor subclass untuk memanggil init constructor pada kelas induk/superclass
seperti yang ditunjukkan pada Gambar 5.6.
Output
Dari Gambar 5.6 menunjukkan bahwa atribut yang sifatnya umum cukup didefinisikan pada
init constructor superclass, sedangkan atribut yang spesifik dapat didefinisikan pada init
contructor subclass. Ini berguna untuk memisahkan atribut dengan fungsionalitas umum
daripada atribut spesifik yang dapat menghilangkan duplikasi kode dan menghubungkan
kelas satu sama lain dalam desain sistem secara keseluruhan. Beberapa kesimpulan terkait
inheritance init constructor adalah:
a) init seperti metode lainnya; itu bisa diwariskan
b) Jika sebuah kelas tidak memiliki init constructor, maka Python akan memeriksa
kelas induknya/ parentclass.
c) Segera setelah menemukannya, Python memanggilnya dan berhenti mencari.
d) Kita dapat menggunakan fungsi super() untuk memanggil method di kelas induk.
D. LATIHAN PRAKTIKUM
1. Menerapkan Single Inheritance
Tuliskan skrip python di atas pada lembar kerja visual studio code Anda, kemudian running
(tekan ctrl + F5), lihat dan identifikasi apa yang terjadi. Berikan komentar/penjelasan di setiap
baris skrip Python yang penting dan screenshot hasil eksekusi tampilkan disini:
baris skrip Python yang penting dan screenshot hasil eksekusi tampilkan disini:
© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 11
MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK
Tuliskan skrip python di atas pada lembar kerja visual studio code Anda, kemudian running
(tekan ctrl + F5), lihat dan identifikasi apa yang terjadi. Berikan komentar/penjelasan di setiap
baris skrip Python yang penting dan screenshot hasil eksekusi tampilkan disini:
Tuliskan skrip python di atas pada lembar kerja visual studio code Anda, running (tekan ctrl +
F5), lihat dan identifikasi apa yang terjadi. Berikan komentar/penjelasan di setiap baris skrip
Python yang penting dan screenshot hasil eksekusi tampilkan disini:
Tuliskan skrip python di atas pada lembar kerja visual studio code Anda, running (tekan ctrl +
F5), tunjukkan mana bagian skrip yang menunjukkan inheritance kelas dan mana bagian skrip
yang menunjukkan polymorphism. Berikan komentar/penjelasan di setiap baris skrip Python
yang penting dan screenshot hasil eksekusi tampilkan disini:
TUGAS PRAKTIKUM
1. Buatlah aplikasi dengan menerapkan konsep OOP Inheritance dengan rincian:
a) Buat sebanyak 3 kelas, yaitu kelas Tegangan(), kelas Daya() dan kelas Energi(),
dengan kriteria: Tegangan() merupakan parentclass dari Daya(), sedangkan
Daya() merupakan paretclass dari Energi().
b) Untuk Tegangan() didefinisikan init constructor dengan atribut I sebagai
masukan data kuat arus listrik (satuan A) dan atribut R sebagai masukan data hambatan
(satuan ohm).
c) Untuk Tegangan() didefinisikan juga method hasilTegangan yang digunakan
untuk menghitung nilai tegangan dengan mengalikan nilai I dengan R.
d) Untuk Daya(Tegangan) didefinisikan method hasilDaya yang digunakan untuk
menghitung nilai daya yang mengalikan nilai dari luaran method hasilTegangan dari
kelas Tegangan() dengan I.
Catatan Rumus:
V = I.R
P = V.I
W = P.t
Berikan komentar/penjelasan di setiap baris skrip Python yang telah dibuat dan screenshot hasil
eksekusi tampilkan disini:
Input :
E. KESIMPULAN
Pengalaman apa yang kamu peroleh setelah mempelajari Modul 5 ini. Silahkan tulis disini:
Pada modul 5 ini saya mempelajari konsep lanjutan dari class, yaitu Inheritance dan
polymorphism, yang dimana pada Inheritance ini membuat superclass dan subclass. Dan
pada polymorphism membuat dua kelas yang didalamnya memiliki method dengan nama
yang berbeda dengan isian yang sama dan juga terdapat pernyataan for yang berulang
melalui tupel untuk memanggil objek tersebut.
F. DAFTAR PUSTAKA