ENCAPSULATION, INHERITANCE, POLYMORPHISM dan UML - CLASS DIAGRAM
ENCAPSULATION
Enkapsulasi adalah sebuah peroses pemaketan / penyatu
data bersama metode – metodenya, dimana hal ini bermanfaat untuk menyembunyikan
rincian – rincian implementasi dari pemakai. Maksud dari enkampsulasi ini
adalah 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 Java enkapsulasi dapat dilakukukan dengan
pembentukan kelas – kelas, menggunakan keyword class
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.
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 :
·
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.
·
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
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
|
INHERITANCE
Inheritance atau Pewarisan/Penurunan adalah konsep
pemrograman dimana sebuah class dapat ‘menurunkan’ property dan method yang dimilikinya
kepada class lain. Konsep inheritance digunakan untuk memanfaatkan fitur ‘code
reuse’ untuk menghindari duplikasi kode program.
Konsep
inheritance membuat sebuah struktur atau ‘hierarchy’ class dalam kode program.
Class yang akan ‘diturunkan’ bisa disebut sebagai class induk (parent class),
super class, atau base class. Sedangkan class yang ‘menerima penurunan’ bisa
disebut sebagai class anak (child class), sub class, derived class atauheir
class.
Tidak semua property dan
method dari class induk akan diturunkan. Property dan method dengan hak akses
private, tidak akan diturunkan kepada class anak. Hanya property dan method
dengan hak akses protected dan public saja yang
bisa diakses dari class anak.
Suatu class yang mempunyai class turunan dinamakan
parent class atau base class. Sedangkan class turunan itu sendiri seringkali
disebut subclass atau child class. Suatu subclass dapat mewarisi apa-apa yang
dipunyai oleh parent class.
Karena suatu subclass dapat mewarisi apa apa yang
dipunyai oleh parent class-nya, maka member dari suatu subclass adalah terdiri
dari apa-apa yang ia punyai dan juga apa-apa yang ia warisi dari class
parent-nya.
Kesimpulannya, boleh dikatakan bahwa suatu subclass
adalah tidak lain hanya memperluas (extend) parent class-nya.
Dari hirarki diatas dapat dilihat bahwa, semakin
kebawah, class akan semakin bersifat spesifik. Class mamalia memiliki seluruh
sifat yang dimiliki oleh binatang, demikian halnya juga macan , kucing, Paus
dan Monyet memiliki seluruh sifat yang diturunkan dari class mamalia.
Dengan konsep ini, karakteristik yang dimiliki oleh
class binatang cukup didefinisikan didefinisikan dalam class binatang saja.
Class mamalia tidak perlu mendefinisikan ulang apa
yang telah dimiliki oleh class binatang, karena sebagai class turunannya, ia
akan mendapatkan karakteristik dari class binatang secara otomatis. Demikian
juga dengan class macan, kucing, Paus dan monyet, hanya perlu mendefinisikan
karakteristik yang spesifik dimiliki oleh class-nya masing-masing.
Dengan memanfaatkan konsep pewarisan ini dalam
pemrograman, maka hanya perlu mendefinisikan karakteristik yang lebih umum akan
didapatkan dari class darimana ia diturunkan.
KEUNTUNGAN
INHERITANCE
1. 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.
2. Programmer
Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut
abstract class, untuk mendefinisikan class dengan behaviour dan state secara
umum.
ISTILAH
INHERITANCE
·
Extends
Keyword
ini harus kita tambahkan pada definisi class yang menjadi subclass.
·
Superclass Superclass digunakan untuk menunjukkan hirarki
class yang berarti class dasar dari subclass/class anak.
·
Subclass Subclass adalah class anak atau turunan secara
hirarki dari superclass.
·
Super Keyword ini digunakan untuk memanggil konstruktor dari
superclass atau menjadi variabel yang mengacu pada superclass.
·
Methode Overriding Pendefinisian ulang method yang sama pada
subclass
Dalam
inheritance, method overriding berbeda dengan method overloading. Kalau method
overriding adalah mendefinisikan kembali method yang sama, baik nama method
maupun signature atau parameter yang diperlukan dalam subclass, kalau method
overloading adalah mendefinisikan method yang memiliki nama yang sama, tetapi
dengan signature yang berbeda dalam definisi class yang sama.
Kita baru perlu menerapkan inheritance pada saat
kita jumpai ada suatu class
yang
dapat diperluas dari class lain.
Misal
terdapat class Pegawai public class Pegawai { public String nama; public double
gaji; } Misal terdapat class Manager public class Manajer { public String nama;
public double gaji; public String departemen; }
Dari 2 buah class diatas, kita lihat class Manajer
mempunyai data member yang identik sama dengan class Pegawai, hanya saja ada
tambahan data member departemen.
Sebenarnya
yang terjadi disana adalah class Manajer merupakan perluasan dari class Pegawai
dengan tambahan data member departemen.
Disini perlu memakai konsep inheritance, sehingga class Manajer
dapat kita tuliskan seperti berikut :
-
public class Manajer extends
Pegawai { public String departemen; }
Contoh
Program Inheritance
Setelah memahami konsep inheritance, sekarang mari
kita buat contoh program sederhana. Program yang akan kita buat untuk berfungsi
untuk menghitung luas dan keliling bangun datar.
Bentuk
class diagramnya seperti ini:

