You are on page 1of 27

ENKAPSULASI(PEMBUNGKUSAN)

Sebuh class terdiri dari data variabel (property) yang menyimpan data dan method yang menangani
logika operasi pada data. Property dan method ini ada yang dapat diinformasikan dan ada yang
disembunyikan. Menyembunyikan atau membungkus property dan method suatu objek dinamakan
Enkapsulasi. Tujuan enkapsulasi adalah menjaga data dari interfensi luar.

Bayangkan sebuah kapsul di dalam dunia nyata. Kapsul tersebut membungkus obat yang ada di
dalamnya. Ketika Anda akan meminum kapsul tersebut Anda tidak perlu tahu senyawa apa saja
penyusun kapsul tersebut. Yang perlu anda tahu adalah khasiat atau efek seamping dan aturan pakai
dari kapsul tersebut.

Contoh lain dapat kita lihat pada Objek Motor. Motor merupakan satu kesatuan dari beberapa
perangkat penyusun motor. Pengguna tidak perlu tahu cara kerja komponen mesin saat motor
dihidupkan, atau ketika pengguna menggas, atau ketika mengerem, atau berapa liter bensin yang akan
dihabiskan dalam tiap satuan jarak. Yang perlu diketahui pengguna adalah untuk menghidupkan motor,
tekan stater. Untuk mengerem motor, tekan rem depan atau belakang.

Perhatikan kode program berikut ini.

TestSegiTiga.java

Enkapsulasi membantu membuat kode lebih kuat dan membuat pelacakan bug lebih mudah. anggota
data yang dienkapsulasi dalam sebuah kelas dapat dinyatakan public, private, atau protected.
Akan tetapi, pemrograman berorientasi objek yang baik menuntut enkapsulasi yang ketat. Artinya
semua anggota data (variabel/property) dari kelas harus dinyatakan private. Jadi, kode di luar kelas
di mana data anggota dideklarasikan dapat mengaksesnya hanya melalui pemanggilan method, tidak
secara langsung. Enkapsulasi juga disebut abstraksi data (menyembunyikan data), karena data
disembunyikan dari pengguna, dan pengguna dapat mengaksesnya hanya melalui metode.

Contoh program di atas belum menggunakan enkapsulasi data. Seharusnya semua variabel (alas dan
tinggi) harus dilindungi yaitu dideklarasikan private bukan public. Berkikut adalah contoh
penggunaan enkapsulasi yang baik.

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom
MODIFIER

Modifier adalah keyword untuk menentukan akses suatu data, method dan class. Terdapat 2 macam
modifier yaitu:
- Akses modifier
- Usage modifier
- Class modifier

Akses Modifier
Akses modifier digunakan untuk menentukan akses Member (property dan method) dalam sebuah
class. Access Modifier terdiri dari 4 macam seperti yang terlihat dalam tabel berikut

Modifier Keterangan
Default(tanpa modifier) Member hanya dapat diakses dari class lain dalam package yang sama
public Member dapat diakses dari class lain pada semua package
private Member dapat diakses hanya dalam class saja, tidak bisa dari class luar
protected Member dapat diakses dari dalam class lain dalam satu package atau
dari subclassnya

Deklarasi akses Modifier


Untuk mendeklarasikan modifier gunakan nama modifier seperti yang ada dalam tabel diikuti tipe data
dan nama properti atau nama method seperti berikut ini.

Deklarasi modifier untuk properti


Modifier tipe_data nama_property;

Deklarasi modifier untuk method


Modifier tipe_data nama_method(parameter) {
.....
}

Usage Modifier
Terdapat beberapa modifier yang tidak termasuk dalam akses modifier namun dapat menentukan cara
modifikasi terhadap sebuah class atau member class. Modifier ini sebut saja sebagai usage modifier.
Adapun modifier yang termasuk dalam usage modifier seperti pada tabel berikut:

Modifier Keterangan
static Member dapat diakses tanpa harus menciptakan objek dari class.
final - Jika final dipakai dalam pendeklarasian sebuah property, maka propery
tersebut dianggap sebagai sebuah konstanta.
Jika final dipakai pada sebuah method, maka method tersebut tidak
dapat dioverride(diubah) pada class turunannya (subclass).
abstract Method harus didefinisikan pada class turunannya (subclass)

Pada contoh di bawah ini adalah penggunaan dari modifier static.

TestStatic.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Hasil eksekusi program seperti gambar berikut:

