Anda di halaman 1dari 25

MODUL PRAKTIKUM

PEMROGRAMAN BERORIENTASI OBJEK

Disusun Oleh:
Arif Fadllullah

LABORATORIUM SISTEM INFORMASI DAN KOMPUTASI CERDAS


JURUSAN TEKNIK KOMPUTER, UNIVERSITAS BORNEO TARAKAN |
Jalan Amal Lama No. 1, Tarakan, Kalimantan Utara
MODUL 5 TAHUN 2022

INHERITANCE DAN POLYMORPHISM


DALAM OOP PYTHON
MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

A. TUJUAN

 Dapat memahami konsep inheritance dalam OOP Python.


 Dapat memahami konsep polymorphism dalam OOP Python.
 Dapat menerapkan inheritance dan polymorphism dalam OOP Python.

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):

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 2


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

#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

Contoh penggunaannya dapat dilihat seperti Gambar 5.1 berikut ini.

Output

Gambar 5.1 Contoh Source Code Sederhana Inheritance

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 3


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

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.

Kapan kita perlu membuat kelas inheritance?

Gambar 5.2 Hierarki Kelas Inheritance

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.

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 4


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

 Polymorphism dengan Fungsi dan Objek

Output

Gambar 5.3 Polymorphism dengan Fungsi dan Objek


Gambar 5.3 menunjukkan contoh sebuah fungsi dengan nama "lihat()" yang akan
mengambil objek yang akan kita beri nama "buah". Kemudian objek “buah” dalam fungsi
“lihat” memanggil method tipe() dan warna() yang telah didefinisikan berbeda
untuk dua kelas “Tomat” dan “Apel”. Saat kita membuat instantiasi kelas 'Tomat' dan
'Apel' ke dalam objek1 dan objek2 dan dipanggi dengan fungsi lihat, maka terlihat
method tipe() dan warna(), menghasilkan nilai berbeda karena didefinisikan
berbeda dari dua kelas. Inilah yang dimaksud konsep polymorphism dengan fungsi.

 Polymorphism dengan Kelas

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 5


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Output

Gambar 5.4 Polymorphism dengan Kelas

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.

 Polymorphism dengan Inheritance Kelas (Pewarisan)


Polimorfisme dengan inheritance kelas maksudnya adalah method yang didefinisikan di
subclass/childclass dapat memiliki nama yang sama dengan method di
parentclass/superclass. Jika dalam inheritance, subclass mewarisi method dari superclass.
Sedangkan polymorphism dengan inheritance, selain mewarisi, juga dimungkinkan untuk
memodifikasi nilai method di subclass yang diwarisi dari kelas superclass. Ini sebagian
besar digunakan dalam kasus, di mana method yang diwarisi dari superclass tidak sesuai
isiannya dengan subclass. Proses penerapan kembali method yang sudah didefinisikan di
superclass ke subclass ini pada kelas Inheritance dikenal sebagai Metode Overriding.
Polymorphism dengan Inheritance (Pewarisan) ditunjukkan pada Gambar 5.5.

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 6


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Output

Gambar 5.5 Polymorphism dengan Inheritance

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.

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 7


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Output

Gambar 5.6 Polymorphism dengan Inheritance Method dan Init Constructor

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

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 8


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:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 9


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 10


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

2. Menerapkan Multilevel Inheritance


Modifikasi skrip python dari latihan praktikum 1 (Menerapkan Single Inheritance) dengan
membuat kelas baru bernama AnakKucing yang memiliki parentclass-nya adalah kelas
Kucing. Kelas AnakKucing ini memiliki method dengan nama minum yang akan
mencetak tulisan “Minum Susu”. Selanjutnya buatlah objek baru yang dibuat berdasarkan kelas
AnakKucing dan panggillah method .status(), .bicara(), .jumlahkaki()
dan
.minum(). Lihat dan identifikasi apa yang terjadi. Berikan komentar/penjelasan di setiap

baris skrip Python yang penting dan screenshot hasil eksekusi tampilkan disini:
© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 11
MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 12


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

3. Menerapkan Hierarchical Inheritance

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 13


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:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 14


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 15


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

4. Menerapkan Multiple Inheritance

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 16


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

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:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 17


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 18


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 19


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

5. Menerapkan Polymorphism dengan Inheritance Kelas

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:

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 20


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

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.

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 21


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

e) Untuk Energi(Daya) didefinisikan init constructor dengan atribut t sebagai


masukan data waktu (satuan detik) dan fungsi super untuk memanggil atribut I dan R
dari superclass, serta method hasilEnergi yang digunakan untuk menghitung nilai
energi dengan cara mengalikan luaran method hasilDaya pada kelas Daya()dengan
atribut t.
f) Teknik instansiasi objek (sintaks setelah pendefinisian kelas) yang dilakukan kurang lebih
sebagai berikut:
Input Output
obj_hitung = Energi(7,5,2)

print("Nilai I =", obj_hitung.I,"A") Nilai I = 7 A


print("Nilai R =", obj_hitung.R,"ohm") Nilai R = 5 ohm
print("Nilai t =", obj_hitung.t,"detik") Nilai t = 2 detik

print("Tegangan Listrik yang dihasilkan


sebesar Tegangan Listrik yang dihasilkan
=",obj_hitung.hasilTegangan(),"Volt") sebesar = 35 Volt

print("Daya Listrik yang dihasilkan Daya Listrik yang dihasilkan


sebesar =",obj_hitung.hasilDaya(),"Watt") sebesar = 245 Watt

print("Energi Listrik yang dihasilkan


sebesar Energi Listrik yang dihasilkan
=",obj_hitung.hasilEnergi(),"KWh") sebesar = 490 KWh

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 :

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 22


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

2. Buatlah sebuah aplikasi sederhana dengan menerapkan Polymorphism dengan Inheritance


Class untuk menyelesaikan suatu permasalahan bidang Teknik Komputer (Skrip Python
disertai penjelasan dan screenshot hasil eksekusi tampilkan disini)

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 23


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 24


MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

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

© 2022 Jurusan Teknik Komputer, Fakultas Teknik, UBT 25

Anda mungkin juga menyukai