Baik,
mari kita buat semua class-class-nya.
Buka Netbeans, pada Porject yang kemarin, buatlah package
baru bernama inheritance di dalam Source Packages.

Isi
nama package dengan inheritance.

Berikutnya
buatlah class-class baru berdasarkan diagram di atas.
package inheritance;
public class BangunDatar {
float
luas(){
System.out.println("Menghitung
laus bangun datar");
return 0;
}
float
keliling(){
System.out.println("Menghitung keliling bangun datar");
return 0;
}
}
|
Polymorphism
Polymorphism
berasal dari bahasa Yunani yang berarti banyak bentuk. Dalam PBO, konsep ini
memungkinkan digunakannya suatu interface yang sama untuk memerintah objek agar
melakukan aksi atau tindakan yang mungkin secara prinsip sama namun secara
proses berbeda.
Polymorphism merupakan salah satu konsep penting
dalam object oriented programming (OOP) khususnya di bahasa pemrograman Java
setelah abstraction dan inheritance. Polymorphism berarti banyak bentuk. Ada
beberapa definisi berbeda tentang polymorphism yang berkaitan dengan
pemrograman berorientasi obyek. Sedangkan apa yang dimaksud dengan polymorphism
sendiri, sebenarnya sulit untuk didefinisikan. Sejalan dengan contoh yang
diberikan, Anda diharapkan dapat mengerti dan memahami konsep polymorphism itu
sendiri.
Polymorphism sering dikaitkan dengan penggunaan
lebih dari satu metoda dengan nama sama. Penggunaan metoda dengan nama sama
dapat diterapkan dengan method overloading dan method overriding. Peran
polymorphism sebenarnya tidak terbatas hanya pada hal tersebut. Ada keterkaitan
antara polymorphism dan inheritance (turunan).
Dalam konsep turunan, saat obyek dari subclass
dikonstruksi, obyek dari superclass juga ikut dikonstruksi. Jadi setiap
instance dari subclass adalah juga instance dari superclass. Apabila Anda mendeklarasikan
metoda dengan parameter dari tipe superclass, Anda diperbolehkan untuk memberi
argumen berupa obyek subclass yang merupakan turunan dari superclass tersebut.
Polymorphism adalah suatu object dapat memiliki
berbagai bentuk, sebagai object dari class sendiri atau object dari
superclassnya.
Overloading: Penggunaan satu nama untuk beberapa
method yang berbeda (beda parameter)
Overriding: terjadi ketika deklarasi method subclass
dengan nama dan parameter yang sama dengan method dari superclassnya.
Keuntungan pemograman dengan menggunakan
Polymorphism, yaitu :
-
Dapat menggunakan
kelas-kelas yang kita buat (sebagai super kelas) dan membuat kelas kelas baru
berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari
behaviour umum yang dimiliki superkelas.
-
Dapat membuat super
kelas yang hanya mendefinisikan behaviuor namun tidak memberikan
implementasidari metode-metode yang ada.Hal ini berguna jika ingin membuat
template kelas, kelas ini disebut kelas abstrak karena behaviournya masih abstrak
dan belum diimplementasikan. Subkelas-subkelas dari kelas ini yang disebut
kelas konkret, mengimplementasikan behaviuor abstrak tersebut sesuai dengan
kebutuhan masing-masing.
Menghindari duplikasi object, yang dapat menciptakan
class baru dari class yang sudah ada, sehingga tidak perlu menuliskan code dari
nol ataupun mengulangnya, namun tetap bisa menambahkan attribute dan atau
method unik dari class itu sendiri. Dalam konsep yang lebih umum sering kali
polymorphism disebut dalam istilah satu interface banyak aksi.
Polymorphism dapat berarti banyak bentuk, maksudnya
yaitu dapat menimpa (override), suatu method, yang berasal dari parent class
(super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan
yang berbeda.
Pada
dasarnya ada 2 tipe polymorphism, yaitu :
Static atau trivialmerupakan, function overloading
(penggunaan kembali nama fungi yang sama tapi dengan argumen yang berbeda) yang
terbagi dalam 3 signature yaitu:
-
Jenis Array
-
Letak Array
-
Type Array
Contoh function overloading :
Void tambah (int a, int b);
Void tambag (float d, float c);
Dynamic atau trueMerupakan function overriding
(sebuah fungsi dalam class turunan yang memiliki nama, return type argumen
function yang sama dengan fungsi dalam class induk). Menggunakan virtual method.
Pure virtual method (tanpa function body)
Contoh : virtual void jalan() = 0;
Squasi virtual method (ada function body)
Contoh : virtual void info() {;}
Berikut ini adalah contoh program yang dapat
memberikan gambaran terkait konsep polymorphism. Perlu dipahami dan dimengerti
bahwa kelas Object merupakan akar dari semua kelas Java dan menduduki puncak
tertinggi dalam hirarkhi kelas. Program akan mendefinisikan kelas yang
berkaitan dengan bidang datar secara sederhana termasuk beberapa kelas turunannya
(kelas PersegiPanjang dan Balok) dan membatasi hanya pada penerapan method
overriding.
// Nama file :
Polimorphism.java
// Contoh penerapan
konsep polimorphism
public class
Polimorphism {
public static void main(String[ ] args) {
cetakObyek(new Balok());
cetakObyek(new PersegiPanjang());
cetakObyek(new BangunDatar());
cetakObyek(new Object());
}
public static void cetakObyek(Object
obyek) {
System.out.println(obyek);
}
} // Akhir kelas
Polimorphism
class Balok extends
PersegiPanjang {
public String toString() {
return "Mempunyai sisi panjang,
lebar dan tinggi";
}
}
class PersegiPanjang
extends BangunDatar {
public String toString() {
return "Mempunyai sisi panjang dan
lebar";
}
}
class BangunDatar
extends Object {
public String toString() {
return "Mempunyai berbagai
bentuk";
}
}
|
Output :

Baris nomor 14 -16 adalah deklarasi metoda cetakObyek yang mempunyai
satu parameter dengan tipe kelas Object. Kelas Object merupakan akar dari semua
kelas di Java. Langsung maupun tidak langsung, semua kelas di Java merupakan
turunan dari kelas Object. Anda dapat memanggil atau menggunakan metoda
cetakObyek dengan argumen berupa obyek yang dibuat dari kelas turunan
superclass Object.
Ketika
metoda cetakObyek dipanggil (baris nomor 8 – 11), argumen obyek akan diminta.
obyek yang berfungsi sebagai argumen metoda dapat berupa obyek yang merupakan
kelas turunan dari kelas Object yaitu kelas BangunDatar, kelas PersegiPanjang
maupun kelas Balok. Masing-masing kelas turunan mendeklarasikan ulang metoda
toString yang mempunyai implementasi berbeda. Java Virtual Machine (JVM) akan
menentukan secara dinamis implementasi metode toString yang digunakan saat
program dijalankan. Kemampuan menentukan secara dinamis ini disebut dengan
dynamic binding.
Dari gambaran program di atas, apabila argumen parameter sebuah metoda
adalah tipe superclass, maka argumen metoda yang diberikan dapat berupa tipe
dari subclass-nya. Kemampuan seperti inilah yang dimaksud dengan polymorphism.
Dari gambaran tersebut, dapat didefinisikan kembali bahwa polymorphism adalah
kemampuan untuk menghasilkan sesuatu yang berbeda dengan cara yang sama.
Pemberian obyek dari subclass ke obyek dari superclass dapat dilakukan tanpa
perlu melakukan konversi.
Class
Diagram
Class diagram adalah diagam yang digunakan untuk menampilkan beberapa
kelas serta paket-paket yang ada dalam sistem/perangkat lunak yang sedang kita
gunakan.
Class diagram memberi kita gambaran (diagram statis) tentang
sistem/perangkat lunak dan relas-relasi yang ada didalamnya.
Definisi Class DiagramClass
adalah kumpulan objek-objek dengan dan yang mempunyai struktur umum, behavior
umum, relasi umum, dan semantic/kata yang umum. Class-class
ditentukan/ditemukan dengan cara memeriksa objek-objek dalam sequence diagram
dan collaboration diagram. Sebuah class digambarkan seperti sebuah bujur
sangkar dengan tiga bagian ruangan. Class sebaiknya diberi nama menggunakan
kata benda sesuai dengan domain/bagian/kelompoknya (Whitten L. Jeffery et al,
2004).
Class Diagram adalah diagram
yang menunjukan class-class yang ada dari sebuah sistem dan hubungannya secara
logika. Class diagram menggambarkan struktur statis dari sebuah sistem. Karena
itu class diagram merupakan tulang punggung atau kekuatan dasar dari hampir
setiap metode berorientasi objek termasuk UML (Henderi, 2008). Sementara
menurut (Whitten L. Jeffery et al 2004:432) class diagram adalah gambar grafis
mengenai struktur objek statis dari suatu sistem, menunjukan class-class objek
yang menyusun sebuah sistem dan juga hubungan antara class objek tersebut.
Elemen-eleman class diagram
dalam pemodelan UML terdiri dari: Class-class, struktur class, sifat class
(class behavior), perkumpulan/gabungan (association), pengumpulan/kesatuan
(agregation), ketergantungan (dependency), relasi-relasi turunannya,
keberagaman dan indikator navigasi, dan role name (peranan/tugas nama).
Simbol-simbol class diagram
1.
Class:
Class adalah blok - blok pembangun pada pemrograman berorientasi obyek.Sebuah
class digambarkan sebagai sebuah kotak yang terbagi atas 3 bagian. Bagian atas
adalah bagian nama dari class. Bagian tengah mendefinisikan property/atribut
class. Bagian akhir mendefinisikan methodmethod dari sebuah clas.

2.
Association
: Sebuah asosiasi merupakan sebuah relationship paling umum antara 2 class dan
dilambangkan oleh sebuah garis yang menghubungkan antara 2 class. Garis ini
bisa melambangkan tipe-tipe relationship dan juga dapat menampilkan hukum-hukum
multiplisitas pada sebuah relationship.(Contoh: One-to-one,
one-to-many,many-to-many).

3.
Composition:
Jika sebuah class tidak bisa berdiri sendiri dan harus merupakan bagian dari
class yang lain, maka class tersebut memiliki relasi Composition terhadap class
tempat dia bergantung tersebut. Sebuah relationship composition digambarkan
sebagai garis dengan ujung berbentuk jajaran genjang berisi/solid.

4.
Dependency
: Kadangkala sebuah class menggunakan class yang lain. Hal ini disebut
dependency. Umumnya penggunaan dependency digunakan untuk menunjukkan operasi
pada suatu class yang menggunakan class yang lain. Sebuah dependency
dilambangkan sebagai sebuah panah bertitik-titik.

5.
Aggregation
: Aggregation mengindikasikan keseluruhan bagian relationship dan biasanya
disebut sebagai relasi.



Keterangan:
•
Class
/ table departemen memiliki ber-Agregasi dengan class / table pegawai,alasannya
karena departemen dapat berdiri sendiri tanpa ada pegawai tetapi kinerjanya
tidak sempurna. Banyak pegawai dapat bekerja pada satu departemen jadi many to
1.
•
Class/table
transaksi tidak dapat berdiri sendiri tanpa adanya class/table produk. Begitu
juga dengan table produk tidak bisa berdiri sendiri tanpa adanya departemen.
•
Banyak
pelanggan dapat melakukan banyak tansaksi
•
1
transaksi dapat mencakup banyak produk.
•
Penamaan
kelas
Masing-masing kelas harus
mempunyai nama yang unik. Sebagian besar organisasi mempunyai konvensi penamaan
sendiri untuk menamakan kelas-kelas yang dibuatnya. Umumnya kelas-kelas
dinamakan menggunakan kata benda tunggal.
Nama kelas tidak menggunkan
spasi. Ini dilakukan karena alasan praktis, dimana beberapa bahasa pemrograman
tidak membolehkan adanya spasi. Hal lainnya yang perlu diperhatikan adalah
bahwa nama kelas hendaknya pendek, cukup untuk menjelaskan apa yang akan kelas
lakukan.
Jadi penamaan kelas sangat
tergantung pada organisasi kita. Jika kita mempunyai kelas yang digunakan dalam
organisasi yang bersangkutan, tetapi yang jelas bahwa hal tersebut harus
konsisten digunakan untuk keseluruhan kelas-kelas yang dibuatnya.
-
Visibilitas
kelas
Pilihan visibilitas menentukan dapat tidaknya sebuah
kelas dilihat dari luar paket. Ada 3 pilihan visibilitas untuk sebuah kelas
yaitu :
-
Public
Menyatakan
bahwa sebuah kelas dapat dilihat dari kelas-kelas lainnya dalam system.
-
Protected
atau private
Menyatakan bahwa sebuah kelas dapat dilihat dari
kelas-kelas majemuk(nested), friends, atau dari kelas itu sendiri.
-
Package
atau implementation.
Menyatakan bahwa sebuah
kelas dapat dilihat hanya oleh kelas yang lain dalam paket yang sama.
-
Multiplicity kelas
Multiplicity memberikan gambaran ebuah instant yang
akan ditampung dalam kelas. Misalnya, dalam kelas pegawai, kita mungkin
mempunyai beberapa instant, satu untuk Ani, satu untuk Ina, satu untuk Nana dan
seterusnya. Sehingga Multiplicity untuk kelas pegawai diset n. Pada kelas
control, Multiplicity diset 1, karena pada saat aplikasi berjalan hanya satu
kelas.
KODING - 15 OKTOBER 2019
KODING - 15 OKTOBER 2019
class Kotak {
int panjang;
int lebar;
int tinggi;
//
Mendefinisikan constructor dengan parameter
Kotak(int p,
int l, int t) {
panjang =
p;
lebar = l;
tinggi =
t;
}
//Mendefinisikan perhitungan
int
hitungVolume() {
return
(panjang * lebar * tinggi);
}
}
class Ami {
public static void main(String[] args) {
Kotak k1,
k2;
k1 = new
Kotak(4, 3, 2);
k2 = new
Kotak(6, 5, 4);
System.out.println("Volume
k1 = " + k1.hitungVolume());
System.out.println("Volume k2 = " + k2.hitungVolume());
}
}
|
HASIL
Komentar
Posting Komentar