INHERITANCE MAKALAH PEMROGRAMAN BERBASIS OBJEK
NAMA
NPM
ARI SANTOSO DICKY ROHMAN PRATIWI PUTRI JUNINGTYAS RADEN MUHAMMAD NUR WICAKSONO
51412069 52412072 55412699 55412768 55412846
KELAS: 2IA17
UNIVERSITAS GUNADARMA 2013-2014
I.
PENGENALAN INHERITANCE Pada dasarnya,inheritance merupakan fitur penting dari OOP,yaitu merupakan suatu bentuk software reuse dimana class memanfaatkan anggota (atribut&method) class yang telah ada. Inheritance merupakan proses pewarisan data dan method dari suatu class yang telah ada kepada class baru. Dengan menggunakan inheritance atau pewarisan user akan menghemat banyak waktu pada saat membuat software. Pada saat membuat suatu class baru, user atau programmer dapat mendesain class tersebut sedemikian rupa agar menuruni sifat anggota class yang telah ada. Untuk menggunakan inheritance, maka dibutuhkan keyword extends. Cara penulisannya adalah sebagai berikut: class namaSubClass extends namaSuperClass { //definisi kelas } I.I Manfaat Pengunaan Inheritance Berikut ini adalah beberapa manfaat apabila anda menggunakan konsep inheritance: 1. Bersifat Reuseable Apabila memerlukan beberapa kelas yang berasal dari basis yang sama (data dan method yang sama), namun pada masing-masing kelas akan ditambahkan data atau method tambahan. Dengan menggunakan inheritance, cukup mengambil data atau method pada class induknya dan memberikan beberapa tambahan data atau method pada class anaknya apabila diperlukan. 2. Kemudahan dalam memanage kelas yang dimiliki data dan method yang sama Bila anda ingin memodifikasi suatu data atau method pada semua subclass, tidak perlu melakukan perubahan pada masing-masing kelas pada subclass. Cukup melakukan perubahan data atau method pada kelas super(superclass) yang mewarisi subclass tersebut.
II.
SUBCLASS DAN SUPERCLASS Suatu objek seringkali merupakan jenis khusus dari objek yang lain. Class yang telah ada ini disebut superclass atau dengan kata lain superclass adalah class yang mewariskan dan class yang baru disebut subclass,subclass adalah kelas yang mendapat warisan atau kelas yang diwariskan. Suatu subclass biasanya menambahkan atribut dan metod baru tersendiri. Oleh karena itu, subclass pasti lebih spesifik daripada superclassnya dan merepresentasikan sekumpulan objek yang lebih special. Subclass juga memiliki method yang ada di superclassnya dan ditambah dengan method baru yang spesifik dimiliki subclass itu sendiri. Contoh Program : SUPER CLASS class SuperClass { public void Hewan() { System.out.println("Contoh Macam-macam hewan :"); System.out.println("- hewan berkaki dua"); System.out.println("- hewan berkaki enam"); System.out.println("- hewan berkaki empat"); System.out.println("- hewan berkaki delapan"); } public static void main(String[] args) { SuperClass sc = new SuperClass(); sc.Hewan(); } }
OUTPUT Contoh Macam-macam hewan : - hewan berkaki dua - hewan berkaki enam - hewan berkaki empat - hewan berkaki delapan SUBCLASS : class SubClass extends SuperClass { public void Panggil() { super.Hewan(); System.out.println("Contoh Hewan :"); } public void Hewanberkakidua() { System.out.println("- hewan berkaki dua: kangguru, ayam, bebek, dll"); } public void Hewanberkakienam() { System.out.println("- hewan berkaki enam : capung, nyamuk, kupu-kupu, dll"); } public void Hewanberkakiempat() { System.out.println("- hewan berkaki empat : kucing, anjing, kuda, dll"); }
public void Hewanberkakidelapan() { System.out.println("- hewan berkaki delapan : kepiting, belalang, labalaba, dll"); } public static void main(String[]args) { SubClass scs = new SubClass(); scs.Panggil(); scs.Hewanberkakidua(); scs. Hewanberkakienam(); scs. Hewanberkakiempat(); scs. Hewanberkakidelapan(); } } OUTPUT Contoh Macam-macam hewan : - hewan berkaki dua - hewan berkaki enam - hewan berkaki empat - hewan berkaki delapan Contoh Hewan : - hewan berkaki dua : kangguru, ayam, bebek, dll - hewan berkaki enam : capung, nyamuk, kupu-kupu, dll
- hewan berkaki empat : kucing, anjing, kuda, dll - hewan berkaki delapan : kepiting, belalang, laba-laba, dll
III.
MODIFIER FINAL Modifier final berarti konstan / tetap dan tidak dapat dimodifikasi (diubah). Variabel final harus diinisialisasi saat dideklarasikan. Apabila diterapkan pada metode berarti metode tidak dapat ditimpa. Metode yang diberi modifier finaltidak dapat lagi diperluas dan ditimpa (override) di subkelas-subkelasnya. Modifier final berarti anggota kelas itu versi akhir (final version). Variabel final serupa dengan variabel const di C++. Variabel ini harus selalu telah diinisialisasi saat deklarasi dan selanjutnya nilainya tidak dapat diubah. Contoh Program : package disket; public class Disket { int panjang = 10; final int LEBAR = 10; String warna = "kuning"; String bentuk = "SegiEmpat"; String data = " "; Disket() { panjang = 100; } Disket(int panjang){ this.panjang=panjang; } void simpanData (String data1) { this.data+=data1; } void hapusData(){ data = " "; } String bacaData(){
return data; } } package disket; public class MainDisket { public static void main(String[]args){ Disket disk1 = new Disket(50); System.out.println("Panjang Disket = "+disk1.panjang); System.out.println("Lebar Disket = "+disk1.LEBAR); System.out.println("Warna Disket = "+disk1.warna); System.out.println("Bentuk Disket = "+disk1.bentuk); System.out.println("Data Mula-mula = "+disk1.bacaData()); disk1.simpanData("Belajar Java"); System.out.println("Setelah simpan data = "+disk1.bacaData()); disk1.hapusData(); System.out.println("Setelah hapus Data = "+disk1.bacaData()); System.out.println(" "); } } Output Program : Panjang Disket = 50 Lebar Disket = 10 Warna Disket = kuning Bentuk Disket = SegiEmpat Data Mula-mula = Setelah simpan data = Belajar Java Setelah hapus Data = IV.
JENIS-JENIS KEYWORD DAN MODIFIER abstrak Abstract class adalah kelas yang terletak pada posisi tertinggi pada hierarki kelas. Kelas ini digunakan sebagai basis bagi penurunan kelas
lainnya, sehingga abstract class tidak dapat diinstansiasi secara langsung menjadi object. Suatu abstract class bisa mengandung method kongkrit dan/atau method abstract. Abstract method meruapakan suatu method yang tidak mempunyai badan method. Hanya berupa nama method dan parameter inputan method. Ketika suatu abstract class diturunkan/ diextends, maka subclass harus mengimplementasikan semua method abstract pada parent/ base class. Jika tidak mengimplementasikan semua method abstract maka subclass harus dideklarasikan sebagai abstract class. assert Digunakan untuk membuat pernyataan-pernyataan yang selalu benar. Jika pernyataan akan diaktifkan ketika program dijalankan dan ternyata bahwa pernyataan adalah salah, maka AssertionError ditampilkan dan program akan berakhir. Keyword ini dimaksudkan untuk membantu dalam debugging. boolean boolean digunakan untuk menyatakan variable yang dapat menyimpan nilai boolean yaitu benar atau salah. break Digunakan untuk melanjutkan eksekusi program ke statement selanjutnya segera setelah selesai mengeksekusi suatu statement. byte Kata kunci byte digunakan untuk menyatakan variable dapat menyimpan data integer sebanyak 8-bit. case Digunakan untuk membuat case-case individu dalam pernyataan switch.
catch sebuah blok satement yang dieksekusi jika pengecualian dijalankan pada blok pendefinisian oleh kata kunci try sebelumnya. char Kata kunci char digunakan untuk menyatakan variable yang dapat menyimpan data karakter sebanyak 16-bit. class digunakan untuk mendefinisikan dan mengimplementasikan berbagai macam objek didalamnya. const const tidak digunakan dan tidak memiliki fungsi. continue Digunakan
untuk
melanjutkan
eksekusi
program
pada
akhir
pengulangan. default Default dapat digunakan dalam pernyataan switch untuk label blok pernyataan yang akan dieksekusi jika case tidak sesuai dengan nilai tertentu. do Digunakan
bersama
dengan
while
untuk
membuat
do-while
pengulangan, yang mengeksekusi suatu blok statemen berkaitan dengan pengulangan dan kemudian tes ekspresi boolean, jika pernyataan bernilai true, pemgulangan dijalankan lagi, ini terus sampai ekspresi bernilai false. double
Digunakan untuk menyatakan variable dapat menampung 64-bit tipe data float. else Kata kunci lain yang digunakan bersama dengan if untuk membuat pernyataan jika-lain, yang menguji suatu ekspresi boolean, jika ekspresi bernilai true, blok pernyataan terkait dengan jika dievaluasi, jika mengevaluasi ke false blok, dari laporan terkait dengan lain dievaluasi . enum (J2SE 5.0) Sebuah Java kata kunci yang digunakan untuk mendeklarasikan tipe enumerasi. Enumerations memperpanjang kelas dasar Enum. extends Keyword yang digunakan bila terjadi pewarisan, kelas yang mewariskan method dan attributenya disebut kelas super, sedangkan yang diwariskan disebut subkelas. final Dengan keyword ini kelas tidak dapat menurunkan kelas lain, method tidak dapat dioverride oleh method lain, membentuk suatu attribute menjadi konstanta. finally Digunakan untuk mendefinisikan suatu blok statemen untuk blok yang ditetapkan sebelumnya dengan kata kunci try. float Digunakan untuk menyatakan variable dapat menampung 32-bit tipe data decimal. for
Kata kunci untuk digunakan untuk membuat untuk pengulangan, yang menetapkan
inisialisasi
variabel,
ekspresi
boolean,
dan
suatu
incrementation. Inisialisasi variabel dilakukan terlebih dahulu, kemudian ekspresi boolean dievaluasi. Jika ekspresi bernilai true, blok pernyataan yang berhubungan dengan pengulangan dijalankan, dan kemudian incrementation yang dilakukan. Ekspresi boolean kemudian dievaluasi lagi, ini terus sampai ekspresi bernilai false . goto Meskipun tercantum sebagai kata kunci di Java, goto tidak digunakan dan tidak memiliki fungsi. if if digunakan untuk menguji suatu ekspresi boolean, jika ekspresi bernilai true, blok statement yang berhubungan akan dieksekusi. Kata kunci ini juga dapat digunakan untuk membuat pernyataan if-else. implements Termasuk dalam sebuah deklarasi kelas untuk menentukan satu atau lebih interface yang diimplementasikan oleh kelas saat ini. Kelas A mewarisi jenis dan metode abstrak dinyatakan oleh interface. import Digunakan pada awal sebuah file sumber untuk menentukan kelas atau seluruh paket JAVA untuk disebut kemudian tanpa termasuk paketpaket mereka nama-nama dalam referensi. Sejak J2SE 5.0, pernyataan impor dapat mengimpor anggota statis dari sebuah kelas. instanceof Sebuah operator biner yang menggunakan sebuah referensi obyek sebagai operan pertama dan kelas atau antarmuka sebagai operan
kedua dan menghasilkan hasil boolean. Operator instanceof bernilai true jika dan hanya jika jenis objek runtime adalah tugas kompatibel dengan kelas atau interface. int Digunakan untuk menyatakan variable dapat menampung 32-bit tipe data bilangan asli. interface Merupakan kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa detail implementasinya. Sedangkan detail dari method berada pada class yang mengimplementasikan interface tersebut. Interface digunakan bila Anda ingin mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses inheritance. Tipe data yang boleh pada interface hanya tipe data konstan. Setelah mengetahui apa itu interface.long native Digunakan dalam deklarasi metode untuk menentukan bahwa metode ini tidak diimplementasikan dalam file sumber Java yang sama, melainkan dalam bahasa lain . new Digunakan untuk membuat sebuah instance dari kelas atau array / obyek. package Sekelompok jenis. Paket dinyatakan dengan kata kunci paket. private Dengan keyword ini kelas/method/attribute tidak bisa diakses oleh kelas lain bahkan juga tidak dapat diturunkan.
protected Dengan keyword ini kelas/method/attribute dapat diakses oleh kelas lain yang satu package atau kelas lain tersebut merupakan turunannya.public Merupakan
keyword
dimana
dengan
keyword
ini
kelas/method/attribute dapat diakses oleh kelas lain dimanapun. return Keyword ini digunakan untuk keluar dari suatu method. Baris – baris program setelah keyword ini yang berada dalam blok method tersebut akan diabaikan. Kemudian eksekusi dilanjutkan ke pernyataan setelah blok method tersebut. short Digunakan untuk menyatakan variable dapat menampung 16-bit tipe data integer. static Dengan keyword ini method dan attribute milik kelas menjadi sifat bersama dari semua objek dalam kelas tersebut (tidak memerlukan instansiasi dan tidak bisa dioverride). strictfp (J2SE 1.2) Digunakan untuk membatasi presisi dan pembulatan perhitungan floating point untuk memastikan portabilitas. 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. switch Kata kunci switch digunakan dengan case dan default, yang akan memeriksa sebuah variabel, dan mengeksekusi blok pernyataan yang sama dengan case tersebut. synchronized Digunakan dalam deklarasi metode atau blok kode untuk memperoleh kunci mutex untuk objek while thread saat mengeksekusi kode . Untuk metode statis, objek terkunci adalah Kelas kelas. Jaminan bahwa paling banyak satu thread pada waktu operasi pada obyek yang sama mengeksekusi kode tersebut. Kunci mutex secara otomatis dilepaskan ketika keluar eksekusi kode disinkronisasi. Fields, kelas dan interface tidak dapat dinyatakan sebagai disinkronisasi. this Keyword yang digunakan untuk menyatakan objek sekarang dan tanpa instansiasi. throw Menyebabkan deklarasi pengecualian. Hal ini menyebabkan eksekusi untuk melanjutkan dengan pengecualian penangan melampirkan pertama dinyatakan oleh kata kunci catch untuk menangani tipe pengecualian tugas kompatibel. Jika tidak ada handler pengecualian tersebut ditemukan dalam metode saat ini, maka kembali metode dan proses ini diulang dalam metode panggilan. Jika tidak ada handler pengecualian ditemukan dalam setiap pemanggilan metode di stack,
maka pengecualian dilewatkan ke
handler pengecualian
tidak
tertangkap thread ini. throws Digunakan dalam deklarasi metode untuk menentukan pengecualian tidak ditangani dalam metode melainkan diteruskan ke tingkat yang lebih tinggi berikutnya program. Semua pengecualian tidak tertangkap dalam sebuah metode yang tidak case RuntimeException harus dideklarasikan menggunakan throws kata kunci. transient Menyatakan bahwa medan contoh bukan bagian dari default serial bentuk objek. Ketika suatu objek serial, hanya nilai-nilai non-fana bidang misalnya dimasukkan dalam representasi serial default. Ketika suatu objek deserialized, while bidang diinisialisasi hanya untuk nilai default mereka. Jika bentuk standar tidak digunakan, misalnya ketika sebuah tabel serialPersistentFields ini dideklarasikan pada hirarki kelas, semua kata kunci while diabaikan . try Mendefinisikan suatu blok statemen yang memiliki penanganan eksepsi. Jika eksepsi dilemparkan di dalam blok try, sebuah blok catch opsional dapat menangani jenis pengecualian dideklarasikan. Juga, sebuah blok akhirnya opsional dapat dideklarasikan yang akan dijalankan ketika eksekusi keluar dari blok mencoba dan menangkap klausa, terlepas dari apakah eksepsi dilemparkan atau tidak. Sebuah try blok harus memiliki minimal satu klausa catch atau finally blok. void
Keyword yang merupakan tipe jenis return value dimana method yang menggunakan keyword ini tidak mengembalikan nilai apapaun setelah dipanggil atau dieksekusi. volatile Digunakan dalam deklarasi lapangan untuk menentukan bahwa variabel yang diubah asynchronously oleh bersamaan menjalankan thread. Metode, kelas dan interface sehingga tidak dapat dideklarasikan volatile. while Kata kunci while digunakan untuk membuat pengulangan while, yang menguji suatu ekspresi boolean dan mengeksekusi blok pernyataan yang berhubungan dengan pengulangan jika ekspresi bernilai true; sampai ekspresi bernilai salah. Kata kunci ini juga dapat digunakan untuk membuat pengulangan do-while. Modifier pada Java : Dalam bahasa pemograman terdapat 4 modifier. Modifier ini berguna untuk melakukan enkapsulisasi(membungkus data) pada objek. Dengan menggunakan modifier, kita dapat menentukkan siapa saja yang dapat menggunakan atau mengakses objek tersebut. Modifier ini digunakan untuk hak akses user pada class, method, atau variabel. Modifier tersebut antara lain : 1. Default Modifier default menspesifikasikan kelas-kelas sepaket yang mengakses. Tidak ada keyword khusus untuk mendeklarasikan default modifier, bila tidak ada modifier pada deklarasi class, method atau variabel berarti modifier yang digunakan adalah default modifier. Contoh: class Mahasiswa { String nama; String kata() {
return “JAVA”; } } 2. Public Pada modifier public ini bersifat umum, yaitu class, method, atau variable dapat dipanggil oleh semua kelas. Baik dari satu paket yang sama atau berlainan paket. Public juga akan memperbolehkan akses terhadap semua kelas yang diinstan dari kelas tersebut. Contoh: class Mahasiswa { public String nama; public String kata() { return “JAVA”; } } 3. Private. Modifier private ini menunjukkan bahwa suatu class, method atau variabel hanya dapat diakses dari dalam kelas tersebut. modifier ini biasanya digunakan untuk kelas, method, atau variabel yang memang ingin disimpan atau tidak dapat digunakan oleh kelas yang lain (tidak berguna untuk kelas yang lain). Contoh: class Mahasiswa { private String nama; private String kata() { return “JAVA”; } } 4. Protected. Modifier protected ini digunakan kalau suatu class, method atau variabel ingin digunakan hanya oleh kelas-kelas yang satu paket dengan kelas tersebut atau sub kelas dari kelas tersebut baik yang satu paket atau lain paket. Contoh:
class Mahasiswa { protected String nama; protected String kata() { return “JAVA”; } } Contoh program : public class Manusia{ private String nama; private String jenkel; public void setNama(String nama){ this.nama=nama; } public void setJenkel(String jenkel){ this.jenkel=jenkel; } public void cetak(){ System.out.println("Nama : "+nama); System.out.println("Jenis Kelamin : "+jenkel); } }
public class DemoManusia{ public static void main(String args[]){ Manusia m = new Manusia(); m.setNama("Hendro"); m.setJenkel("Laki-laki"); m.cetak(); } }
V.
PENGGUNAAN KEYWORD “SUPER”
Keyword super digunakan oleh subclass untuk memanggil konstruktur atau method yang ada pada superclassnya. Berikut adalah cara penulisan “super” pada subclass untuk memanggil konstruktur pada superclass. super() atau super(parameter) Sedangkan cara penulisan “super” pada subclass untuk memanggil method pada superclass adalah sebagai berikut super.namaMethod() atau super.namaMethod(parameter)
LISTING PROGRAM package tanggal3; /** * * @author Dicky */ public class Tanggal3 { int Tahun, Bulan, Tanggal; Tanggal3(int T,int B, int G) {
Tahun = T; Bulan = B; Tanggal = G;
} public void cetakTanggal() { System.out.println(Tanggal+"/"+Bulan+"/"+Tahun); } public void tambahTahun() { // this.Tahun=this.Tahun+1; this.Tahun+=1; } public void tambahBulan() { if(this.Bulan==12){ //Bulan Desember -> Januari this.Bulan=1; this.tambahTahun(); } else { this.Bulan+=1; } } public void tambahTanggal() { int batasTanggal; if(this.Bulan==2 && this.Bulan%4==0) { batasTanggal=29; } else if(this.Bulan==2) { batasTanggal=28; } else if((this.Bulan<=1 && this.Bulan%2==1) || (this.Bulan>=8 && this.Bulan%2==0)) { batasTanggal=31; } else { batasTanggal=30; } if(this.Tanggal>=batasTanggal) {
this.Tanggal=1; this.tambahBulan(); } else { this.Tanggal+=1; } }
} class Tanggal_ID extends Tanggal3{ public Tanggal_ID( int G, int B, int T) { super(G, B, T); } public void cetakTanggalFull() { String namaBulan="Januari"; switch(this.Bulan) { case 1 : namaBulan="Januari"; break; case 2 : namaBulan="Februari"; break; case 3 : namaBulan="Maret"; break; case 4 : namaBulan="April"; break; case 5 : namaBulan="Mei"; break; case 6 : namaBulan="Juni"; break; case 7 : namaBulan="Juli";
break; case 8 : namaBulan="Agustus"; break; case 9 : namaBulan="September"; break; case 10 : namaBulan="Oktober"; break; case 11 : namaBulan="November"; break; case 12 : namaBulan="Desember"; break; } System.out.println(this.Tanggal+" "+namaBulan+" "+this.Tahun); } } class Tanggal_En extends Tanggal3 { public Tanggal_En (int G,int B,int T){ super(G,B,T); } public void cetakTanggalbaru (){ String namaBulan = "January"; switch(this.Bulan){ case 1 : namaBulan = "January"; break; case 2 : namaBulan = "February"; break; case 3 : namaBulan = "March"; break;
case 4 : namaBulan = "April"; break; case 5 : namaBulan = "May"; break; case 6 : namaBulan = "June"; break; case 7 : namaBulan = "July"; break; case 8 : namaBulan = "Augst"; break; case 9 : namaBulan = "September"; break; case 10 : namaBulan = "October"; break; case 11 : namaBulan = "November"; break; case 12 : namaBulan = "December"; break; } System.out.println(this.Tanggal+" "+namaBulan+" "+this.Tahun); } } package tanggal3; /** * * @author Dicky */ class MainClass { public static void main (String[] args){ Tanggal3 tgl = new Tanggal3(2012,12,31); System.out.print("Tanggal skrg: "); tgl.cetakTanggal();
tgl.tambahTanggal(); System.out.print("Tanggal stlh: "); tgl.cetakTanggal(); Tanggal_ID tgl3 = new Tanggal_ID(2012,2,29); System.out.print("Tanggal skrg: "); tgl3.cetakTanggalFull(); tgl3.tambahTanggal(); System.out.print("Tanggal stlh: "); tgl3.cetakTanggalFull(); Tanggal_En tgl4 = new Tanggal_En(2013,3,31); System.out.print("Tanggal skrg: "); tgl4.cetakTanggalbaru(); tgl4.tambahTanggal(); System.out.print("Tanggal slth: "); tgl4.cetakTanggalbaru(); } } OUTPUT :
DAFTAR PUSTAKA http://sinau-java.blogspot.com/2008/05/modifier.html http://isti-hana.blogspot.com/2012/11/method-dan-modifier-pada-java.html http://amaa-amoo.blogspot.com/2009/10/contoh-program-superclass-dansubclass.html