Anda di halaman 1dari 18

LAPORAN 3 PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berbasis Objek Yang Dibimbing oleh Heru Wahyu Herwanto, S.T., M.KOM Asisten Praktikum: Lalitya Nindita Sahendra M. Zainul Hanny M

Oleh: M. Zainul Azkiya Zinan 110533430571 S1 PTI 2011 offering C

UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO S1 PENDIDIKAN TEKNIK INFORMATIKA 2012

LAPORAN KE-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 Inheritanceatau pewarisan pada pemrograman berorientasi objek merupakan suatu hubungan dua buah kelas atau lebih. Dalam hal ini ada kelas yang memiliki atribut dan metode yang sama dengan kelas lainnya beserta atribut dan metode tambahan yang merupakan sifat khusus kelas yang menjadi turunannya. Sebagai contoh, misalkan ada sebuah kelas Titik yang mempunyai kelas turunan Titik3D:
class Titik private integer x private integer y Titik() x < 0 y < 0 {end Titik} public getX() -> integer -> x {end getX} public getY() -> integer -> y {end getY} {end class} class Titik3D: Titik private integer z Titik3D() z <- 0 {end Titik3D} public getZ() -> integer -> z {end getZ} {end class}

Keterkaitan antara kelas Titik dan Titik3D adalah kelas Titik3D merupakan kelas turunan dari kelas Titik. Dalam hal ini kelas Titik disebut dengan kelas dasar atau super classatau base classsedangkan kelas Titik3D disebut sebagai kelas turunan atau derived classatau subclass. Pada contoh di atas, ketika kelas Titik3D dibuat objeknya maka objek tersebut dapat menggunakan metode yang ada pada kelas Titik walau pada kode programnya metode itu tidak dituliskan, misalkan sebagai berikut:

Titik3D integer integer integer

p x y z

<<<<-

new Titik3D() p.getX() p.getY() p.getZ()

Semua class dalam Java, termasuk class yang membangun Java API, merupakan subclass dari superclass Object. 1. Pewarisan Pewarisan merupakan konsep dalam pemrograman berorientasi objek yang memungkinkan untuk membuat suatu kelas yang didasarkan pada kelas yang sudah ada sehingga mewarisi semua metode dan variabelnya. 2. Keyword super Keyword super digunakan oleh subclass untuk memanggil konstruktor yang berada pada superclass 3. Keyword this Kata kunci this dipergunakan pada pembuatan kelas dan digunakan untuk menyatakan objek sekarang 4. 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. Beberapa aturan tentang pewarisan(inheritance) yang perlu diperhatikan : 1. 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. 2. Subclass juga merupakan class biasa, maka kita tetap dapat melakukan pewarisan pada subclass ini. Misal : class B merupakan subclass dari class A, kita dapat membuat class baru yang diturunkan dari class B sehingga class baru tersebut akan memiliki apa yang dimiliki oleh class A dan class B. 3. 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). Keuntungan dari pewarisan adalah tidak perlu mengutak atik kode kelas yang membutuhkan tambahan atribut atau metode saja, karena tinggal membuat kelas turunannya tanpa harus mengubah kode kelas dasarnya. Kelas dasar akan mewariskan semua atribut dan kodenya kecuali konstruktor dan destruktor yang memiliki izin akses publicdan protectedke kelas turunannya dengan izin akses yang sama dengan pada kelas dasar.

Ketika sebuah kelas turunan dibuat objeknya saat eksekusi, maka secara implisit konstruktor kelas dasar dipanggil terlebih dahulu baru kemudian konstruktor kelas turunan dijalankan. Begitu juga saat objek dimusnahkan maka secara destruktor kelas turunan akan dijalankan baru kemudian destruktor kelas dasar dijalankan.

C. LATIHAN Latihan 1 a. Membuat tiga class berbeda Syntax Pertama.java: 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()); } } Syntax Kedua.java class Kedua extends Pertama { private int b = 8; protected void BacaSuper() { System.out.println ("Nilai b :"+b); terprotek(); info(); } } Syntax TestPertamaKedua.java class TestPertamaKedua { public static void main(String [] args) { Kedua D2 = new Kedua (); D2.BacaSuper (); D2.info(); Pertama S1 = new Pertama (); S1.terprotek ();

S1.info(); } } b. Mengkompilasi tiga class secara berurutan

