inheritance - gunadarmatissa.staff.gunadarma.ac.id/.../files/66828/inheritance.pdf · konsep...
TRANSCRIPT
MAKALAH PEMROGRAMAN BERBASIS OBJEK
NAMA NPM ARI SANTOSO 51412069
DICKY ROHMAN 52412072
PRATIWI 55412699
PUTRI JUNINGTYAS 55412768
RADEN MUHAMMAD NUR WICAKSONO 55412846
KELAS: 2IA17
UNIVERSITAS GUNADARMA
2013-2014
INHERITANCE
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, laba-laba, 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/ di-
extends, 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 paket-
paket 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-dan-
subclass.html