laporan pbo pratikum 3

14

Click here to load reader

Upload: gisra-rahmadhita

Post on 19-Jul-2015

182 views

Category:

Data & Analytics


3 download

TRANSCRIPT

Page 1: Laporan PBO Pratikum 3

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

Page 2: Laporan PBO Pratikum 3

” 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.

Page 3: Laporan PBO Pratikum 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;

Page 4: Laporan PBO Pratikum 3

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

Page 5: Laporan PBO Pratikum 3

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

Page 6: Laporan PBO Pratikum 3

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...");

}

Page 7: Laporan PBO Pratikum 3

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());

}

}

Page 8: Laporan PBO Pratikum 3

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.

Page 9: Laporan PBO Pratikum 3

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

Page 10: Laporan PBO Pratikum 3

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

Page 11: Laporan PBO Pratikum 3

“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 turunan\n");

}

} 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

Page 12: Laporan PBO Pratikum 3

}

} 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("Akar\t\t: " +this.akar);

System.out.println("Batang\t\t: " +this.batang);

System.out.println("Bentuk Daun\t: " +this.daun);

System.out.println("Tulang Daun\t: "

+this.tulang_daun);

System.out.println("Bunga\t\t: " +this.bunga);

Page 13: Laporan PBO Pratikum 3

System.out.println("Biji\t\t: " +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("\nJenis\t\t: "+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("\nJenis\t\t: "+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

Page 14: Laporan PBO Pratikum 3

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.