Jika member class menggunakan modifier static, maka member tersebut akan menjadi milik dari class
bukan objek/instance dari class. Perhatikan varStatic pada program di atas. Karena dideklarasikan
static, maka setiap diciptakan objek baru dari class tersebut nilainya akan bertambah satu nilai.
Sehingga ketika tiga buah objek diciptakan maka nilainya menjadi 3. Jadi, perubahan pada variabel
static akan berpengaruh pada semua instance/objek. Beda halnya dengan varBiasa yang
dideklarasikan bukan static. Nilainya akan bertambah satu ketika objek diciptakan. Namun ketika
objek lain dibuat nilai varBiasa bernilai 1. hal ini dikarenakan varBiasa hanya berlaku untuk
instance/objek tertentu.

Berikut adalah contoh penggunaan modifier final.

TestFinal.java

Jika program dipaksa dijalankan, maka akan muncul error seperti ini:

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Hal ini dikarenakan variabel varFinal dideklarasikan final, sehingga nilai dari varFinal tidak
dapat berubah.

Class Modifier
Modifier ini digunakan untuk menentukan akses terhadap member dalam sebuah class. Ada 4 modifier
dalam java, yaitu private, public, protected dan tanpa modifier (default).

Modifier Keterangan
Default (tanpa modifier) Class dapat diakses dari class lain dalam package yang sama
public Class dapat digunakan oleh class lain dalam package yang sama atau
package yang berbeda.
abstract Class tidak dapat dibuat objeknya, namun harus diimplementasikan
dalam class lain
final Class tidak dapat diturunkan (extends)

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


INHERITANCE (PEWARISAN)

Kita dapat membuat class lain dari class yang telah ada sebelumnya. Pembuatan class baru ini akan
mewarisi sifat-sifat (propery dan method) dari class induknya. Inilah yang dinamakan dengan
Pewarisan (Inheritance). Class baru yang mewarisi sifat-sifat class sebelumnya dinakaman subclass.
Sedangkan class yang mewariskan sifat-sifatnya dinamakan superclass. Class yang baru (subclass)
selain memiliki sifat-sifat dari induknya (superclass) juga dapat memiliki sifat lain yang menunjukan
kekhasan dirinya.

Sebagai Contoh perhatikan gambar berikut:

Hewan

penglihatan
pendengaran
penciuman

Makan
Bergerak
Bernafas

Mamalia Unggas

Rambut Sayap
Paruh

Menyusui Bertelur

Kucing Sapi pinguin Burung

Taring

mengeong Memamah biak menyelam terbang

Keterangan:
Pada gambar di atas Class hewan diturunkan pada Mamalia dan unggas. Ini berarti, baik Class
Unggas dan Class Mamalia akan mewarisi apa yang dimiliki Class Hewan yaitu berupa mata dan lidah
serta kemampuan makan, bergerak dan bernafas. Namun Class Mamalia memiliki sifat khusus berupa
kaki, ekor, rambut dan kemampuan menyusui. Demikian pula Class Unggas memiliki sifat khusus
selain yang diturunkan dari Class hewan yaitu memiliki sayap dan kemampuan bertelur. Demikian
pula Class kucing dan sapi merupakan subclass dari Mamalia, maka kedua class ini akan mewarisi
apa yang dimiliki class mamalia, namun kucing memiliki kemapuan khusus yaitu mengeong, begitu
halnya class sapi memiliki sifat khusus yang tidak dimiliki class kucing yaitu kemampuan memamah
biak. Class pinguin dan burung merupakan subclass dari unggas. Sehingga memiliki sifat dan
kemampuan dari class unggas, namun class pinguin mempuyai kemampuan khusus menyelam
sedangkan class burung memiliki kemapuan yang khusus berupa kemampuan terbang.

Deklarasi inherientance
Inherientance dapat dideklarasikan dengan menggunakan keyword extends diikuti dengan nama
superclassnya seperti berikut ini:

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Mari kita implementasikan konsep pewarisan pada gambar di atas ke dalam kode program berikut.

Hewan.java

Mamalia.java

Unggas.java

TestHewan.java

Jalankan Class TestHewan.java di atas. Hasilnya adalah seperti berikut:

Perhatikan bahwa Instance dari class Mamalia akan memiliki apa yang dimiliki oleh class Hewan,
selain dia juga mempunyai sifat khusus. Demikian halnya dengan instance dari class Unggas. Berikut
ini adalah contoh lain untuk penggunaan konsep pewarisan.

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


PersegiPanjang.java

Balok.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Testing.java

