- INHERITANCE
Salah satu konsep dasar dari
pemrograman berbasis objek pada java adalah Inheritance, berikut ini sedikit
gambaran tentang inheritance. Pada dasarnya, kita melakukan
inheritance(pewarisan) untuk membuat suatu class baru(class turunan/subclass)
yang masih memiliki sifat atau spesifikasi dari superclass. Di dalam Java untuk mendeklarasikan suatu
class sebagai subclass dilakukan dengan cara menambahkan kata kunci extends
setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya.
Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin
melakukan perluasan class.
Contoh implementasi inheritance :
public class Pegawai {
public String nama;
public double gaji;
}
public class Manajer extends Pegawai {
public String departemen;
}
Pada saat class Manajer menurunkan atau memperluas (extend) class Pegawai, maka ia mewarisi data member yang dipunyai oleh class Pegawai. Dengan demikian, class Manajer mempunyai data member yang diwarisi oleh Pegawai (nama, gaji), ditambah dengan data member yang ia punyai (departemen).
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).
4. Kata kunci super dipakai untuk merujuk pada member dari parent class, sebagaimana kata kunci this yang dipakai untuk merujuk pada member dari class itu sendiri. Adapun format penulisannya adalah sebagai berikut:
super.data_member -> merujuk pada data member pada parent class
super.function_member() -> merujuk pada function member pada parent class
super() -> merujuk pada konstruktor pada parent class
Percobaan 1 : Menggunakan kata kunci super
Berikut ini listing penggunaan kata kunci super.
class Parent {
public int x = 5;
}
class Child extends Parent {
public int x = 10;
public void Info(int x) {
System.out.println("Nilai x sebagai parameter = " + x);
System.out.println("Data member x di class Child = " + this.x);
System.out.println("Data member x di class Parent = " +
super.x);
}
}
public class NilaiX {
public static void main(String args[]) {
Child tes = new Child();
tes.Info(20);
}
}
Ketika program tersebut dijalankan, akan tampak hasil seperti dibawah ini :
Nilai x sebagai parameter = 20
Data member x di class Child = 10
Data member x di class Parent = 5
Percobaan 2 : Kontrol pengaksesan
Buatlah class Pegawai seperti dibawah ini:
public class Pegawai {
private String nama;
public double gaji;
}
Kemudian buatlah class Manajer seperti ini dibawah ini.
public class Manajer extends Pegawai {
public String departemen;
public void IsiData(String n, String d) {
nama=n;
departemen=d;
}
}
Sekarang cobalah untuk mengkompilasi class Manajer diatas. Apa yang terjadi?.
Pesan kesalahan akan muncul seperti ini:
Manajer.java:5: nama has private access in Pegawai
nama=n;
Ini membuktikan bahwa class Manajer tidak mewarisi data member nama dari parent
class-nya(Pegawai).
2.
ENCAPSULATION
Enkapsulasi
adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses
program agar tidak dapat diakses secara sembarangan atau di intervensi oleh
program lain. Konsep enkapsulasi sangat penting dilakukan untuk menjaga
kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program
tersebut.
Dalam
kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada
generator, dan sistem perputaran generator untuk menghasilkan arus listrik.
Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator,
begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu
mengetahui bagaimana kinerja sistem perputaran generator, apakah generator
berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem
perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah
menyala atau tidak.
Begitulah
konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses
ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat
menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah
ditentukan dari awal.
Contoh dalam
program
Belajar.Java
class belajar{
public String x =”Pintar”;
private String y = “Java”;
}
Pintar.Java
public class Pintar{
public static void main(String[]args){
Coba panggil = new Belajar();
System.out.println(“Panggil X : “+panggil.x);
System.out.println(“Panggil Y : “+panggil.y);
}}
Tipe public dan private mempunyai fungsi yang
berbeda. Fungsi public
yang terdapat dalam class Coba pada variable x, memungkinkan nilai dari
variable x dapat diakses oleh class Belajar. Sedangkan variable y yang
menggunakan fungsi private
tidak dapat dipanggil didalam class Belajar.
3.
POLYMORPHISM
Polymorphism, suatu aksi
yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki
obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan
yang sama sesuai dengan sifat masing-masing obyek.
Atau
Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa
(override), suatu method, yang berasal dari parent class (super class) dimana
object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda.
Contoh
program java nya :
Simpan
dengan nama BeautyfullMahasiswa.java
public class
BeautyfullMahasiswa extends Mahasiswa{
public void
printNama(){
System.out.println(“Hallo,
saya Mahasiswa yg cantik n baik”);
Super.printNama();
}
}
Simpan
dengan nama Main.java
public class
Main{
public
static void main(String[] args]) {
BeautyfullMahasiswa
mhs = new BeautyfullMahasiswa();
mhs.setNim(“09530524”);
mhs.setNama(“Afrida
Asna”);
mhs.printNim();
mhs.printNama();
}
}
Kemudian
compile dan run.
C:\>javac
BeautyfullMahasiswa.java
C:\>javac
Main.java
C:\>java
Main
Kontruksi
objek mahasiswa
Nim:09530524
Hallo, saya
Mahasiswa yg cantik n baik
Nama: Afrida
Asna
C:\>
Terlihat
bahwa disini kita mengoverride method printNama(), dengan menambahkan beberapa
teks tambahan, sehingga method printNama(), pada class BeautyfullMahasiswa,
memiliki perilaku yang berbeda dengan class Mahasiswa.
4. Information
hiding
Sebelumnya
kita dapat mengakses anggota class baik berupa atribut maupun method secara
langsung dengan menggunakan objek yang telah kita buat. Hal ini dikarenakan
akses kontrol yang diberikan kepada atribut maupun method yang ada di dalam
class tersebut adalah 'public'. Kita dapat menyembunyikan informasi dari suatu
class sehingga anggota class tersebut tidak dapat diakses dari luar, caranya
adalah hanya dengan memberikan akses kontrol 'private' ketika mendeklarasikan
atribut atau method. Proses ini disebut dengan information hiding.
Interface to
access data
Jika kita telah melakukan information hiding terhadap
suatu atribut pada suatu class, lalu bagaimana cara melakukan perubahan
terhadap atribut yang kita sembunyikan tersebut, caranya adalah dengan membuat
suatu interface berupa method untuk menginisialisasi atau merubah nilai dari
suatu atribut tersebut.
Contoh program sederhana Enkapsulasi pada Java :
Contoh program sederhana Enkapsulasi pada Java :
class enkapsulasi {
private int secret;
public boolean setSecret (int secret) {
if (secret < 1 || secret > 100) {
return false;
}
this.secret = secret;
return true;
}
public getSecret{} {
return secret;
}
private int secret;
public boolean setSecret (int secret) {
if (secret < 1 || secret > 100) {
return false;
}
this.secret = secret;
return true;
}
public getSecret{} {
return secret;
}
}
No comments:
Post a Comment
Terimakasih