Enkapsulasi, Inheritance, Polimorfisme, Overloading dan Overriding
ENCAPSULATION (PENGKAPSULAN)
Encapsulation adalah proses pemaketan data bersama metode-metodenya dimana hal ini bermanfaat untuk menyembeunyikan rincian-rincian implementasi dari pemakai. Dalam sebuah objek yang mengandung variabel-variabel dan method-method, dapat ditentukan hak akses pada sebuah variabel atau method dari objek. Pembungkusan variabel dan method dalam sebuah objek dalam bagian yang terlindungi inilah yang disebut dengan enkapsulasi.Bagian eksternal dari sebuah objek sering disebut sebagai interface atau antarmuka terhadap objek lain. Karena objek lain harus berkomunikasi dengan obejk itu hanya melalui antarmuka maka bagian internal objek dapat dilindungi dari gangguan luar. Karena program luar tidak mengakses implementasi internal objek, maka implementasi internal dapat berubah tanpa mempengaruhi bagian-bagian program lain.
Di dalam Java, pengkapsulan dapat dilakukan dengan pembentukan kelas-kelas menggunakan keyword class. Sedangkan penyembunyian informasi dapat dilakukan dengan pengendalian terhadap pengaksesan pembentuk kelas dengan keyword-keyword untuk kendali pengaksesan default, private, protected, dan public. Penyembunyian informasi deilakukan dengan implementasi penerapan kendari menggunakan keyword private dan protected pada elemen data.
Ada 2 manfaat utama dari encapsulation yaitu :
1. Penyembunyian Informasi (information hiding)
Hal ini mengacu kepada perlindungan terhadap implementasi obejk internal. Objek tersebut dari interface public dan bagian private yang merupakan kombinasi data dan metode internal. Manfaat utamanya adalah bagian internal dapat berubah tanpa mempengaruhi bagian-bagian program yang lain.2. Modularitas
Modularitas berarti objek dapat dikelola secara independen. Karena kode sumber bagian internal objek dikelola secara terpisah dari antarmuka, maka Kita bebas melakukan modifikasi yang tidak menyebabkan masalah pada bagian-bagian lain dari sistem. Manfaat ini mempermudah mendistriibusikan objek-objek dari sistem.Program:
Class Siswa:
package Encapsulation;
public class Siswa {
private String jurusan;
private String rombel;
private String nama;
private String nis;
public void setJurusan(String newValue){
jurusan = newValue;
}
public void setRombel(String newValue){
rombel = newValue;
}
public void setNama( String newValue){
nama = newValue;
}
public void setNis(String newValue){
nis = newValue;
}
public String getJurusan(){
return jurusan;
}
public String getRombel(){
return rombel;
}
public String getNama(){
return nama;
}
public String getNis(){
return nis;
}
}
Class Encapsulation: package Encapsulation; public class main { public static void main(String[] args) { Siswa wk = new Siswa(); wk.setJurusan("Rekayasa Perangkat Lunak "); wk.setRombel("RPL XI - 3 "); wk.setNama("Neddy Avgha P "); wk.setNis("11706278 "); System.out.println("Jurusan:"+wk.getJurusan()+"Rombel:"+wk.getRombel()+"Nama:" +wk.getNama()+"NIS:"+wk.getNis()); } }
_____________________________
Output:Jurusan:Rekayasa Perangkat Lunak Rombel:RPL XI - 3 Nama:Neddy Avgha P NIS:11706278
_____________________________
Kesimpulan Program : class Siswa merupakan kelas untuk pembentukan Objek dan pemrosesan dalam pencarian data. Sedangkan untuk class Encapsulation merupakan kelas untuk menampilkan hasil dari proses tersebut.
INHERITANCE (PEWARISAN/PENURUNAN)
Pewarisan adalah proses penciptaan kelas baru dengan mewarisi karakteristik dari kelas yang telah ada, ditambah dengan karakteristik unik dari kelas baru tersebut. Dalam hirarki kelas, jika kelas C merupakan turunan kelas B, dan kelas B merupakan turunan kelas A, maka otomatis attribute dan method kelas A juga diwariskan kelas C. Setiap subclass akan mewarisi state (variabel-variabel ) danbehaviour ( method-method ) dari superclass-nya. Subclass kemudian dapat menambahkan state dan behavior baru yang spesifik dan dapat pula memodifikasi (override ) state dan behaviour yang diturunkan oleh superclass-nya.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.
· Kemudahan dalam me-manage kelas yang memiliki data dan method yang sama Untuk memodifikasi suatu data atau method untuk semua subkelas / kelas anak, maka tidak perlu melakukan perubahan di masing-masing kelas anak melainkan hanya pada kelas induk saja.
Istilah dalam inheritance yang perlu diperhatikan :
· Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
· Superclass
Superclass (induk) digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.
· Subclass
Subclass (anak) adalah class anak atau turunan secara hirarki dari superclass.
Secara Singkat Inheritance adalah penurunan sifat dari superclass ke subclass, termasuk method dan tipe data di superclass diturunkan ke subclass.
Program:
Class Lingkaran:
package tugaspbo;
public class Lingkaran {
float jari=7;
double v=3.14;
public double lingkaran(){
return jari*jari*v;
}
public double Keliling(){
return (2*jari*v);
}
}
Class Tabung:
package tugaspbo;
public class Tabung extends Lingkaran {
double t=10;
Lingkaran ling = new Lingkaran ();
public void Input(){
System.out.println("Jari-jari Lingkaran :"+jari);
System.out.println("'V'Lingkaran :"+v);
}
public void LKlingkaran(){
System.out.println("Luas Lingkaran :"+ling.lingkaran());
System.out.println("Keliling Lingkaran :"+ling.Keliling());
}
public double tabung(){
return lingkaran()*t;
}
public double LuasTabung(){
return (2*lingkaran())+(Keliling()*t);
}
}
Class Main: package tugaspbo; public class Main { public static void main(String[]args){ Tabung gelas=new Tabung(); System.out.println("========Lingkaran========="); gelas.Input(); gelas.LKlingkaran(); System.out.println(); System.out.println("==========Tabung=========="); System.out.println("volume Tabung adalah:"+gelas.tabung()); System.out.println("Luas Tabung adalah:"+gelas.LuasTabung()); } }
_____________________________
Output:======== Lingkaran =========
Jari-jari Lingkaran :7.0
'V'Lingkaran :3.14
Luas Lingkaran :153.86
Keliling Lingkaran :43.96
========== Tabung ==========
volume Tabung adalah:1538.6000000000001
Luas Tabung adalah:747.32
_____________________________
Kesimpulan Program:
Class Lingkaran yaitu kelas induknya. Class Tabung yaitu kelas anaknya, yang mana Class Tabung mendapatkan sifat dari Class Lingkaran. Dan terakhir yaitu Class Main, Class Main ini adalah class untuk meng-kompile program, tanpa Class Main program tidak dapat dijalankan.
POLYMORPHISM
Polymorphism sebuah kata dari bahasa Yunani yang mempunyai arti banyak bentuk. Dua objek atau lebih dikatakan sebagai polymorphic bila kedua objek tersebut mempunyai (interface) antarmuka identik namun mempunyai perilaku yang berbeda. Dalam pemrograman, polimorpism dapat diartikan sebagai modul yang memiliki nama sama, namun memiliki behaviour yang berbeda sehingga listing code implementasinya juga berbeda.Kondisi yang harus dipenuhi supaya polimorfisme dapat diimplementasikan adalah :
· Method yang dipanggil harus melalui variabel dari basis class atau superclass.
· Method yang dipanggil harus juga menjadi method dari basis class.
· Signature method harus sama baik pada superclass maupun subclass.
· Method access attribute pada subclass tidak boleh lebih terbatas dari basis class.
Program:
Class Bentuk:
package Polymorphism;
abstract class Bentuk{
protected int panjang;
protected int lebar;
public String getBentuk(){
return "Bentuk Dasar";
}
public abstract int hitungLuas();
}
Class BujurSangkar:
package Polymorphism;
class BujurSangkar extends Bentuk {
public BujurSangkar(int panjang1, int lebar1) {
this.panjang = panjang1;
this.lebar = lebar1;
}
public String getBentuk() {
return "Bentuk Bujur Sangkar";
}
public int hitungLuas() {
return panjang*lebar;
}
}
Class SegiTiga:
package Polymorphism;
class SegiTiga extends Bentuk {
public SegiTiga(int panjang2, int lebar2) {
this.panjang = panjang2;
this.lebar = lebar2;
}
public String getBentuk() {
return "Bentuk Segitiga";
}
public int hitungLuas() {
return this.panjang*this.lebar/2;
}
}
Class Polymorphism:
package Polymorphism;
class SegiTiga extends Bentuk {
public SegiTiga(int panjang2, int lebar2) {
this.panjang = panjang2;
this.lebar = lebar2;
}
public String getBentuk() {
return "Bentuk Segitiga";
}
public int hitungLuas() {
return this.panjang*this.lebar/2;
}
}
_______________________________
Output:
Bentuk Bujur Sangkar dengan luas 100
Bentuk Segitiga dengan luas 25
_____________________________
Kesimpulan Program:
Bentuk diatas terdiri dari 2 bentuk, yaitu bentuk bujur sangkar dan bentuk segitiga, mereka mempunyai Interface yang sama (panjang dan lebar), meskipun mereka mempunyai interface yang sama akan tetapi mereka mempunyai jumlah luas/perhitungan luas yang berbeda (behavior), Konsep ini juga sering disebut Interface banyak aksi
Overloading
Method Overloading adalah sebuah kemampuan yang membolehkan sebuah class mempunyai 2 atau lebih method dengan nama yang sama, yang membedakan adalah parameternya.Pada method overloading perbedaan parameter mencakup :
- Jumlah parameter
- Tipe data dari parameter
- Urutan dari tipe data parameter
Method Overloading juga dikenal dengan sebutan Static Polymorphism. Berikut ini contoh Class yang melakukan Overloading.
public class ContohOverloading {
public void jumlah (int a, int b){
System.out.println("Jumlah 2 angka ="+ (a + b));
}
//oveloading perbedaan jumlah parameter
public void jumlah (int a, int b, int c){
System.out.println("Jumlah 3 angka =" + (a + b + c));
}
//overloading perbedaan tipe data parameter
public void jumlah (double a, int b){
System.out.println("Jumlah 2 angka (double+int) = "+ (a + b));
}
//overloading perbedaan urutan tipe data parameter
public void jumlah (int b, double a){
System.out.println("Jumlah 2 angka (int+double) = "+ (a + b));
}
}
Penggunaan pada class utama :
public class PenggunaanOverloading {
public static void main(String[] args) {
ContohOverloading co = new ContohOverloading();
co.jumlah(83,32);
co.jumlah(34,454,432);
co.jumlah(34.43,34);
co.jumlah(28,33.23);
}
}
public class ContohOverloading {
public void jumlah (int a, int b){
System.out.println("Jumlah 2 angka ="+ (a + b));
}
//oveloading perbedaan jumlah parameter
public void jumlah (int a, int b, int c){
System.out.println("Jumlah 3 angka =" + (a + b + c));
}
//overloading perbedaan tipe data parameter
public void jumlah (double a, int b){
System.out.println("Jumlah 2 angka (double+int) = "+ (a + b));
}
//overloading perbedaan urutan tipe data parameter
public void jumlah (int b, double a){
System.out.println("Jumlah 2 angka (int+double) = "+ (a + b));
}
}
Penggunaan pada class utama :
public class PenggunaanOverloading {
public static void main(String[] args) {
ContohOverloading co = new ContohOverloading();
co.jumlah(83,32);
co.jumlah(34,454,432);
co.jumlah(34.43,34);
co.jumlah(28,33.23);
}
}
Overriding
Method overriding merupakan method yang parrent class yang ditulis kembali oleh subclass. Aturan dari method overriding pada Java :- Parameter yang terdapat pada method overriding di subclass harus sama dengan parameter yang terdapat pada parent class.
- Aturan hak akses, hak akses method overriding di subclass tidak boleh lebih ketat di bandingkan dengan hak akses method pada parent class.
public class Binatang {
public void begerak(){
System.out.println("Binatang bergerak sesuai kemampuannya");
}
public void berkembangBiak(){
System.out.println("Binatang berkembang biak sesuai kemampuannya");
}
}
public class Mamalia extends Binatang {
//overriding method parent class
public void begerak(){
System.out.println("Mamalia bergerak sebagian besar dengan kakinya");
}
public void berlari(){
System.out.println("Sebagian Mamalia dapat berlari");
}
}
public class PenggunaanOverriding {
public static void main(String[] args) {
// TODO Auto-generated method stub
Binatang b = new Binatang();
Mamalia m = new Mamalia();
Binatang bm = new Mamalia();
b.begerak();
m.begerak();
bm.begerak();
bm.berkembangBiak();
}
}
Comments
Post a Comment