LAPORAN PRAKTIKUM 3

30
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

Transcript of LAPORAN PRAKTIKUM 3

Page 1: LAPORAN  PRAKTIKUM 3

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

Page 2: LAPORAN  PRAKTIKUM 3

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.

Page 3: LAPORAN  PRAKTIKUM 3

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

Page 4: LAPORAN  PRAKTIKUM 3

{

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

Page 5: LAPORAN  PRAKTIKUM 3

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

Page 6: LAPORAN  PRAKTIKUM 3

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.

Page 7: LAPORAN  PRAKTIKUM 3

g. Source code III

(Printscreen program latihan 1 pada notepad++)

h. Output Program

i. Menghilangkan baris S1.terprotek() dari class TestPertamaKedua

Page 8: LAPORAN  PRAKTIKUM 3

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

Page 9: LAPORAN  PRAKTIKUM 3

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

Page 10: LAPORAN  PRAKTIKUM 3

(Printscreen program latihan 1 pada notepad++)

Class Person

Class Employ

Class KonstruktorSuperKelas

b. Output Program

Page 11: LAPORAN  PRAKTIKUM 3

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;

}

Page 12: LAPORAN  PRAKTIKUM 3

Latihan 3

a. Source code

b. Source code II

c. Ouput Program

Page 13: LAPORAN  PRAKTIKUM 3

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

Page 14: LAPORAN  PRAKTIKUM 3

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.

Page 15: LAPORAN  PRAKTIKUM 3

Latihan 5

a. Source code

Class Truck

b. Output Program

Page 16: LAPORAN  PRAKTIKUM 3

c. Source code

Class MountainTruck

d. Output Program

Page 17: LAPORAN  PRAKTIKUM 3

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:

Page 18: LAPORAN  PRAKTIKUM 3
Page 19: LAPORAN  PRAKTIKUM 3

Output:

Page 20: LAPORAN  PRAKTIKUM 3

D. TUGAS PRAKTIKUM

o Tugas Praktikum 1

Source Code ( Printscreen program latihan 1 pada notepad++)

Output Program

Page 21: LAPORAN  PRAKTIKUM 3

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

Page 22: LAPORAN  PRAKTIKUM 3

1. Tugas Rumah 1

a. Source Code ( Printscreen program Tugas Rumah pada notepad++)

Output Program

Page 23: LAPORAN  PRAKTIKUM 3

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

Page 24: LAPORAN  PRAKTIKUM 3

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