Jobsheet Praktikum OOP (v1.0)
7 – Inheritance PENDAHULUAN Dalam dunia nyata, ada kalanya antara objek yang satu dengan objek yang lain memiliki kesamaan sifat. Contohnya antara objek sepeda dengan motor memiliki kesamaan berupa memiliki roda, setir, rem dsb. Disamping ada persamaan sifat dari sepeda dan motor, terdapat juga perbedaan, misalkan mesin dsb. Kesamaan-‐ kesamaan sifat antara sepeda dan motor tersebut menunjukan bahwa baik sepeda maupun motor keduanya tergolong alat transportasi darat. Atribut seperti roda, rem, setir dsb tersebut sebenarnya merupakan atribut dari alat transportasi darat. Jadi bisa disimpulkan bahwa sebenarnya motor dan sepeda sebenarnya merupakan turunan dari alat transportasi darat. Atribut-‐atribut seperti roda, setir dan rem diturunkan dari alat transportasi darat ke sepeda dan motor. Tidak hanya atribut, perilaku yang dimiliki oleh alat transportasi darat seperti bisa berjalan, berhenti dsb juga diturunkan ke sepeda dan motor. Artinya sepeda dan motor juga bisa melakukan fungsi berjalan dan berhenti. Ide tersebut yang juga diimplementasikan dalam konsep OOP. Konsep tersebut dinamakan pewarisan sifat atau inheritance. Dengan konsep inheritance, suatu class bisa menurunkan sifat (atribut dan method) yang dimiliki ke class yang lain. Class yang menurunkan sifatnya ke class yang lain disebut sebagai super class/parent class/base class. Sedangkan class yang menurun dari class yang lain disebut sebagai child class/sub class. Inheritance merupakan konsep yang sebenarnya sederhana tapi sangat powerful. Ketika kita menginginkan untuk membuat suatu class baru, dan sebelumnya sudah ada class yang memiliki atribut maupun method yang diinginkan, maka kita tinggal membuat class baru tersebut menurun dari class yang sebelumnya sudah ada tadi. Sehingga tidak perlu dituliskan kembali (reuse) atribut dan method yang sudah ada di class sebelumnya di dalam class yang baru (karena atribut dan method tersebut sudah diwarisi dari super class-‐nya). Dalam diagram class, relasi inheritance digambarkan dengan anak panah, dimana mata anak panah berbentuk segitiga kosong. Motor AlatTransportasiDarat + mesin + roda + setir + rem
+ berjalan() + berhenti
Sepeda + pedal
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
PERCOBAAN 1 Tujuan: 1. Memahami konsep dasar inheritance 2. Bisa membuat suatu subklas dari suatu superklas tertentu 3. Bisa mengimplementasikan konsep single dan multilevel inheritance 4. Bisa membuat objek dari suatu subklas dan melakukan pengkasesan terhadap atribut dan method (baik yang dimiliki sendiri atau harus turunan dari superklas nya). 5. Memahami penggunakan kata kunci super.namaAtribut dan super.namaMethod() Prosedur Percobaan: 1. Buatlah klas sesuai dengan diagram klas di bawah ini:
Keterangan: a) Method tampilDataPokokPegawai() menampilkan data nip, nama, gaji dan alamat b) Method tampilDataProgrammer, menampilkan juga data nip, nama, gaji, alamat disertai dengan bonus dan gaji total c) Method tampilDataManajer, menampilkan juga data nip, nama, gaji, alamat disertai dengan tunjanganJabatan dan gaji total d) Method tampilDataPemegangSaham, menampilkan juga data nip, nama, gaji, alamat disertai dengan tunjanganJabatan, deviden, dan gaji total e) Catatan: missal pada method tampilDataProgrammer() yang ada di klas Programmer, untuk menampilkan data nip, nama, gaji dan alamat, tidak dilakukan dengan menulis manual satu persatu di dalam
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
method tampilDataProgrammer(), tapi dilakukan dengan memanggil method tampilDataPokokPegawai() yang diwarisi dari klas Pegawai, dimana pemanggilan tsb dilakukan di dalam method tampilDataProgrammer(). Hal serupa juga dilakukan di dalam method tampilDataManajer() dan tampilDataPemegangSaham(). 2. Tampilan Program sebagai berikut: a. Klas Pegawai
b. Klas Programmer
c. Klas Manajer
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
d. Klas PemegangSaham
3. Buat Main klas
Tampilannya seperti berikut ini:
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
4. Jawablah pertanyaan di bawah ini: a. Apakah klas Programmer merupakan Sub Class dari klas Pegawai? Kata kunci apakah yang digunakan untuk menurunkan suatu klas dari klas lain? ………………………………………………………………………………………………… ………………………………………………………………………………………………… b. Dari Relasi antara klas Programmer dan Pegawai, mana yang berposisi sebagai super class dan mana yang sub class? ………………………………………………………………………………………………… ………………………………………………………………………………………………… c. Dari klas-‐klas di atas, manakah yang menunjukan relasi Single Inheritance? Dan mana juga yang merupakan Multilevel Inheritance? ………………………………………………………………………………………………… ………………………………………………………………………………………………… d. Perhatikan kode program klas Programmer. Atribut apa saja yang dimiliki oleh klas tersebut? Dan sebutkan mana diantara atribut tersebut yang diwarisi dari klas Pegawai? ………………………………………………………………………………………………… ………………………………………………………………………………………………… e. Perhatikan baris program ke 12 dari klas Programmer. Terlihat di baris tersebut diakses super.gaji, untuk apakah hal itu dilakukan? ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… f. Perhatikan baris program ke 18 klas PemegangSaham. Terlihat di baris tersebut atribut gaji dan tunjanganJabatan bisa diakses langsung. Kenapa hal ini bisa terjadi? Dan Bagaimana bisa klas PemegangSaham memiliki atribut gaji dan tunjanganJabatan tersebut, padahal dalam klas PemegangSaham tidak dideklarasikan atribut gaji dan tunjanganJabatan? ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… …………………………………………………………………………………………………
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
g. Perhatikan lagi baris program 16 klas PemegangSaham. Terlihat super.tampilDataManajer(). Untuk apa hal ini dilakukan? ………………………………………………………………………………………………… ………………………………………………………………………………………………… h. Perhatikan lagi baris program 16 klas PemegangSaham, bisakah sintaks super. tampilDataManajer () diganti dengan tampilDataManajer () saja (tanpa kata super) ?Jelaskan jawaban Anda! ………………………………………………………………………………………………… ………………………………………………………………………………………………… 5. Ambil kesimpulan dari percobaan dan jawaban pertanyaan di atas (tentang kata kunci extends, subclass, superclass, single inheritance, multilevel inheritance, kata kunci super.atribut dan super.method() ) ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… …………………………………………………………………………………………………
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
PERCOBAAN 2 Tujuan: 1. Memahami proses instansiasi pada subklas 2. Memahami urutan jalannya konstruktor pada saat instansiasi objek dari suatu subklas 3. Memahami penggunaan super(). Prosedur Percobaan: 1. Dari program yang telah Anda buat pada Percobaan 1 sebelumnya, akan dilakukan beberapa modifikasi. 2. Lihat program klas Main. Buatlah objek lagi dari klas Manajer dengan menggunakan konstruktor berparameter.
Coba perhatikan hasil keluaran program.
3. Kemudian coba ubah isi konstruktor default klas Manajer sbb:
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
ß
Tambahkan kata super() di baris pertama dalam konstruktor defaultnya. Coba jalankan kembali klas Main, dan terlihat tidak ada perbedaan dari hasil outputnya. 4. Kemudian coba ubah isi konstruktor default klas Manajer sbb:
ßß Letakan kata super() di baris kedua dalam konstruktor defaultnya. Dan terlihat ada error. Kemudian kembaikan posisi super() ke baris pertama seperti sebelumnya dan error akan hilang. 5. Jawab pertanyaan di bawah ini: a. Perhatikan klas PemegangSaham, apakah klas tersebut memiliki konstruktor? Konstruktor jenis apa yang dimilikinya? ………………………………………………………………………………………………… ………………………………………………………………………………………………… b. Perhatikan hasil keluaran ketika klas Main dijalankan. Jelaskan kenapa bisa tampil
pada saat instansiasi objek ps dari klas PemegangSaham? Jelaskan bagaimana sebenarnya urutan proses jalannya konstruktor saat objek ps dibuat! ………………………………………………………………………………………………… …………………………………………………………………………………………………… …………..……………………………………………………………………………………… ………………………………………………………………………………………………… …………………………………………………………………………………………………. c. Perhatikan hasil keluaran ketika klas Main dijalankan. Jelaskan kenapa bisa tampil pada saat instansiasi objek m dari klas Manajer? Jelaskan bagaimana sebenarnya urutan proses jalannya konstruktor saat objek m dibuat! ………………………………………………………………………………………………… …………………………………………………………………………………………………… …………..……………………………………………………………………………………… …………………………………………………………………………………………………
Imam Fahrur Rozi, PSMI -‐ Polinema
Jobsheet Praktikum OOP (v1.0)
…………………………………………………………………………………………………. d. Perhatikan isi dari konstrutor berparameter klas PemegangSaham. ßß
Apa sebenarnya guna dari super(tunjanganJabatan, nip, nama, gaji, alamat) tersebut? ………………………………………………………………………………………………… …………………………………………………………………………………………………
e. Perhatikan isi dari konstrutor default klas Manajer. ßß
Apa sebenarnya guna dari super() tersebut? ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… f. Kenapa jika super() diletakkan di baris kedua dst (tidak di baris pertama) akan terjadi error? ……………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… g. Ambil kesimpulan berdasar hasil percobaan dan jawaban dari perntayaan di atas (tentang urutan proses instansiasi objek dari suatu subclass, guna dan cara penggunaan kata kunci super() ). ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… …………………………………………………………………………………………………
Imam Fahrur Rozi, PSMI -‐ Polinema