Jalankan program Testing.java di atas, hasilnya adalah seperti berikut ini:

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Pewarisan Bertingkat
Class hasil penurunan class lain juga dapat diturunkan lagi pada class berikutnya. Konsep ini
dinamakan pewarisan bertingkat. Perhatikan contoh program beriku

Kucing.java

Pinguin.java

Lakukan sedikit modifikasi pada class TestHewan.java seperti berikut:

TestHewan.java

Hasil eksekusi program program di atas adalah sebagai berikut:

Class Pinguin merupakan turunan dari class Unggas. Maka dia akan mewarisi apa yang dimiliki class
Unggas dan class Hewan. Demikian pula halnya dengan class kucing, karena merupakan hasil turunan
dari class Hewan dan Mamalia, maka dia akan memiliki apa yang dimiliki class Hewan dan Mamalia.
Berikut adalah contoh lain dari penerapan pewarisan berganda.

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Orang.java

Pegawai.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Menejer.java

TestWarisTingkat.java

Hasil Eksekusi program adalah seperti berikut ini:

Perhatikan keyword super pada kode program di atas (Pegawai.java, Menejer.java). Keyword super
digunakan untuk mengakses property atau method yang ada dalam class induk (superclass). Sedangkan
keyword this digunakan untuk mengakses property atau method yang dimiliki class itu sendiri.

Dapatkah konsep pewarisan berganda (multiple inheritance) kita gunakan dalam java?

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


POLIMORFISME (BANYAK BENTUK)

Polimorfisme berarti memiliki banyak bentuk. Kita dapat membuat referensi yang merupakan tipe dari
superclass ke sebuah object dari subclass. Tipe objek yang direferensikan nantinya akan menentukan
method mana di dalam hierarki class yang akan digunakan.

Mari kita lihat pada contoh mobil. Masing-masing mobil mempunyai kemampuan melaju, namun
setiap mobil akan melaju dengan caranya dan mekanismenya sendiri. Misal mobil A melaju mulus
dengan kecepatan sekian km/jam. Mobil B dapat melaju ngos-ngosan dengan kecepatan sekian
km/jam. Contoh lainnya adalah pada manusia. Setipa manusia mempunyai kemampuan makan dan
minum. Namun setiap orang akan berbeda bagaimana cara mereka melakukannya. Agar lebih jelas
mengenai konsep Polimorfisme perhatikan pada program di bawah ini.

Orang.java

OrangA.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


OrangB.java

TestOrang.java

Hasil eksekusi program adalah seperti berikut:

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Method Overriding
Method Overriding adalah pendefinisian method dalam subclass dengan nama dan jumlah parameter
yang sama dengan dengan method yang ada dalam superclass-nya. Hal ini akan menyebabkan method
yang ada dalam subclass menutupi method yang ada dalam superclass.
Pada program di atas (orang.java, oranA.java dan orangB.java), Class OrangA yang merupakan
turunan dari class Orang mendefinisikan ulang method makan, minum dan berlari padahal method-
method ini sudah ada dalam superclass Orang. Hal ini akan menyebabkan makan, minum dan lari
yang merupakan warisan dari class Orang akan diganti dengan yang ada dalam class OrangA. Berikut
ini adalah contoh lain penggunaan Method overriding.

Makanan.java

Cemilan.java

Gudeg.java

TestMakan.java

Hasil Eksekusi program seperti di bawah ini.

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


ABSTRACT CLASS

Sebuah class dikatakan abstrak jika dalam class tersebut terdapat satu atau lebih method abstrak, yaitu
method yang tidak mempunyai implementasi. Class abstrak tidak dapat dibuatkan objeknya secara
langsung tapi harus diturunkan dulu ke class lain yang tidak abstrak atau dapat dibuat objeknya dengan
sarat harus langsung mengimplementasikan method-method abstraknya pada saat mendeklarasikan
objek.

Tujuan deklarasi sebuah abstract class adalah untuk menjadi base class (class pada posisi paling atas)
dari sebuah class hierarchy. Abstract class ini akan menggariskan semua operasi-operasi umum yang
wajib diimplementasikan oleh class-class yang menjadi anggota class hierarchy tersebut

Deklarasi abstract class


Untuk mendeklarasikan abstract class gunakan modifier abstract sebelum class seperti berikut:

Abstract class memiliki operasi-operasi yang disebut abstract method. Seperti halnya saat
mendeklarasikan class abstract, untuk membuat abstract method gunakan modifier abstract sebelum
nama method seperti berikut:

Perhatikan contoh program berikut

Senjata.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Tokalev.java

Basoka.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Prajurit.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


GamePerang.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


INTERFACE

