Enkapsulasi, Inheritance, Polymorphisme dan Package




1.  Encapsulasi

Encapsulasi (pembungkusan) dalam pemrograman berorientasi objek (PBO) maksudnya adalah untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau diinterverensi oleh program lain. Konsep ini sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga pro­­­gram tersebut. Ada dua hal yang mendasar dari enkapsulasi yaitu information hiding dan interface to access data.

Information hiding maksudnya adalah menyembunyikan informasi dari suatu class agar tidak bisa diakses oleh class lainnya dengan cara memberikan modifier private pada variabel yang akan disembunyikan.

Interface to access data sesuai dengan namanya, digunakan untuk mengakses nilai dari suatu variabel yang telah disembunyikan oleh information hiding baik itu mengambil nilai ataupun mengubah nilai. Hal ini dilakukan dengan menggunakan method, dengan method ini kita dapat mengakses variabel yang telah mengalami information hiding.

Encapsulasi terbagi menjadi 3 jenis, yaitu public, protected, dan private.

1.       Public
Merupakan suatu modifier yang memungkinkan setiap variabel maupun method yang dideklarasikan dengan  dalam class public ini dapat diakses oleh setiap class baik dalam package yang sama maupun package yang berbeda.

2.     Protected
Merupakan suatu modifier  yang digunakan untuk memproteksi suatu class. Sehingga hanya class dan subclass tersebutlah yang dapat mengakses varibel maupun method dalam class tersebut, baik dalam package yang sama maupun dalam package yang berbeda.

3.     Private
Merupakan kata kunci yang dideklarasikan dalam suatu class agar setiap variabel dan method yang berada dalam class private ini hanya dapat diakses oleh class yang sama. Didalam bahasa pemgrograman java class yang bersifat private memproteksi agar semua variabel dan methodnya tidak dapat di akses oleh semua subclass dan non subclass di package yang sama, dan subclass dan non subclass di package yang berbeda.
contoh program

Public Class NonEnkapsulasi

Public strNama As String

Public strAlamat As String

Public Sub GetInfo()

Console.WriteLine(“Nama: ” & Me.strNama)

Console.WriteLine(“Alamat: ” & Me.strAlamat)

End Sub

End Class


2. Inheritance

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.

·         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.

Contoh Program

Saya akan memberikan pendekatan secara analogi. Misal ada class mamalia dan dan juga ada class lumba-lumba. Lumba-lumba termasuk subclass dari class mamalia karena lumba-lumba memiliki atribute atau method sama dengan lumba-lumba hanya saja lumba-lumba dapat berenang. Jadi dapat disimpulkan bahwa class lumba-lumba merupakan perluasan dari class mamalia.

Berikut adalah penjelasan dengan source code untuk contoh diatas

Class mamalia

public class mamalia{
 public int keljarsusu;

 mamalia (int a){
  this.keljarsusu = a;
 }
 public void lahir(){
  //kode untuk melahirkan
 }
}

Class lumba2

public class lumba2 extends mamalia{
 public int sirip;

 public void renang(){
  //kode untuk berenang
 }
}

Dari source code di atas dapat saya jelaskan bahwa class lumba2 merupakan perluasan (extends) dari class mamalia. Subclass lumba2 memiliki atribute, method, dan konstruktor dari class mamalia. Untuk mengakses method dari subclass menggunakan cara seperti biasa.

3. 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.
Overloading method adalah suatu teknik dimana didalam suatu class terdapat method dengan nama yang sama namun prilaku yang berbeda.

Aturan penulisannya :

1.      Nama Method harus sama
2.     Parameter harus berbeda
3.     Tipe Kembalian boleh sama ataupun berbeda

contoh 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

4.PACKAGE

Pengertian package adalah sebuah sarana untuk mengelompokan atau mengorganisasikan kelas dan interface yang sama atau sekelompok menjadi satu unit tunggal dalam library.Secara fisik, package dapat berupa folder yang berisi file file/kelas interface/enum lain yang kegunaannya hampir sama sehingga patut untuk dikelompokan.Package mempengaruhi mekanisme hak akses ke kelas didalamnya.

Ada tiga langkah dalam membuat packageyaitu:

1.Mendeklarasikan dan memberi nama package.
2.Membuat struktur dan nama folder yang sesuai dengan struktur dan nama package.
3.Mengkompilasikan kelas kelas sesuai dengan nama package masing masing.

Mendeklarasikan dan memberi nama package.
Deklarasi package harus diletakan pada bagian paling awal darisuatu source code setiap kelas yang dibungkus package tersebut.

Bentuk umum deklarasi package:

package namaPackage;

Deklarasi tersebut akan memberitahukan interpreter,libraey kelas/ interface yang manakah yang dirujuk dan digunakan.

Syarat nama package:
1. Diawali huruf kecil
2. Menggambarkan kelas kelas yang dibungkusnya.
3. Harus unik
4. Merepresentasikan path dari package tersebut.
5. Harus sama direktorinya.

Contoh package standard:

Berisi kelas fundamental yang sering digunakan : java.lang
Berisi kelas untuk membangun GUI: java.awtdan java.swing
Berisi kelas untuk proses input output: java.io

Membuat Struktur direktori

langkah langah dalam pembuatan direktori mengunakan file manager sesuai struktur package dari langkah yang kita buat sebelumnya. kemudian tempatkan kelas kelas tersebut kedirektori yang bersesuaian.
Package dapat bersarang di package lain,sehingga dapat dibuat hirarki package.

Contoh bentuk umum pernyataan package multilevel:

package namaPackage1[.namaPackage2[.namaPackage3]];

Contoh hirarki package di JDK:

package java.awt.image;
Selanjutanya setiap kelas dalam package tersebut,masing masing dikompilasi menjadi byte code(*.class), sehingga package tersebut siap digunakan.

Menggunakan package

Ada dua cara menggunakan suatu package yaitu:

1. kelas menggunakan suatu package,berada dalam direktori yang sama dengn kelas kelas yang digunakan,sehingga tidak diperlukan import.

2. Kelas yang menggunakan suatu package,berada dalam direktori yang berbeda dengan kelas kelas yang digunakan, sehingga pada awal source code di kelas yang menggunakan harus mencantumkan:

import namaPackage.NamaKelas; atau
import namaPackage.*;

Contoh :

import java.text.DecimalFormat;
import javaxc.swing.*;

Sumber : yaitumacam
               agungimam
               arraydalamprogram
               wikipedia.




Komentar