Top Banner
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
22

Laporan PBO 3

Feb 13, 2015

Download

Documents

Fikri Ramadhan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Laporan PBO 3

LAPORAN 3PRAKTIKUM 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 SahendraM. 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

Page 2: Laporan PBO 3

LAPORAN KE-3

INHERITANCE

A. TUJUAN1. Memahami konsep inheritance (pewarisan)2. Mendefinisikan superclasses dan subclasses3. Override method dari superclass4. 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:

Page 3: Laporan PBO 3

Titik3D p <- new Titik3D() integer x <- p.getX() integer y <- p.getY() integer z <- 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 yangsudah ada sehingga mewarisi semua metode dan variabelnya.

2. Keyword superKeyword super digunakan oleh subclass untuk memanggil konstruktor yang berada pada superclass

3. Keyword thisKata kunci this dipergunakan pada pembuatan kelas dan digunakan untuk menyatakan objek sekarang

4. OverridingOverriding 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.

Page 4: Laporan PBO 3

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 berbedaSyntax 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.javaclass Kedua extends Pertama{

private int b = 8;

protected void BacaSuper(){

System.out.println ("Nilai b :"+b);terprotek();info();

}}Syntax TestPertamaKedua.javaclass TestPertamaKedua{

public static void main(String [] args){Kedua D2 = new Kedua ();D2.BacaSuper ();D2.info();

Pertama S1 = new Pertama ();S1.terprotek ();

Page 5: Laporan PBO 3

S1.info();}

}b. Mengkompilasi tiga class secara berurutan

c. Hilangkan baris S1 terprotekclass Kedua extends Pertama{

private int b = 8;

protected void BacaSuper(){

System.out.println ("Nilai b :"+b);//terprotek();info();

}}

d. Kompilasi ketiga file setelah dihilangkan

Page 6: Laporan PBO 3

e. Hapus semua file class

f. Compile TestPertamaKedua

Page 7: Laporan PBO 3

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 berbedaSyntax Person.javaclass Person{

protected String name;protected int age;

public Person(String name, int age){

this.name = name;this.age = age;}

//metodepublic void info(){System.out.println("Nama : "+this.name);System.out.println("Usia : "+this.age);}//akhir program

}

Syntax Employ.javaclass Employ extends Person{

private String noKaryawan;

//kostruktorpublic Employ(String noKaryawan, String name, int age){

super (name, age);this.noKaryawan = noKaryawan;}//metodepublic void info(){System.out.println("No. Karyawan :"+this.noKaryawan);super.info();}

}

Page 8: Laporan PBO 3

Syntax KonstruktorSuperKelas.javapublic 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.javapublic class Gajah extends Hewan{public static void testClassMethod(){

System.out.println("The class method in Hewan ...");}//mengoverride method pada class Hewanpublic 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();

}}

Page 9: Laporan PBO 3

b. Output program

Latihan 4

a. Tulis dan simpan code programSyntax 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.javaclass 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

Page 10: Laporan PBO 3

public void tampilkanNilai (){super.tampilkanNilai(); //memanggil method dalam kelas ASystem.out.println("Nilai b : "+getB());}}

Syntax DemoOverride2.javaclass DemoOverride2{

public static void main (String [] args){

B obj = new B ();obj.setA(50);obj.setB(150);//akan memanggil method yang terdapat pada kelas Bobj.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;

Page 11: Laporan PBO 3

}

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

Page 12: Laporan PBO 3

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 fieldspublic static int cadence;public static int gear;public static int speed;

//the Truck class has one constructorpublic void Truck (int startcadence, int startspeed, int startgear){

Page 13: Laporan PBO 3

gear = startgear;cadence = startcadence;speed = startspeed;}//the Truck class has four methodspublic 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 constructorpublic void MountainTruck(int startheight, int startcadence, int startspeed , int

startgear ) {super.Truck(startheight, startcadence, startgear);seatheight = startheight;}//the MountainTruck subclass adds one methodpublic 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);

Page 14: Laporan PBO 3

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

}

Hasil Outputnya adalah :

D. TUGAS PRAKTIKUMLengkaapi 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 overridepublic void test(String s){System.out.println("Method di dalam kelas turunan");System.out.println("s : \"" + s + "\"");}

Page 15: Laporan PBO 3

}

class coba22{public static void main(String[]args){

Turunan coba22 = new Turunan();coba22.test();coba22.test("percobaan");}

}Output dari tugas praktikum adalah :

E. TUGAS RUMAHPertama harus membuat Fakultas.java setelah itu kita compileclass 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);}

Page 16: Laporan PBO 3

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

Page 17: Laporan PBO 3

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 :

Page 18: Laporan PBO 3

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