c. Hilangkan baris S1 terprotek class Kedua extends Pertama { private int b = 8; protected void BacaSuper() { System.out.println ("Nilai b :"+b); //terprotek(); info(); } } d. Kompilasi ketiga file setelah dihilangkan

e. Hapus semua file class

f. Compile TestPertamaKedua

Hasilnya sama tetapi pada folder langsung akan terbentuk class dari pertama.java dan kedua.java karena Test PertamaKedua terhubung dengan kedua file diatass. g. Jelaskan fungsi dari perintah this.getClass.getName(); Adalah untuk mendapatkan kelas dan nama kelas untuk mengakses method. Latihan 2 Tuliskan ketiga class bberikut dalam 3 file berbeda Syntax Person.java 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("Usia : "+this.age); } //akhir program } Syntax Employ.java class Employ extends Person { private String noKaryawan; //kostruktor 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(); } }

Syntax KonstruktorSuperKelas.java public class KonstruktorSuperKelas { public static void main (String [] args) { Employ programer1 = new Employ ("12345678","Yanto",32); programer1.info(); } } Output program :

Latihan 3 a. Pertama buat program hewan.java : Syntax : public class Hewan{ public static void testClassMethod(){ System.out.println ("\nThe Class Method in Hewan..."); } public void testInstanceMethod(){ System.out.println ("\nThe Instance Method in Hewan..."); } } //meng-overwrite method pada class Hewan Setelah itu buat Gajah.java public class Gajah extends Hewan{ public static void testClassMethod(){ System.out.println("The class method in Hewan ..."); } //mengoverride method pada class Hewan public void testInstancemethod(){ System.out.println("The Instance method in Gajah..."); } public static void main (String[]args){ Gajah myKucing = new Gajah(); Hewan myHewan = myKucing; Hewan.testClassMethod(); myHewan.testInstanceMethod(); } }

b. Output program

Latihan 4 a. Tulis dan simpan code program Syntax A.java 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()); } } Syntax B.java class B extends A { private int b; public void setB (int nilai) { b=nilai; } public int getB() { return b; } //melakukan override terhadap method tampilkanNilai A //yang terdapat pada kelas A

public void tampilkanNilai () { super.tampilkanNilai(); //memanggil method dalam kelas A System.out.println("Nilai b : "+getB()); } } Syntax DemoOverride2.java class DemoOverride2 { public static void main (String [] args) { B obj = new B (); obj.setA(50); obj.setB(150); //akan memanggil method yang terdapat pada kelas B obj.tampilkanNilai(); } } b. Output program

Latihan 5 class Truck{ //the Truck class has three fields public static int cadence; public static int gear; public static int speed;

//the Truck class has one constructor 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 decreement){ speed -= decreement; } public void speedup(int increement) { speed += increement; } } 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 adds one method public void setheight(int newvalue){ seatheight = newvalue; } public static void main (String[] abc){ System.out.println("\nMulai Berjalan");

MountainTruck MB = new MountainTruck(); MB.MountainTruck (0,0,0,0); System.out.println("\ngear = " +gear); System.out.println("speed = " +speed); MB.setgear(2); MB.speedup(2); System.out.println("\ngear = " +gear); System.out.println("speed = " +speed); MB.speedup(2); MB.setgear(4); System.out.println("\ngear = " +gear); System.out.println("speed = " +speed); } } Output Latihan 5 :

Modifikasi class MountainTruck 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 :

class Truck{ //the Truck class has three fields public static int cadence; public static int gear; public static int speed; //the Truck class has one constructor

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 decreement){ speed -= decreement; } public void speedup(int increement) { speed += increement; } } 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 adds one method public void setheight(int newvalue){ seatheight = newvalue; } public static void main (String[] abc){ System.out.println("\nPosisi Diam"); MountainTruck MB = new MountainTruck(); MB.MountainTruck (0,0,0,0); System.out.println("\ngear = " +gear); System.out.println("speed = " +speed); MB.setgear(2); MB.speedup(2); System.out.println("\nPosisi Berjalan"); System.out.println("\ngear = " +gear); System.out.println("speed = " +speed); MB.speedup(1); MB.setgear(1); System.out.println("\nPosisi tanjakan"); System.out.println("\ngear = " +gear); System.out.println("speed = " +speed); MB.speedup(2); MB.setgear(3); System.out.println("\nPosisi jalan turun"); System.out.println("\ngear = " +gear); System.out.println("speed = " +speed); MB.MountainTruck (0,0,0,0);

System.out.println("\nPosisi berhanti"); System.out.println("\ngear = " +gear); System.out.println("speed = " +speed); }

} Hasil Outputnya adalah :

