Encapsulation,
Polymorphism dan Inheritance
A. 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 Mahasiswa:
package Encapsulation;
public class Mahasiswa {
private String jurusan;
private String Matkul;
private String nama;
private String npm;
public void
setJurusan(String newValue){
jurusan = newValue;
}
public void
setMatkul(String newValue){
Matkul = newValue;
}
public void setNama( String
newValue){
nama = newValue;
}
public void setNpm(String
newValue){
npm = newValue;
}
public String
getJurusan(){
return jurusan;
}
public String getMatkul(){
return Matkul;
}
public String
getNama(){
return nama;
}
public String
getNpm(){
return npm;
}
}
_____________________________________________________________________________
Class Encapsulation:
package Encapsulation;
public class main {
public static void main(String[]
args) {
Mahasiswa
wie = new Mahasiswa();
wie.setJurusan("Teknik
Informatika ");
wie.setMatkul("PBO
");
wie.setNama("Dwi
Fadil S ");
wie.setNpm("14060020");
System.out.println("Jurusan:"+wie.getJurusan()+"MataKuliah:"+wie.getMatkul()+"Nama:" +wie.getNama()+"NPM:"+wie.getNpm());
}
}____________________________________________________________________________
Output:
Jurusan:Teknik Informatika
MataKuliah:PBO Nama:Dwi Fadil S NPM:14060020
_______________________________________________________________________
Kesimpulan
Program :
class Mahasiswa merupakan kelas untuk pembentukan Objek dan
pemrosesan dalam pencarian data. Sedangkan untuk class Encapsulation merupakan kelas untuk menampilkan
hasil dari proses tersebut.
B. 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 ) dan behaviour ( 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.
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.
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.
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 tugaspbo6;
package tugaspbo6;
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 tugaspbo6;
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 tugaspbo6;
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.
C. 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
good job gan
BalasHapusPeniup debu panjang