Sabtu, 07 Januari 2017

ENCAPSULATION, INHERITANCE POLIMORPHISME, DAN PACKAGE SERTA CONTOH LISTING PROGRAM

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

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.
Berikut ini merupakan contoh listing Programnya:
Contoh program enkapsulasi tersebut, saya buat menjadi program menu dengan beberapa pilihan. Pilihannya ada hitung data dan biodata.
Pada program tersebut saya membungkus detail dari 2 pilihan yang terdapat di menu menjadi 2 class, yaitu class hitung, dan class biodata. Saat user mengakses program tidak akan dipusingkan dengan implementasi kedua data yang ada di pilihan menu tersebut karena program sudah dibuat sedemikian rupa, sehingga saat user mengakses programnya, si program tinggal memanggil nama dari class-nya saja yang sesuai dengan pilihan menu yang dipilih nanti.
Saya buat seperti itu karena mengingat salah satu dasar dari enkapsulasi itu sendiri yaitu information hiding, yang bermaksud menyembunyikan setiap elemen yang digunakan.
listing-enkapsulasi-1listing-enkapsulasi-2
Contoh program enkapsulasi tersebut, saya buat menjadi program menu dengan beberapa pilihan. Pilihannya ada hitung data dan biodata.
Pada program tersebut saya membungkus detail dari 2 pilihan yang terdapat di menu menjadi 2 class, yaitu class hitung, dan class biodata. Saat user mengakses program tidak akan dipusingkan dengan implementasi kedua data yang ada di pilihan menu tersebut karena program sudah dibuat sedemikian rupa, sehingga saat user mengakses programnya, si program tinggal memanggil nama dari class-nya saja yang sesuai dengan pilihan menu yang dipilih nanti.
Saya buat seperti itu karena mengingat salah satu dasar dari enkapsulasi itu sendiri yaitu information hiding, yang bermaksud menyembunyikan setiap elemen yang digunakan.
untuk lebih jelasnya sekarang kita lihat output dari contoh program enkapsulasi tersebut…
listing-enkapsulasi-3listing-enkapsulasi-harusnya-4listing-enkapsulasi-4listing-enkapsulasi-5listing-enkapsulasi-6listing-enkapsulasi-7listing-enkapsulasi-8listing-enkapsulasi-9
Jadi inti dari enkapsulasi sendiri yaitu kita tidak perlu mengetahui apa yang ada di dalam object (class) itu, tapi yang kita butuhkan hanyalah cara memakainya dan apa yang akan dihasilkan dari program tersebut.

B. INHERITANCE (PEWARISAN)

Inheritance adalah pewarisan. Pewarisan dalam pemrograman berorientasi objek, Inheritance memungkinkan suatu Class bisa mewariskan atribut dan Method kepada Class yang lainnya atau subClass, sehingga membentuk Class hirarki. Inheritance sangat mirip dengan hubungan orang tua dengan anak. Manakala suatu kelas menerima warisan dari semua anggota data dan fungsi menerima warisan, walaupun tidak semua di antara mereka dapat diakses oleh anggota fungsi dari kelas.
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.
Semua class dalam Java, termasuk class yang membangun Java API, merupakan subclass dari superclass Object.

# Superclass adalah class induk atau class orang tua, class yang letaknya di atas class tertentu di dalam hierarki.

# Subclass adalah class anak. Semua property, methode, ataupun konstruktor yang dimiliki oleh superclass jika  diwariskan, maka subclass memiliki semua yang dimiliki oleh superclass.

ini merupakan contoh listing Programnya:

listing-inheritance-1listing-inheritance-2
Keuntungan penggunaan Inheritance dalam OOP : Reusability
Ketika behavior(method) dideklarasikan dalam superclass, behavior tersebut otomatis diwariskan ke seluruh subclass
Jadi, Anda dapat meng-enkode method hanya sekali dan method tersebut dapat digunakan oleh seluruh subclass
Sebuah subclass hanya perlu mengimplementasikan perbedaan antara dirinya sendiri dan parent-nya.

C. POLIMORPHISME

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.

ini merupakan contoh listing Programnya:

listing-inheritance-3
listing-inheritance-4
listing-inheritance-5

D. PACKAGE (Paket)

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 package yaitu:

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 diletakkan pada bagian paling awal (sebelum deklarasi import) dari source code setiap kelas yang dibungkus package tersebut.
-Bentuk umum deklarasi package :
package namaPackage;
Deklarasi tersebut akan memberitahukan kompilator, ke library manakah suatu kelas dikompilasi dan dirujuk.
-Syarat nama package :
  1.      Diawali huruf kecil
  2.      Menggambarkan kelas-kelas yang dibungkusnya
  3.      Harus unik (berbeda dengan nama package standard)
  4.      Merepresentasikan path dari package tersebut.
  5.      Harus sama dengan nama direktorinya.

Contoh package standard :
java.lang (berisi kelas-kelas fundamental yang sering digunakan).
java.awt dan javax.swing (berisi kelas-kelas untuk membangun aplikasi GUI)
java.io (berisi kelas-kelas untuk proses input output).

  §    Membuat Struktur Direktori

Pada langkah ini, buatlah direktori menggunakan file manager (di windows menggunakan explorer) sesuai struktur package dari langkah sebelumnya. Kemudian tempatkan kelas-kelas tersebut ke direktori yang bersesuaian (mirip seperti  menyimpan file-file ke dalam folder).
Package dapat bersarang di package lain, sehingga dapat dibuat hirarki package.
Bentuk umum pernyataan package multilevel :
package namaPackage1[.namaPackage2[.namaPackage3]];
Contoh hirarki package di JDK :
package java.awt.image;

  §   Compile dan Run Kelas dari suatu Package

Selanjutnya masing-masing kelas tersebut dalam package tersebut dikompilasi menjadi byte code (*.class). Artinya package tersebut siap digunakan.
   §   Menggunakan Package

-Ada dua cara menggunakan suatu package yaitu :
  1. Kelas yang menggunakan berada dalam direktori (package) yang sama dengan kelas-kelas yang digunakan. Maka tidak diperlukan import.
 2. Kelas yang menggunakan berada dalam direktori (package) yang berbeda dengan kelas-kelas yang digunakan. Maka pada awal source code di kelas pengguna harus mencantumkan :

import namaPackage.NamaKelas;  atau
import namaPackage.*;

Contoh :
import java.text.DecimalFormat;
import javax.swing.*;
  §   Setting Classpath
Path hirarki package, didaftarkan sebagai salah satu nilai variabel lingkungan yang bernama Classpath.
Classpath diset dengan aturan : berawal dari drive (C:\ atau D:\) sampai dengan satu tingkat sebelum kita mendeklarasikan package.
mohon maaf bila ada kekurangannya terimakasih.
Referensi yang saya dapatkan dibawah ini:

https://id.wikipedia.org/wiki/Enkapsulasi_(komputer)


Tidak ada komentar:

Posting Komentar