Interface merupakan sebuah koleksi dari definisi-definisi method dan konstanta tanpa adanya satu pun
perintah yang mengarah pada penggunaan kode/instruksi di dalamnya. Dengan kata lain interface
adalah class yang hanya mengandung deklarasi method tanpa memiliki implementasi.

Deklarasi Interface
Untuk mendeklarasikan interface gunakan keyword interface diikuti dengan nama interface. Seperti
berikut:

Sebagai contoh perhatikan pada contoh berikut ini:

Kendaraan.java

Senjata.java

Semua method dalam interface bersifat abstract (tidak perlu menuliskan keyword abstaract) dan
property yang dimiliki bersifat static final(bersifat konstan). Kita dapat menggunakan modifier public
atau tidak sama sekali. Jika tidak menggunakan modifier maka interface tersebut hanya dapat dikses
dalam package yang sama.

Implementasi Interface
Untuk mengimplementasikan interface gunakan keyword implements setelah nama class.

Berikut adalah contoh bagaimana mengimplementasikan sebuah interface

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Mobil.java

Sepeda.java

TestKendaraan.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Hasil eksekusi program tampak pada gambar di bawah ini:

Jika sebuah class mengimplementasikan satu atau lebih interface, maka class tersebut harus
mengimplementasikan semua method yang ada dalam interface. Jika tidak, maka class tersebut harus
dideklarasikan sebagai abstract class. Jika sebuah class akan mengimplementasikan lebih dari satu
interface maka gunakan tanda koma (,) sebagai pemisah antar interface. Ada kemungkinan pada saat
menggunakan lebih dari satu interface terdapat nama method yang sama. Dalam hal ini method yang
akan diimplementasikan adalah method yang interfacenya berada pada posisi pertama.

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Perhatikan contoh di bawah ini:

MobilTempur.java

Tambahkan beberapa baris progrm pada TestKendaraan.java seperti berikut ini:

TestKendaraan.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Pewarisan pada Interface
Seperti halnya pada class, Interface juga dapat diturunkan (extends) dari interface lain. Sebuah
interface yang meng-extends interface lain, maka ia akan mewariskan semua deklarasi method dalam
interface yang diwarisi. Perhatikan contoh berikut:

Taekwondo.java

Aikido.java

Hapkido.java

Atlet.java

TestAtlit.java

Pada program di atas, Interface Hapkido diturunkan dari interface Taekwondo dan Aikido, maka dia
akan mewarisi deklarasi method yang dimiliki kedua interface tersebut. Perhatikan pada class Atlit
yang mengimlementasikan semua method dari interface Hapkido,

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Multipel Inheritance
Sebuah class hanya boleh memiliki satu superclass saja(single inheritance). Namun sebuah class dapat
diturunkan dari satu class dan mengimplementasikan satu atau lebih interface (seolah-olah multiple
inheritance). Berikut adalah contoh multiple inheritance.

MuaiThai.java

TonyJaa.java

TestTony.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


PACKAGE

Package (paket) adalah cara untuk mengelompokan Class dan Interface yang ada dalam kelompoknya
(name space) masing-masing sehingga lebih mudah diatur. Kita dapat membuat Class atau Interface
yang memiliki fungsi yang sama ke dalam kelompok yang sama. Kita juga dapat membuat Class atau
Interface dengan nama yang sama asalkan berada dalam package yang berbeda.

Mendefinisikan package
Untuk mendefinisikan sebuah package gunakan keyword package diikuti dengan nama package pada
bagian paling atas dari kode program yang akan dibuat seperti sebagai berikut:

package nama_package

Contoh:
package bangun;

Nama package bisa dibuat secara hierarki seperti struktur direktori. Seperti contoh berikut:

package bangun.duaD;

Agar lebih memahami dalam penggunaan package, berikut ini adalah contoh lengkapnya.

Persegi.java

SegiTiga.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom


Menggunakan package
Jika kita akan menggunakan class yang package-nya berbeda, gunakan keyword import diikuti dengan
nama package pada bagian atas kode program (setelah pendefinisian package) seperti berikut ini.

import nama_package;

Kita dapat menyebutkan nama package secara lengkap yaitu nama package kemudian dilanjutkan
dengan tanda titik (.) dan diakhiri dengan nama file class atau interface tertentu. Cara lain adalah
dengan menyebutkan package dan dilanjutkan dengan tanda titik dan bintang (*) untuk menggunakan
seluruh class atau interface dalam paket tersebut.

Testing.java

Modul Praktikum Pemrograman Berorientasi Objek Eding Muh. Saprudin S.Kom

You might also like