1. LAPORAN PRATIKUM III
PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK
“INHERITANCE”
Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek
Yang Dibimbing oleh Bapak Heru Wahyu Herwanto, S.T., M.Kom
Asisten Praktikum:
Jevri Tri Ardiansyah
Robi Wahyudi
Oleh:
Gisra Rahmadhita
130533608259
S1 PTI 2013 Offering B
UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
S1 PENDIDIKAN TEKNIK INFORMATIKA
OKTOBER, 2014
2. ” INHERITANCE”
A. TUJUAN
1. Memahami konsep inheritance (pewarisan)
2. Mendefinisikan superclasses dan subclasses
3. Override method dari superclass
4. Menerapkan keyword this
B. DASAR TEORI
1. Pewarisan
Pewarisan (Inheritance) merupakan sifat dalam bahasa berorientasi objek yang
memungkinkan sifat-sifat dari suatu kelas diturunkan ke kelas lain. Sistem OOP
memungkinkan kita untuk mendefinisikan suatu kelas baru dengan mewarisi sifat dari
kelas lain yang sudah ada. Penurunan sifat ini bisa dilakukan dilakukan secara
bertingkat-tingkat, sehingga semakin ke bawah maka kelas tersebut semakin spesifik.
pewarisan memberikan atau mewariskan sesuatu kepada keturunan berikutnya.
misalnya, seorang anak pasti akan mewarisi beberapa sifat atau perilaku yang dimiliki
oleh ibu/bapaknya. dalam konteks ini, suatu kelas dalam program dapat diturunkan
menjadi kelas-kelas baru lainnya yang akan mewarisi beberapa sifat atau perilaku dari
kelas induknya. sebagai contoh, apabila anda memiliki kelas A dalam program yang
anda buat maka anda dapat membentuk kelas-kelas turunan dari kelas A
tersebut(Misalnya, kelas B) yang mewarisi sifat-sifat yang terkandung dalam kelas A.
dalam proses pembuatan kelas turunan tersebut, Anda dapat menambahkan sifat dan
perilaku baru ke dalam kelas B, yang sebelumnya tidak dimiliki dalam kelas A.
Dalam terminologi java, kelas induk dinamakan dengan superclass dan kelas turunan
dinamakan dengan subclass. untuk membuat kelas anak atau kelas turunan
berdasarkan class yang ada, anda dapat menggunakan kata kunci extends.
2. Keyword super
Digunakan untuk mengakses anggota kelas diwariskan oleh kelas di mana ia muncul.
Memungkinkan subclass untuk mengakses ditimpa metode dan anggota tersembunyi
dari superclassnya. Kata kunci super juga digunakan untuk meneruskan panggilan
dari konstruktor ke konstruktor di superclass.
3. 3. Keyword this
Digunakan untuk mewakili sebuah instance dari kelas dimana ia muncul. This dapat
digunakan untuk mengakses anggota kelas sebagai referensi. This juga kata kunci
digunakan untuk meneruskan panggilan dari satu konstuktor dikelas untuk konstuktor
lain dikelas yang sama.
4. Overriding
Berbeda dengan overloading. Kalo overloading, kita boleh menuliskan method yang
sama namun dengan jumlah parameter yang berbeda dan nilai kembalian harus sama.
Nah, kalau overriding konsepnya sama dengan overloading yaitu menulis kembali
method. Namun, caranya overriding menulis kembali method sama persis. Sama
mulai dari nama method dan isinya dan mengimplementasi kembali di sub classnya.
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. Jika method memiliki modifier akses public, method overridenya juga harus
public.
C. LATIHAN
1. Membuat class dengan keyword this
a. Membuat class Pertama
ii. Syntax
class Pertama
{
private int a=10;
protected void terprotek ()
{
System.out.println ("Method ini hanya untuk anaknya");
}
public void info()
{
System.out.println("a= "+a);
System.out.println ("Dipanggil pada = "+this.getClass
().getName());
}
}
b. Membuat class extend pertama (turunan)
i. Syntax
class Kedua extends Pertama
{
private int b=8;
4. protected void BacaSuper()
{
System.out.println ("Nilai b:"+b);
terprotek();
info();
}
}
c. Membuat kelas fungsi utama
i. Syntax
class TestPertamaKedua
{
public static void main (String [] args)
{
Kedua D2 = new Kedua ();
D2.BacaSuper ();
D2.info ();
Pertama S1 = new Pertama ();
S1.terprotek ();
S1.info ();
}
}
ii. Output
iii. Deskripsi Program
Program ini menampilkan bagaimana cara kerja pewarisan dengan keyword
“extends” dimana class pertama merupakan induk dan kelas kedua merupakan
turunan dari kelas pertama (kelas kedua sifatnya sama dengan kelas pertama)
Kelas pertama dan turunannya (kelas kedua) tidak memiliki fungsi main,
sehingga memakai kelas tambahan sebagai kelas utama (kelas
TestPertamaKedua)
Pada kelas TestPertamaKedua ini dibuat dua objek baru menggunakan operator
new yaitu D2 dan S1. Objek D2 digunakan untuk memangil methods yang ada
di class kedua yaitu methods “BacaSuper” dan “info”. Walaupun methods
“info” tidak ditemukan di class kedua tapi karena class kedua merupakan
turunan dari kelas pertama. Maka class kedua juga memiliki methods “info”
(karena turunannya).
Objek S1 digunkan untuk memanggil methods “terprotek” dan “info”. Di
dalam methods “info” terdapat syntax “this.getclass” dan “getname”, dimana
fungsi syntax tersebut untuk menampilkan nama kelas dari objek tersebut
5. 2. Membuat kelas menggunakan keyword super untuk memanggil konstruktor kelas induk
a. Membuat class Person
ii. Syntax
class Person
{
protected String name;
protected int age;
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
//metode
public void info()
{
System.out.println("Nama : "+this.name);
System.out.println("Age : "+this.age);
}
//akhir kelas program
}
b. Membuat class Employ
i. Syntax
class Employ extends Person
{
private String noKaryawan;
//konstruktor
public Employ (String noKaryawan, String name, int age)
{
super (name, age);
this.noKaryawan = noKaryawan;
}
//metode
public void info()
{
System.out.println("No. Karyawan : "+this.noKaryawan);
super.info();
}
}
c. Membuat class KonstruktorSuperKelas
i. Syntax
public class KonstruktorSuperKelas
{
public static void main (String[]args)
{
Employ programer1 = new Employ ("12345678", "Yanto", 32);
programer1.info();
}
}
ii. Output
6. iii. Deskripsi Program
Program diatas merupakan contoh penggunaan keyword this dan super pada
konsep pewarisan.
Class person dan employ tidak bisa eksekusi secara langsung karena tidak
memiliki fungsi main
Jadi ada membuat kelas dengan nama KonstruktorSuperKelas yang memiliki
fungsi utama untuk memangil class employ dan person.
Class person merupakan induk class dari employ.
Dalam class employ syntax “super” digunakan untuk memangil methods info
yang ada di class person berisi “name” dan “age”.
Data nomor karyawan diperoleh dari parameter pada keyword new yang
kemudian dipanggil pada method info dari superclass
3. Membuat Kelas mengandung Overriding
a. Membuat class Pertama
ii. Syntax
public class Hewan
{
public static void testClassMethod()
{
System.out.println("The Class Method in Hewan...");
}
public void testInstanceMethod()
{
System.out.println("The Intance Method in Hewan...");
}
}
//mengoverwrite method pada class hewan
d. Membuat class extend hewan (turunan) sekaligus fungsi utama
i. Syntax
public class Gajah extends Hewan
{
public static void testClassMethod()
{
System.out.println("The Instance method in Gajah...");
}
//mengoverride method pada class hewan
public void testInstanceMethod()
{
System.out.println("The Instance method in Gajah...");
}
7. public static void main (String[]args)
{
Gajah myGajah = new Gajah();
Hewan myHewan = myGajah;
Hewan.testClassMethod();
myHewan.testInstanceMethod();
}
}
ii. Output
iii. Deskripsi Program
Program diatas merupakan contoh penggunaan overriding yang dimana
overriding method mempunyai nama method yang sama (method
testInstanceMethod() dan testClassMethod()) pada super dan subclass.
Dalam overriding jumlah parameter dan tipe parameter serta nilai kembalian
(return) method yang di override ialah sama namun berbeda pada
implementasinya.
Overriding dipakai saat kita menggunakan method yang sama tapi berbeda
implementasinya.
Class hewan tidak bisa dijalankan secara langsung karena tidak memiliki fungsi
main didalamnya.
Class gajah merupakan anak kelas dari class hewan dan mempuntai fungsi
main sehingga bisa dijalankan secara langsung. Sehingga memunculkan
tampilan pada Command Prompt
4. Membuat program dengan keyword super
a. Membuat class A
ii. Syntax
class A
{
private int a;
public void setA(int nilai)
{
a = nilai;
}
public int getA()
{
return a;
}
public void tampilkanNilai()
{
System.out.println("Nilai a : "+getA());
}
}
8. b. Membuat class B
i. Syntax
class B extends A
{
private int b;
public void setB(int nilai)
{
b = nilai;
}
public int getB()
{
return b;
}
//melakukan override terhadap method tampilkanNilai()
//yang terdapat pada kelas A
public void tampilkanNilai()
{
super.tampilkanNilai(); //memanggil method dalam kelas A
System.out.println ("Nilai b : "+getB());
}
}
b. Membuat class DemoOverride2
i. Syntax
class DemoOverride2
{
public static void main (String [] args)
{
B obj = new B ();
obj.setA(50);
obj.setB(150);
//akan memanggil method yang terdapat
obj.tampilkanNilai();
}
}
ii. Output
iii. Deskripsi Program
Program ialah contoh penggunaan overriding pada program, yaitu method
mempunyai nama method yang sama, jumlah parameter dantipe parameter
serta nilai kembalian (return) method yang di override.
Pada override ini, Subkelas memanipulasi data dan method dari kelas
induknya. Proses ini akan mengubah data dan method dari keduanya.
Yang dilakukan subkelas tersebut adalah melihat/mengecek apakah kelas
anak memiliki method yang sama dengan induknya, bila punya maka yang
akan dijalankan adalah method dari kelas anak namun bila tidak, yang akan
dijalankan adalah method dari induknya.
9. Syntax get dan set diatas digunakan sebagai mutator dan asesor dalam
program untuk menyeting nilai variabel dan memperoleh data dari variabel
5. Membuat program dengan konsep pewarisan
a. Membuat class Truck
i. Syntax
class Truck{
//the truck class has three fields
public int cadence;
public int gear;
public int speed;
public void Truck(int startCadence, int startSpeed, int
startGear){
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
//the truck class has four methods
public void setCadence(int newValue){
cadence = newValue; }
public void setGear(int newValue) {
gear = newValue; }
public void applyBrake(int decrement) {
speed -= decrement; }
public void speedUp(int increment) {
speed += increment; }
}
b. Membuat class MountainTruck
i. Syntax
public class MountainTruck extends Truck{
//the MountainTruck subclass adds one field
public int seatHeight;
//the MountainTruck subclass has one constructor
public void MountainTruck(int startHeight, int startCadence,
int startSpeed, int startGear){
super.Truck(startHeight,startCadence,startGear);
seatHeight=startHeight;
}
//the MountainTruck subclass add one method
public void setHeight(int newValue) {
seatHeight = newValue;
}
public static void main(String[]abc){
System.out.println("Mulai Berjalan");
MountainTruck MB = new MountainTruck();
MB.MountainTruck(0,0,0,0);
System.out.println("gear = "+MB.gear);
System.out.println("speed = "+MB.speed);
MB.setGear(2);
MB.speedUp(2);
10. System.out.println("gear = "+MB.gear);
System.out.println("speed = "+MB.speed);
MB.speedUp(2);
System.out.println("gear = "+MB.gear);
System.out.println("speed = "+MB.speed);
System.out.println("nBerjalan");
//MountainTruck MB = new MountainTruck();
MB.setGear(3);
MB.speedUp(2);
System.out.println("gear = "+MB.gear);
System.out.println("speed = "+MB.speed);
System.out.println("nNaik Tanjakan");
//MountainTruck MB = new MountainTruck();
MB.setGear(1);
MB.applyBrake(5); //speed up total 6
System.out.println("gear = "+MB.gear);
System.out.println("speed = "+MB.speed);
System.out.println("nTurun Tanjakan");
//MountainTruck MB = new MountainTruck();
MB.setGear(1);
MB.applyBrake(0); //speed up total 6
System.out.println("gear = "+MB.gear);
System.out.println("speed = "+MB.speed);
System.out.println("nBerhenti");
//MountainTruck MB = new MountainTruck();
MB.setGear(0);
MB.applyBrake(1); //speed up total 1
System.out.println("gear = "+MB.gear);
System.out.println("speed = "+MB.speed);
}
}
ii. Output
iii. Deskripsi Program
Program diatas menunjukkan perbedaan nilai dari variabel “gear” dan
“speed”. Pada class truck “speed” diinisialisasi menjadi “startspeed” dan
11. “gear” menjadi “startgear” kemudian dimasukkan methods “setgear”
sementara variabel “startspeed” dibagi menjadi dua methods yang berfungsi
untuk menambah “speedup” dan mengurangi “applybreak”.
Pada class utama “MountainTruck” yang merupakan anak class dari “truck”
disini ditambahkan varibel “seatHeigh”. Dalam class ini juga terdapat fungsi
main. Kemudian membuat objek baru dengan nama “MB” dan memasukkan
parameter nilainya (0,0,0,0) maka pada saat output menampilkan “gear” dan
“speed” nialinya = 0 kemudian ditambah lagi nilainnya menjadi =2. Nilai
terakhir gear = 2 dan speed = 4 karena ditambah lagi dengan “speedup”.
Pada program pemakaian applybreak digunaan untuk mengurangi nilai speed
(decrement) sehingga nilai speed menjadi berkurang dan menghasilkan
perjalanan dari berhenti, berjalan (speed diincrement), naik tanjakan, turun
tanjakan hingga berhenti lagi
D. TUGAS PRAKTIKUM
Buatlah program Overriding dan overloading dengan potongan program di bawah ini
1. Kelas Induk
i. Syntax
class Induk{
//mendefinisikan method test() tanpa parameter
public void test(){
System.out.println("Method di dalam kelas induk");
}
}
2. Kelas Turunan
i. Syntax
class Turunan extends Induk{
//melakukan overload terhadap method test(), bukan override
public void test(String s){
System.out.println("Method di dalam kelas turunan");
System.out.println("s :"" + s + """);
}
public void test(){
System.out.println("Overriding pada kelas turunann");
}
}
3. Kelas TestPraktik (untuk pengujian)
i. Syntax
class TestPraktik{
public static void main(String[]args){
Turunan anak = new Turunan();
Induk ortu = new Induk();
ortu.test();// ujicoba method test pada superclass
anak.test(); // ujicoba method test pada subclass
anak.test("Data Valid"); //memberi input string pada method
overload
12. }
}
ii. Output
iii. Keterangan
1. Program diatas untuk menunjukan pemakaian overload dan overriding pada
program
2. Kelas induk berisi method test yang berguna untuk menampilkan tulisan
bahwa method ada pada kelas induk
3. Kelas turunan berisi method test yang mengoverload method test dikelas induk
(namun memiliki parameter) dan mengoverride method test dengan tujuan
menampilkan tulisan tersebut ada pada kelas turunan
4. Kelas TestPraktik berfungsi sebagai penguji kedua kelas tersebut, objek ortu
untuk menyatakan kelas induk dan anak menyatakan kelas turunan dan
melakukan pemanggilan pada method kedua kelas tersebut
5. Jika pada syntax anak.test("Data Valid"); maka akan memanggil method
yang dioverload oleh kelas turunan
E. TUGAS RUMAH
Buatlah program Overriding dan overloading dengan potongan program di bawah ini
1. Kelas Tumbuhan
Syntax
class Tumbuhan{
protected String akar;
protected String batang;
protected String daun;
protected String tulang_daun;
protected String bunga;
protected String biji;
public Tumbuhan (String a, String b, String d, String t,
String bu, String bi){ //konstruktor
this.akar=a;
this.batang=b;
this.daun=d;
this.tulang_daun=t;
this.bunga=bu;
this.biji=bi;
}
void tampil() {
System.out.println("nCiri-Ciri ");
System.out.println("Akartt: " +this.akar);
System.out.println("Batangtt: " +this.batang);
System.out.println("Bentuk Daunt: " +this.daun);
System.out.println("Tulang Daunt: "
+this.tulang_daun);
System.out.println("Bungatt: " +this.bunga);
13. System.out.println("Bijitt: " +this.biji);
}
}
2. Kelas dikotil
Syntax
class dikotil extends Tumbuhan{
private String jenis; //agar tidak terlihat kelas lain
public dikotil (String jenis, String a, String b, String d,
String t, String bu, String bi){
super ( a, b, d, t, bu, bi);
this.jenis=jenis;
}
void tampil() {
System.out.println("nJenistt: "+this.jenis);
super.tampil(); //mengambil nilai variabel induk
}
}
3. Kelas monokotil
Syntax
class monokotil extends Tumbuhan{
private String jenis; //agar tidak terlihat kelas lain
public monokotil (String jenis, String a, String b,
String d, String t, String bu, String bi){
super ( a, b, d, t, bu, bi);
this.jenis=jenis;
}
void tampil() {
System.out.println("nJenistt: "+this.jenis);
super.tampil();
}
}
4. Kelas monokotil
Syntax
class JenisTumbuhan {
public static void main (String[]args) {
//membuat objek
dikotil d = new dikotil ("Dikotil","Tunggang","Berkambium dan
Bercabang","Bervariasi","Menjari,Menyirip","Kelipatan
4,5","Berkeping 2");
monokotil m = new monokotil ("Monokotil","Serabut","Tidak
Berkambium dan Tidak Bercabang","Seperti
Pita","Sejajar","Kelipatan 3","Berkeping 1");
d.tampil();
m.tampil();
}
}
i. Output
14. ii. Keterangan
Program diatas untuk menampilkan ciri-ciri dikotil dan monokotil tumbuhan
dengan 3 kelas. 1 kelas induk dan 2 kelas turunan
Kelas induk ialah kelas Tumbuhan, kelas turunan ialah dikotil dan monokotil
Pada kelas induk terdapat mentod tampil yang nantinya akan dioverride
dikelas lain. Selain itu pada kelas induk juga memakai keyword this untuk
penggunaan objek sekarang
Pada kelas dikotil dan monokotil, terdapat keyword super. Hal ini digunakan
untuk mengambil nilai variabel dari kelas induk yang terprotek sebelumnya
Method tampil pada kelas dikotil dan monokotil berguna untuk meng-override
method pada kelas Tumbuhan
F. KESIMPULAN
1. Inheritance adalah sifat pewarisat yang diturunkan dari kelas induk kepada
turunannya. Dimana kelas turunan bisa memiliki sifat induk tapi kelas induk tidak
memeiliki sifat anaknya.
2. Kelas yang mewariskan disebut Kelas Super/Kelas Induk sedangkan kelas yang
diwariskan disebut subkelas/Kelas Anak.
3. Untuk mendeklarasikan kelas turunan harus menggunkan keyword extend
4. Keyword “this” digunakan pada pembuatan kelas dan digunakan untuk
menyatakan objek sekarang.
5. Keyword “super” digunakan untuk memanggil konstruktor dari superClass atau
menjadi variabel yang mengacu pada superclass.
6. Overriding ialah suatu cara untuk menuliskan kembali method yang dipakai
namun berbeda implementasinya
7. Sifat data pada pewarisan yaitu Public, Private, dan protected
8. Bisa ditarik kesimpulan bahwa semua kelas di dunia selalu memiliki hirarki yang
menggambarkan silsilah kelas tersebut. Semakin turun kebawah kelasnya semakin
komplek juga sifatnya karena memiliki seluruh sifat nenek moyangnya
G. DAFTAR PUSTAKA
Modul III“Inheritance” — PraktikumPemrogramanBerbasisObjek. Pendidikan
Teknik Informatika — Teknik Elektro — Universitas Negeri Malang — 2014.