D. TUGAS PRAKTIKUM Lengkaapi program dibawah ini dengan membuat satu method pada kelas turunan yang meng-override method pada kelas induk sehingga anda dapat membedakan antara overload method dengan override method! Kemudian buat satu kelas lagi untuk menguji coba fungsionalitas kedua method tersebut! Syntax nya adalah : class Induk{ //mendefinisikan method test() tanpa parameter public void test(){ System.out.println("Method didalam kelas induk"); } } class Turunan extends Induk{ //melakukan overload terhadap metode test(), bukan override public void test(String s){ System.out.println("Method di dalam kelas turunan"); System.out.println("s : \"" + s + "\""); }

} class coba22{ public static void main(String[]args) { Turunan coba22 = new Turunan(); coba22.test(); coba22.test("percobaan"); } } Output dari tugas praktikum adalah :

E. TUGAS RUMAH Pertama harus membuat Fakultas.java setelah itu kita compile class Pekerja { public void Pekerja_Bangunan (){ System.out.println("+++ Pekerja Bangunan : "); System.out.println("+++ Tukang Cat"); System.out.println("+++ OB"); System.out.println("+++ Tukang Cor"); System.out.println("+++ Mandor");} public void Direktur(String s, String d){ System.out.println("\n++Direktur "+s+" mempunyai anak buah : "+d);} public void Manager (){ System.out.println("++Manager : Darsono");} }

Setelah membuat dan mengkompile file diatas harus membuat Fakultas.java class Direktur extends Pekerja { public void Pekerja(String s, String d){ System.out.println("\n++Direktur "+s+" mempunyai anak buah : "+d);}

private void KeahlianE(){ System.out.println("Keahlian Pekerja :"); System.out.println("-Tembok : Membangun Tembok"); System.out.println("-Atap : Mengurusi Atap"); } private void KeahlianS(){ System.out.println("Keahlian Tukang Cat :"); System.out.println("-Cat Tembok : Mengecat Tembok"); System.out.println("-Cat Genteng : Mengecat Genteng"); } private void KeahlianI(){ System.out.println("Keahlian OB :"); System.out.println("-Menyeduh Kopi : Membuat dan Mengantar Kopi"); System.out.println("-Cuci Piring : Mencuci Piring"); System.out.println("-Memasak : Menyiapkan Makan"); } private void KeahlianM(){ System.out.println("Keahlian Tukang Cor :"); System.out.println("-Mengaduk Semen : Menggunakan Mesin Pengaduk Semen"); } private void Anak_Buah(String x, String y){ System.out.println("++Setiap Direktur mempunyai anak buah yang berbeda"); System.out.println("++Direktur "+x+" mempunyai anak buah "+y);} public static void main(String[]args){ Direktur Pekerja = new Direktur(); Direktur Tukang_Cat = new Direktur(); Direktur OB = new Direktur(); Direktur Tukang_Cor= new Direktur(); Pekerja.Pekerja_Bangunan(); Pekerja.Direktur("Pekerja","[Tembok][Atap]"); Pekerja.Manager(); Pekerja.Anak_Buah("Pekerja","100 DAN 150\n"); Pekerja.KeahlianE(); Tukang_Cat.Direktur("Tukang Cat","[Cat Tembok] [Cat Genteng]"); Tukang_Cat.Manager(); Tukang_Cat.Anak_Buah("tukang Cat","50\n"); Tukang_Cat.KeahlianS();

OB.Direktur("Keahlian OB","[Menyeduh Kopi] [mencuci Piring] [Memasak] "); OB.Manager(); OB.Anak_Buah("Keahlian OB","20 DAN 50\n"); OB.KeahlianI(); Tukang_Cor.Direktur("Keahlian Tukang Cor","[Mengaduk Semen] "); Tukang_Cor.Manager(); Tukang_Cor.Anak_Buah("Keahlian Tukang Cor","30\n"); Tukang_Cor.KeahlianM(); } } Output dari tugas rumah adalah :

F. KESIMPULAN Inheritance atau pewarisan pada pemrograman berorientasi objek merupakan suatu hubungan dua buah kelas atau lebih. Keuntungan dari pewarisan adalah tidak perlu mengutak atik kode kelas yang membutuhkan tambahan atribut atau metode saja, karena tinggal membuat kelas turunannya tanpa harus mengubah kode kelas dasarnya Subclass menyediakan state/behaviour yang spesifik yang membedakannya dengan superclass, hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada. Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan behaviour dan state secara umum. Dengan mempelajari inheritance saya lebih mengetahui apa itu fungsi inheritance G. DAFTAR RUJUKAN - Modul 3 PBO

Anda mungkin juga menyukai