Professional Documents
Culture Documents
Modul Pbo II
Modul Pbo II
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.
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.
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
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)
TestStatic.java
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.
TestFinal.java
Jika program dipaksa dijalankan, maka akan muncul error seperti ini:
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)
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.
Hewan
penglihatan
pendengaran
penciuman
Makan
Bergerak
Bernafas
Mamalia Unggas
Rambut Sayap
Paruh
Menyusui Bertelur
Taring
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:
Hewan.java
Mamalia.java
Unggas.java
TestHewan.java
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.
Balok.java
Kucing.java
Pinguin.java
TestHewan.java
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.
Pegawai.java
TestWarisTingkat.java
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?
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
TestOrang.java
Makanan.java
Cemilan.java
Gudeg.java
TestMakan.java
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
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:
Senjata.java
Basoka.java
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:
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.
Sepeda.java
TestKendaraan.java
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.
MobilTempur.java
TestKendaraan.java
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,
MuaiThai.java
TonyJaa.java
TestTony.java
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
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