LAPORAN 3 PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK
Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek Yang Dibimbing oleh Bapak Heru Wahyu Herwanto, S.T., M.Kom
Asisten Praktikum : M. Angga Gumilang Jevri T. Ardiansah
Oleh : GILANG LOVIANINDRA CIPTA 130533608285 S1 PTI 2013 offering A
UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO S1 PENDIDIKAN TEKNIK INFORMATIKA September, 2014
Modul Praktikum III PBO 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 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. Inheritance(pewarisan) adalah proses pewarisan data dan method dari suatu kelas kepadakelas yang lain public mengijinkan kelas dan sub kelas dari package manapun untuk mengaksesnya. Inheritance merupakan pewarisan atribut dan method pada sebuah class yang diperoleh dari class yang telah terdefinisi tersebut. Setiap subclass akan mewarisi state (variabel-variabel) dan behaviour (method-method) dari superclass-nya. Subclass kemudian dapat menambahkan state dan behaviour baru yang spesifik dan dapat pula memodifikasi (override) state dan behaviour yang diturunkan oleh superclass-nya.
Gambar 1. Kelas Hierarki Java
Keuntungan dari inheritance adalah : 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.
Istilah dalam inheritance yang perlu diperhatikan : Extends Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass. Superclass Superclass digunakan untuk menunjukkan
hirarki class
yang
berarti class dasar dari subclass/class anak. Subclass Subclass adalah class anak atau turunan secara hirarki dari superclass. Super Keyword
ini
digunakan
untuk
memanggil
konstruktor
dari
superclass atau menjadi variabel yang mengacu pada superclass. Ada beberapa hal yang harus diingat ketika menggunakan pemanggil constuktor super: 1.
Pemanggil super() HARUS DIJADIKAN PERNYATAAN PERTAMA DALAM constructor.
2.
Pemanggil super() hanya dapat digunakan dalam definisi constructor.
3.
Termasuk constructor this() dan pemanggil super() TIDAK BOLEH TERJADI DALAM constructor YANG SAMA. Pemakaian lain dari super adalah untuk menunjuk anggota
dari superclass (seperti reference this). Methode Overriding Dalam inheritance, overloading.
Kalau
method overriding berbeda dengan method overriding
adalah
method
mendefinisikan
kembali method yang sama, baik nama method maupun signature atau parameter yang diperlukan dalam subclass, kalau method overloading adalah mendefinisikan method yang memiliki nama yang sama, tetapi
dengan signature yang berbeda dalam definisi class yang sama. Terkadang class asal perlu mempunyai implementasi berbeda dari method yang khusus dari superclass method overriding
tersebut. Oleh karena itulah,
digunakan. Subclass
dapat mengesampingkan
method yang didefinisikan dalam superclass dengan menyediakan implementasi baru dari method tersebut. 2. Keyword super Keyword super digunakan oleh subclass untuk memanggil konstuktor 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.
C. LATIHAN LATIHAN 1 1. Latihan ketiga class berikut dalam 3 file yang berbeda Scrib 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()); } } class kedua extends pertama { private int b =
8;
protected void BacaSuper () { System.out.println ("nilai b :"+b); terprotek(); info (); } } class Testpertamakedua { public static void main (String [] args) { kedua D2 = new kedua (); D2.BacaSuper (); D2.info ();
pertama S1 = new pertama (); S1.terprotek (); S1.info (); } }
Output
Keterangan Program ini menggunakan 3 class, yaitu class pertama, class kedua, dan class TestPertamaKedua. Class pertama yaitu berisi nilai dari “a” dan class kedua berisi nilai “b”. Pada class TestPertamaKedua merupakan gabungan antara class pertama dan class kedua. Jadi pada class TestPertamaKedua berisi untuk menampilkan isi dari gabungan antara class A dan class B. Cara menampilkan nya adalah dengan membuat objek baru dan memanggil variabel dari masingmasing class. Dan yang pertama dipanggil atau yang ditampilkan pada program ini adalah class kedua. Objek baru pada class kedua adalah “D2”. Kemudian maksud dari script “D2.BacaSuper();” adalah memanggil variabel BacaSuper dari class kedua dan pada script “D2.info();” maksudnya adalah memanggil variabel “info” dari class kedua, dan dari class kedua akan mewarisi variabel “info” dari class pertama. Dan selanjutnya program akan menampilkan dari class pertama. Sama dengan class kedua, untuk menampilkan class pertama harus membuat sebuah objek baru. Objek baru dari class pertama adalah “S1”. Maksud dari script “S1.terprotek();” adalah variabel “terprotek” akan dipanggil dari class pertama. Dan begitu pula dengan “S1.info();”, variabel “info” akan dipanggil dan ditampilkan dari class pertama.
LATIHAN 2 1. menggunakan keyword super untuk memanggil konstuktor dari kelas induk. Scrib : class Person { protected String name; protected int age; public Person(String name, int age) { this.name = name; this.age = age; } //methode public void info() { System.out.println ("nama : "+this.name); System.out.println ("usia : "+this.age); } //akhir kelas program }
class Employ extends Person { private String noKaryawan; //konstruktor public Employ(String noKaryawan, String name, int age) { super (name, age); this.noKaryawan = noKaryawan; } //methode public void info () { System.out.println ("no karyawan :"+this.noKaryawan); super.info (); } }
class KonstruktorSuperKelas { public static void main (String [] args) { Employ programer1 = new Employ("12345678", "yanto", 32); programer1.info(); } }
Output
Keterangan Program ini akan menampilkan no karyawan, nama dan usia. ketika S1.terprotek dihapus : Setelah baris S1.terprotek() dihapus dari class TestPertamaKedua hasil nya akan berbeda dengan sebelumnya. dihapus dari class TestPertamaKedua sama saja dengan tidak memanggil Variable terprotek dari class Pertama yang berisikan “Method ini hanya untuk anaknya”.
LATIHAN 3 Scrib : public class Hewan { public static void testClassMethod() { System.out.println ("the class methode in hewan..."); } public void testInstanceMethod() { System.out.println ("the instance method in hewan..."); } } //meng=overwrite method pada class hewan
public class Gajah extends Hewan { public static void testClassMethod () { System.out.println ("the class method in hewan..."); } //mengorverride methode pada class hewan public void testInstanceMenthod () { System.out.println ("the instance methode in gajah..."); } public static void main (String [] args) { Gajah myGajah = new Gajah (); Hewan myHewan = myGajah; Hewan.testClassMethod (); myHewan.testInstanceMethod(); } }
Output :
Penjelasan Jadi program ini menunjukan class yang global atau clas yang lebih spesifik. Contoh, saat class hewan dan diturunkan menjadi dua class hewan berkaki dua dan hewan berkaki empat. Ketika hewan berkaki dua melakukan method makan maka yang dilakukan adalah makan dengan paruhnya, dan ketika hewan berkaki empat juga makan maka dia akan menggunakan mulutnya. Keduanya melakukan aksi yang sama yaitu makan akan tetapi perlakuannya lain
LATIHAN 4 Scrib 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()); } }
class B extends A { private int b; public void setB (int nilai) { b = nilai; } public int getB () { return b; } //melakukan override terhadap mer=thode tampilkanNilai () //yang terdapat pada kelas A public void tampilkanNilai () { super.tampilkanNilai (); //memanggil methoted dalam kelas A System.out.println ("nilai b :"+getB()); } }
class DemoOverride2 { public static void main (String [] args) { B obj = new B(); obj.setA(50); obj.setB(150); //AKAN MEMANGGIL METHOD YANG TERDEPAN PADA KELAS B obj.tampilkanNilai (); } }
Output
Penjelasan Pada program ini menggunakan 3 class di mana class A berguna untuk tampilkanNilai. Pada class B menggunakan extends A karena class A mewarisi beberapa fungsi pada class B. pada class B terjadi prosess override terhadap method tampilNilai yang terdapat pada class A. pada perintah super.tampilkanNilai maka class B kan memanggil method dalam kelas A. pada class DemoOverride2 adalah di mana proses penggabungan antara method A dan B. maka program ini akan menampilkan a : 50 dan nilai b : 150.
LATIHAN 5 Scrib class Truck { //the Truck class has three fields public static int cadance; public static int gear; public static int speed; //the Truck class has one constructor public void Truck (int startcadance, int startspeed, int startgear) { gear = startgear; cadance = startcadance; speed = startspeed; } //the Truck class has four methods public void setcadance (int newvalue) { cadance = 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 startcadance, int startspeed, int startgear) { super.Truck (startHeight, startcadance, startgear); seatHeight = startHeight; } //the MountainTruck subclass adds one method public void seatHeight (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 ="+gear); System.out.println ("speed ="+speed); MB.setgear(2); MB.speedup(2); System.out.println ("gear ="+gear); System.out.println ("speed ="+speed); MB.speedup(2); MB.setgear(4); System.out.println ("gear ="+gear); System.out.println ("speed ="+speed); } }
Output
Keterangan Program inimenggunakan 2 class di mana pada class truck berisi spesifikasi mountain truck. Dan di class mountaintruck berisi pemanggilan method pada class truck.
D. TUGAS PRAKTIKUM TUGAS PRAKTIKUM 1 1. 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!
Scrib class Induk{ //mendefinisikan method test() tanpa parameter public void test(){ System.out.println("Method di dalam kelas induk"); } }
class Turunan extends Induk{ public void test(String s){ System.out.println("Method di dalam kelas turunan"); System.out.println("s :\"" + s + "\""); } }
class Test{ public static void main(String[]args) { Turunan Test1 = new Turunan(); Test1.test(); Test1.test("Done !!!!..."); } }
Output
Penjelasan Program diatas terdiri dari 2 class. Class pertama yaitu class Truck dan class yang kedua adalah class MountainTruck. Superclass pada program ini adalah class MountaiTruck, sedangkan class Truck sebagai subclass. Di dalam superclass terdapat pendeklarasian program yang akan dijalankan serta perintah keluaran yang akan ditampilkan oleh program. Sedangkan pada class Truck atau subclass terdapat pendeklarasian juga tetapi secara umum saja tidak detail seperti pada superclass. Output yang ditampilkan oleh program adalah pada saat program sedang mulai berjalan gear = 0 speed = 0, gear = 2 speed = 2, gear = 2 speed = 4.
E. TUGAS RUMAH TUGAS RUMAH 1 1. Buatlah program bertema "perusahaan" yang menerapkan konsep a. class dan object b. inheritance ->('keyword 'extends') c. terdapat penggunaan keyword "super" dan "this" scrib public class Orang { public String nama; public String alamat; //Constructor... public Orang(){ } public Orang(String nama) { this.nama = nama; } public Orang(String nama,String alamat){ this.nama=nama; this.alamat=alamat; } //accessor method mengembalikan nilai public String getName(){ return nama; } //mutator methode untuk mengubah nilai dari instance. public void setName(String nama){ this.nama = nama; } }
public class Karyawan extends Orang{ String name; public Karyawan() { //super digunakan untuk memanggil constructor terdekat pada kelas Orang. super("OB"); } //overidde methode dari kelas Orang.. public String getName(){ return nama; } public void setName(String nama){ this.nama = nama; } }
public class Pekerja extends Orang{ public Pekerja() { super("Kepala OB"); } //overide dari kelas Person public String getName(){ return nama; } public void setName(String nama){ this.nama = nama; } }
public class CallOrang { public static void main(String[] args){ //contoh polimorfisme di java Orang call; Karyawan m = new Karyawan(); Pekerja n = new Pekerja(); //memanggil dari kelas Karyawan call = m; String smp = call.getName(); System.out.println("\n\nNama Perusahaan : Kantor TPPI"); System.out.println("Bidang : Pertambangan"); System.out.println("Pusat Perusahaan: TUBAN"); System.out.println("----------------------------------------"); System.out.println("DAFTAR KARYAWAN"); System.out.println("----------------------------------------"); System.out.println("Nama : budi"); System.out.println(" DARI BAGIAN KARYAWAN : " + smp); //memanggil dari kelas pekerja call = n; String sma = call.getName(); System.out.println(" SEBAGAI : " + sma); } }
output
penjelasan program ini menampilkan data pekerjaan karyawan. Dimana ada 4 class. Class pertama class orang yang berisi nama dan alamat. Lalu di class karyawan terdapat pekerjaan karyawan itu. Lalu di class pekerjaan terdapat posisi pekerjaan karyawan itu dan di class callorang terdapat pemanggilan semua method yang terdapat pada masing-masing class.
F. KESIMPULAN Untuk melakukan inheritance di java, kita menggunakan keyword extends. Overloading adalah method dengan nama yang sama dengan method lain padasuatu class tetapi dengan parameter yang berbeda. Tujuan dibuatnya overloadingyaitu memudahkan penggunaan method dengan fungsi yang hampir sama. Overriding adalah method subclass sama dengan method super class, parameternya sama tetapi pernyataan atau implementasinya berbeda.
G. DAFTAR PUSTAKA
Modul Praktikum Pemrograman Berbasis Objek
Pengenalan Pemrograman I J.E.N.I