Upload
chomala-kioko-love-chanshine
View
157
Download
6
Embed Size (px)
Citation preview
LAPORAN PRAKTIKUM
PEMROGRAMAN BERBASIS OBJEK
Modul 3
(Inheritance)
Disusun :
Untuk Memenuhi Matakuliah
Praktikum Pemrograman Berbasis Objek
yang dibimbing oleh Bapak Heru Wahyu Herwanto, S.T., M.KOM
Asisten Praktikum:
1. Sandya Yuda Pratama
2. Muhammad Lukman Hakim
Oleh:
Adhe Noer Khomala Dewi (120533430978)
S1 PTI 2012 offering D
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA
UNIVERSITAS NEGERI MALANG
OKTOBER 2013
Modul Praktikum III
( Inheritance / Pewarisan )
A. TUJUAN
1. Mahasiswa mampu memahami konsep inheritance (pewarisan).
2. Mahasiswa mampu mendefinisikan superclasses dan subclasses
3. Mahasiswa mampu memahami Override method dari superclass
4. Mahasiswa mampu menerapkan keyword this.
B. DASAR TEORI
Inheritance
- Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai
entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat mempunyai class
turunan. Suatu class yang mempunyai class turunan dinamakan parent class atau base class.
Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. Suatu
subclass dapatmewarisi apa-apa yang dipunyai oleh parent class-nya, sehingga member dari
suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apa-apa yang ia warisi dari
class parent-nya. Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak lain
hanya memperluas (extend) parent class-nya.
- Di dalam Java untuk mendeklarasikan suatu class sebagai subclass dilakukan dengan cara
menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan
nama parent class-nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita
ingin melakukan perluasan class.
Berikut adalah contoh deklarasi inheritance:
Contoh:
public class B extends A
{
...
}
Contoh diatas memberitahukan kompiler Java bahwa kita ingin meng-extend class A ke class
B. Dengan kata lain, class B adalah subclass (class turunan) dari class A, sedangkan class A
adalah parent class dari class B.
- Java hanya memperkenankan adanya single inheritance. Konsep single inheritance hanya
memperbolehkan suatu sublass mempunyai satu parent class. Dengan konsep single
inheritance ini, masalah pewarisan akan dapat diamati dengan mudah.
- Dalam konsep dasar inheritance dikatakan bahwa suatu subclass adalah tidak lain hanya
memperluas (extend) parent class-nya. Contoh :
Pada saat class Manajer menurunkan atau memperluas (extend) class Pegawai, maka
ia mewarisi data member yang dipunyai oleh class Pegawai. Dengan demikian, class Manajer
mempunyai data member yang diwarisi oleh Pegawai (nama, gaji), ditambah dengan data
member yang ia punyai (departemen).
- Pengaksesan member yang ada di parent class dari subclass-nya tidak jauh berbeda dengan
pengaksesan member subclass itu sendiri.
- Suatu parent class dapat tidak mewariskan sebagian member-nya kepada subclass-nya. Sejauh
mana suatu member dapat diwariskan ke class lain, ataupun suatu member dapat diakses dari
class lain, sangat berhubungan dengan access control (kontrol pengaksesan). Di dalam java,
control pengaksesan dapat digambarkan dalam tabel berikut ini:
Kata kunci super dipakai untuk merujuk pada member dari parent class, sebagaimana
kata kunci this yang dipakai untuk merujuk pada member dari class itu sendiri. Adapun
format penulisannya adalah sebagai berikut:
super.data_member → merujuk pada data member pada parent class
super.function_member() → merujuk pada function member pada parent class
super() → merujuk pada konstruktor pada parent class
Contoh:
public class Siswa
{
private int nrp;
public setNrp(int nrp)
{
this.nrp=nrp;
}
}
a. Cara Pewarisan Kelas
Kelas turunan secara prinsip dapat dibuat dengan menggunakan bentuk :
Class KelasTurunan extends Kelas Dasar
{
Tubuh kelas
}
b. Pemanggilan Konstruktor Super Kelas
Pada contoh sebelumnya , Superkelas tidak mengandung konstruktor. Bagaimana
jika superkelas memiliki konstruktor. Bagaimana apabila subkelas ingin memanggil
konstruktor. Anda bisa menggunakan kata kunci super.
Super (nama , nim );
Pemanggilan konstruktor kelas dasar harus memenuhi persyaratan
berikut :
Pemanggilan dengan super seperti diatas hanya bisa dilakukan pada konstruktor.
Pemanggilan konstruktor superkelas harus berkedudukan sebagai pernyataan pertama
dalam konstruktor.
c. Variabel this
Kata kunci this dipergunakan pada pembuatan kelas dan digunakan untuk menyatakan
objek sekarang.
void isiData(String warnaMobil,int tahunProduksiMobil)
{
warna = warnaMobil;
tahunProduksi = tahunProduksiMobil;
}
Bisa ditulis menjadi:
void isiData(String warna,int tahunProduksi)
{
this.warna = warnaMobil;
this.tahunProduksi = tahunProduksi;
}
Metode konstruktor atau biasa disebut konstruktor saja adalah metode yang dapat
digunakan untuk memberikan nilai awal saat objek diciptakan. Metode ini akan dipanggil
secara otomatis oleh java ketika new dipakai untuk menciptakan instan kelas. Konstruktor
mempunyai sifat:
- Namanya sama dengan nama kelas.
- Tidak memiliki nilai balik (termasuk tidak boleh ada kata kunci void)
d. Overloading
Overload adalah pembuatan metode-metode dengan nama yang sama tetapi jumlah parameter
dari metode-metode tersebut berbeda.
e. Overriding
Overriding menulis kembali method sama persis. Sama mulai dari nama method dan
isinya dan mengimplementasi kembali di subclassnya. Overriding dipakai saat kita
menggunakan method yang sama tapi berbeda implementasinya. Jadi overriding method
mempunyai nama method yang sama, jumlah parameter dan tipe parameter serta nilai
kembalian (return) method yang di override.
C. LATIHAN
Latihan 1
a. Source code I
(Printscreen program latihan 1 pada notepad++)
b. Output Program
c. Deskripsi Program
Program latihan 1 yang bernama Pertama.java di atas setelah di compile pada
command prompt akan memunculkan kalimat seperti pada gambar di atas Exception is
thread “main” java.lang.NoSuchMethodError. Ini tandanya program error karena tidak
ada public static void main di dalam programnya. Setiap program java harus memiliki
void main di dalam programnya, jika tidak akan error.
d. Source code II
(Printscreen program latihan 1 pada notepad++)
e. Output Program
f. Deskripsi Program
Program latihan 1 yang bernama Kedua.java di atas setelah di compile pada
command prompt akan memunculkan kalimat seperti pada gambar di atas Exception is
thread “main” java.lang.NoSuchMethodError. Ini tandanya program error karena tidak
ada public static void main di dalam programnya. Setiap program java harus memiliki
void main di dalam programnya, jika tidak akan error.
g. Source code III
(Printscreen program latihan 1 pada notepad++)
h. Output Program
i. Menghilangkan baris S1.terprotek() dari class TestPertamaKedua
j. Hasil Compile
k. Deskripsi Program
Perhatikan output pada TestPertamaKedua sebelum menghilangkan baris
S1.terprotek() dari class TestPertamaKedua dengan sesudah dihilangkan. Hasilnya akan
berbeda. Dioutput sebelumnya ada output “ method ini hanya untuk anaknya”. Di dalam
class pertama method void terprotected ini dipanggil di class TestPertamaKedua sehingga
menampilkan aoutput yanga ada di method void terprotected tadi. Sedangkan pada hasil
output yang dihilangkan baris S1.terprotek() output yang ada pada method terprotected
tadi tidak akan muncul.
l. Hapus semua file yang berektensi .class dari folder
m. Kompilasi class TestPertamaKedua saja. Perhatikan file apa yang dihasilkan
dari kompilasi tersebut :
Sebelum dihapus .class dalam folder
Setelah dihapus .classnya
Hasil file setelah TestPertamaKedua.java di compile
f. Deskripsi Program
Pada saat menghapus .class dan setelah dikompile TestPertamaKedua.java saja
maka akan langsung muncul .class di semua file. Ini menandakan di file
TestPertamaKedua.java ini program sudah ada void mainnya sehingga ketika di compile
tidak error dan file – file yang berhubungan dengan program tersebut akan memunculkan
.class. Berbeda jika kita mengkompile misalnya program Pertama.java maka program
akan error karena tidak ada void main di dalam programnya sehingga yang memunculkan
.class hanya Pertama.java yang dicompile tadi.
g. Jelaskan fungsi dari perintah this.getClass.getName();
System.out.println("\n Dipanggil pada : "+this.getClass().getName()+":");
statement ini digunakan untuk mencetak kata/kalimat/tanda yang berada di dalam
tanda kurung dan diantara tanda kutip pada tampilan output. Perintah
+this.getClass().getName()+ digunakan untuk mencetak nama class.
Latihan 2
a. Source code I
(Printscreen program latihan 1 pada notepad++)
Class Person
Class Employ
Class KonstruktorSuperKelas
b. Output Program
c. Deskripsi Program
Pada program di atas Person.java merupakan Parentclass sedangkan Employ.java
merupakan kelas turunan. Setiap pemanggilan dengan super seperti dalam program di atas
super (name, age) hanya bisa dilakukan pada konstruktor. Pemanggilan konstruktor
superkelas harus berkedudukan sebagai pernyataan pertama dalam konstruktor. Kata
kunci super dipakai untuk merujuk pada member dari parent class,
sebagaimana kata kunci this yang dipakai untuk merujuk pada
member dari class itu sendiri.
Di dalam program ini class Employ memperluas (extends) parent classnya ( Class
Person). Pada saat class Employ menurunkan atau memperluas class Person, maka ia
mewarisi data yang diwarisi oleh class Person. Dengan demikian, class Employ
mempunyai data karyawan yang diwarisi oleh Person (name, age), ditambahi data
karyawan yang ia punya (noKaryawan).
class Person {
Protected String name;
Protected int age;
}
class Employ extends Person{
Private String noKaryawan;
}
Latihan 3
a. Source code
b. Source code II
c. Ouput Program
d. Deskripsi Program
Pada program di atas class Hewan.java merupakan parent kelas sedangkan gajah.java
merupakan class turunan yang memperluas parent kelas. Pemanggilan dilakukan dengan
membuat objek baru kemudian memanggil method dari objek yang baru saja dibuat tadi.
Latihan 4
a. Source code ( Printscreen program latihan 1 pada notepad++)
Class A
Class B
Class DemoOverride2
b. Output Program
c. Deskripsi Program
Pada program diatas menggunakan kata kunci get untuk memanggil objek. Pada class A
merupakan parent class sedangkan Class B merupakan class turunan. Di dalam class B ini
menggunakan overriding. Overriding adalah suatu keadaan dimana method pada subclass
menolak pada parent classnya. Di dalam oveeriding ini maka nama method harus sama,
daftar parameter harus sama dan return typenya harus sama. Kelas turunan TIDAK
DAPAT mengakses private member kelas dasar, kelas lain juga TIDAK DAPAT
mengakses member kelas dasar secara langsung.
Latihan 5
a. Source code
Class Truck
b. Output Program
c. Source code
Class MountainTruck
d. Output Program
e. Modifikasi class MountainBike sedemikian sehingga mensimulasikan proses
perjalanan sepeda dari possisi diam sampai berjalan normal, kemuadian diikuti
dengan berjalan di tanjakan jalan, dilanjutkan lagi menuruni tanjakan dan diakhiri
dengan berhenti. Code yang dihasilkan :
Source Code:
Output:
D. TUGAS PRAKTIKUM
o Tugas Praktikum 1
Source Code ( Printscreen program latihan 1 pada notepad++)
Output Program
Deskripsi Program
Program di atas adalah membuat satu method pada kelas turunan yang meng-
override method pada kelas induk sehingga dapat membedakan antara overload method
dengan override method.
Overload adalah pembuatan method dengan nama yang sama tetapi jumlah parameter
dari method tersebut berbeda. Overriding menulis kembali method sama persis. Sama mulai
dari nama method dan isinya dan mengimplementasi kembali di subclassnya. Overriding
dipakai saat kita menggunakan method yang sama tapi berbeda implementasinya. Jadi
overriding method mempunyai nama method yang sama, jumlah parameter dan tipe
parameter serta nilai kembalian (return) method yang di override.
E. TUGAS RUMAH
1. Tugas Rumah 1
a. Source Code ( Printscreen program Tugas Rumah pada notepad++)
Output Program
Deskripsi Program
Pada program di atas Fakultas.java merupakan Parentclass sedangkan Jurusan.java
merupakan kelas turunan/anak. Setiap pemanggilan dengan super seperti dalam program
di atas super(Name, NIM); hanya bisa dilakukan pada konstruktor. Pemanggilan
konstruktor superkelas harus berkedudukan sebagai pernyataan pertama dalam
konstruktor. Kata kunci super dipakai untuk merujuk pada member dari parent
class, sebagaimana kata kunci this yang dipakai untuk merujuk
pada member dari class itu sendiri.
Di dalam program ini class Jurusan memperluas (extends) parent
classnya (class Fakultas). Pada saat class Jurusan menurunkan atau
memperluas class Fakultas, maka ia mewarisi data yang diwarisi
oleh class Fakultas. Dengan demikian, class Jurusan mempunyai
data Fakultas yang diwarisi oleh Fakultas (Name, NIM, Universitas,
Fakultas);, ditambahi data Jurusan yang ia punya (Jurusan, Prodi,
Angkatan).
F. KESIMPULAN
private, Tidak dapat diakses oleh kelas lain
protected, hanya dapat diakes oleh kelas turunan
public, dapat diakses oleh sebarang kelas.
Kelas turunan dapat mengakses atribut kelas induk dengan protected atau public.
Atribut yang di private tidak diturunkan dari kelas induk ke kelas anak.
Kelas turunan DAPAT mengakses setiap public member kelas dasar, kelas lain juga
DAPAT mengakses member kelas dasar secara langsung.
Kelas turunan TIDAK DAPAT mengakses private member kelas dasar, kelas lain juga
TIDAK DAPAT mengakses member kelas dasar secara langsung.
Kelas turunan DAPAT mengakses setiap protected member kelas dasar, TETAPI kelas
lain TIDAK DAPAT mengakses member kelas dasar secara langsung.
Konstruktor kelas induk dipanggil dari kelas anak dengan keyword.
Super() atau super (param 1, param 2, …., param n)
Kata kunci this digunakan dalam sebuah kelas untuk menyatakan object sekarang.
Contoh, kita membuat sebuah method dengan parameter dimana nama paremeter sama
dengan nama atribut kelas tersebut. Lalu kita akan menggunkan method tersebut, maka
perubahan yang diinginkan tidak akan terjadi.
Dalam sebuah java Kelas induk (pertama) tidak akan berfungsi sebagai apa-apa jika tidak
ada yang memanggil dan mewarisi sifat-sifat yang ada pada kelas pemanggil (public void
main), maka dari itu kita harus membuat kelas pemanggil agar kelas induk diatas bisa
berguna dan tidak error.
DAFTAR PUSTAKA
_____.2013. Modul Praktikum 3Inheritance. Pendidikan Teknik Informatika.UM.
Fikri, Rijalul, dkk.2005. Pemrograman Java. Yogyakarta: Andi Offset
Raharjo, Budi, dkk. 2010. Mudah Belajar Java edisi Revisi. Bandung: Informatika