Anda di halaman 1dari 6

P e m r o g r a m a n B e r o r i e n t a s i O b j e k I I | 89

BAB VI
PEMROGRAMAN BERORIENTASI OBJEK II
Tujuan :
Memperkenalkan dan memberi pemahaman tentang inheritance,
polimorfisme, exception handling, dan multithreading.
Mengetahui penggunaan inheritance, polimorfisme, dan exception handling.

6.1 Inheritance
Inheritance (Pewarisan) adalah hubungan dua buah kelas atau lebih yang
memiliki atribut dan metode yang sama dengan kelas lainnya beserta atribut dan
metode yang merupakan tambahan dan menjadi sifat khusus kelas yang menjadi
kelas turunannya. Kelas yang mewariskan sifat disebut kelas orang tua (superclass),
sedangkan dan kelas turunannya ialah (subclass). Kelas anak dicirikan dengan syntax
extends.


Gambar 6.1.a. Ilustrasi kelas pewarisan secara hirarki










Gambar 6.1.b. Ilustrasi kelas pewarisan

Contoh sama latihannya masih bingung kak..
Subclass

Superclass

Sifat-sifat turunan

Kelas Mahasiswa
Nama
Alamat
No_ktp
No_telepon
Nomor_induk
Jabatan
Departemen

Kelas Manusia
Nama
Alamat
No_ktp
No_telepon

Diturunkan

Kelas Manusia
Kelas Mahasiswa
90 | P e m r o g r a m a n B e r o r i e n t a s i O b j e k I I


6.2 Polimorfisme
Pada pemrograman berorientasi objek, polimorfisme merupakan konsep yang
menyatakan bahwa sesuatu yang sama dapat memiliki berbagai bentuk dan perilaku
yang berbeda. Polimorfisme mempunyai arti bahwa operasi yang sama mungkin
mempunyai perbedaan dalam kelas yang berbeda. Misalnya beberapa metode yang
memiliki nama yang sama diizinkan berada di dalam sebuah kelas atau berada dalam
kelas turunannya asalkan memiliki identitas yang tidak sama persis, seperti berbeda
parameter masukan metode atau berbeda nama kelas (pada kelas anak). Polimerfisme
dapat berupa overloading dan Overriding.

6.2.1 Overloading
Overloading merupakan bentuk polimorfisme yang berbentuk beberapa
metode yang dapat memiliki nama yang sama dengan isi dan parameter yang berbeda
di dalam sebuah kelas. Berikut contoh source codenya:
class matematika {
public double luas(int alas,int tinggi) {
return (0.5 * alas) * tinggi; }
public double luas(int panjang,double lebar) {
return panjang*lebar;}}

public class luasbangunan {
public static void main(String[] args) { //luas segitiga
matematika z = new matematika();
System.out.println(z.luas(8, 10)); //luas persegi panjang
System.out.println(z.luas(8,10.0)); }
}
Program 6.3. Overloading
Dari source code diatas dapat diketahui bahwa terdapat 2 method yang sama-
sama memiliki nama luas. namun pada setiap method tersebut memiliki parameter
yang berbeda. Pada method yang pertama, terdapat parameter yang sama bertipe
integer (INT), namun pada method yang kedua, terdapat parameter int dan double.

6.2.2 Overriding
Overriding merupakan polimorfisme yang berbentuk beberapa metode pada
kelas orang tua (superclass) yang dapat ditulis ulang pada kode kelas anak (subclass)
P e m r o g r a m a n B e r o r i e n t a s i O b j e k I I | 91

dalam pewarisan (inheritance) dengan memilki nama yang sama dan memiliki isi
ataupun parameter yang dapat sama ataupun berbeda.

Contoh belum.

6.3 Exception Handling
Terdapat dua kesalahan (error) dalam pemrograman yaitu, Eksepsi
(exception) dan bug. Bug ialah kesalahan pada tahap perancangan. Eksepsi
(exception) ialah kesalahan yang terjadi saat program berjalan dan datangnya dari
lingkungan luar (bukan dari baris kode program), contoh: memori habis atau tipe
data yang dimasukan tidak sesuai. Compiler atau interpreter umunya tidak dapat
menampilkan kesalahan yang terjadi saat program dijalankan, program dapat
berhenti atau hang secara tiba-tiba. Bahasa pemrograman java memiliki pustaka
untuk menangani eksepsi atau exception handling.
Bentuk Umum Exception Handling pada Java
try { // write the statement that can generate an exceptions
}
catch(<exceptionTypen><varNamen>) {
//write the action your program will do if an exception occurred
}
finally{ //add more cleanup code here
}

Gambar 6.3. Ilustrasi Proses Exception Handling
Penanganan Exceptions
Execute try block Find catch block to execute
Execute catch block
for exception1
Execute catch block
for exception2
Execute catch block
for exceptionn
Execute finally block
exception
exception1 exception2 exceptionn
92 | P e m r o g r a m a n B e r o r i e n t a s i O b j e k I I

1. Untuk menangani exceptions di Java digunakan blok try-catch, atau try-
catch-finally
2. Statement program yang memungkinkan terjadinya eksepsi harus diletakkan
dalam blok try.
3. Blok catch digunakan untuk memberi umpan balik pada error yang
ditangkap.

6.4 Multithreading
Pada saat Anda menggunakan sebuah program dalam sebuah PC ataupun
Device lain maka Anda dapat menjalankan program secara serentak (Concurrency).
Contohnya mudahnya pada saat Anda mendengarkan musik menggunakan media
player, Anda dapat juga bermain game, mengetik ataupun hal yang lainnya. Jika
dalam contoh yang lebih kecilnya lagi seperti dalam aplikasi chatting. Anda dapat
melakukan obrolan dalam aplikasi chatting dengan seseorang namun di sisi lain
aplikasi tersebut dapat memberitahu melalui suara ataupun cara lain bahwa ada pesan
dari orang lain yang masuk. Aplikasi tersebut telah melakukan dua pekerjaan
sekaligus. Pertama, pekerjaan untuk melakukan obrolan. Lalu pekerjaan keduanya
menerima pesan dari orang lain.
Setiap pekerjaan atau perintah yang dilakukan dalam aplikasi tersebut disebut
dengan Thread. Thread ini dibutuhkan program agar setiap perintah berjalan,
melakukan jeda, atau berhenti sesuai dengan fungsinya masing-masing yang telah
dibuat oleh si pembuat program. Dengan kata lain thread merupakan unit terkecil
dari eksekusi suatu program yang memiliki fungsi tersendiri. Adapun proses
menjalankan thread secara bersamaan seperti yang dilakukan aplikasi chatting
tersebut disebut Multitrheading.
Keuntungan dari sistem yang menerapkan multithreading dapat Anda
kategorikan menjadi 4 bagian:
a. Responsif. Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari
program sedang diblok atau melakukan operasi lain yang panjang.
Umpamanya, sebuah thread dari web browser dapat melayani permintaan
pengguna sementara thread yang lain berusaha menampilkan gambar.
b. Berbagi sumber daya. Beberapa thread yang melakukan proses yang sama
akan berbagi sumber daya. Keuntungannya adalah mengizinkan sebuah
P e m r o g r a m a n B e r o r i e n t a s i O b j e k I I | 93

aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi
memori yang sama.
c. Ekonomis. Pembuatan sebuah proses memerlukan pengalokasian memori
dan sumber daya. Alternatifnya adalah dengan menggunakan thread, karena
thread membagi memori dan sumber daya yang dimilikinya sehingga lebih
ekonomis untuk membuat thread dan context switching thread. Akan sulit
mengukur perbedaan waktu antara thread dan switch, tetapi secara umum
pembuatan dan pengaturan proses akan memakan waktu lebih lama
dibandingkan dengan thread. Pada Solaris, pembuatan proses memakan
waktu 30 kali lebih lama dibandingkan pembuatan thread sedangkan proses
context switch 5 kali lebih lama dibandingkan context switching thread.
d. Utilisasi arsitektur multiproesor. Keuntungan dari multithreading dapat
sangat meningkat pada arsitektur multiprosesor, dimana setiap thread dapat
berjalan secara paralel di atas prosesor yang berbeda. Pada arsitektur
processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi
hal ini berlangsung sangat cepat sehingga menciptakan ilusi paralel, tetapi
pada kenyataanya hanya satu thread yang dijalankan CPU pada satu-satuan
waktu.

6.4.1. Jenis Pembuatan Thread
Pada pembuatan Thread Java, terdapat berbagai cara yang dapat digunakan.
Cara yang lazim digunakan adalah dengan meng-extends class yang ingin kita
jadikan thread dengan kelas Thread. Selain dengan cara meng-extends class itu,
terdapat pula cara lain dalam menjadikan sebuah kelas menjadi Thread, yaitu dengan
cara meng-implements Interface Runnable. Jika kita membuat class kita dengan salah
satu cara di atas, maka class tersebut harus menulis ulang method run() dari kelas
tersebut, karena mengikuti hukum pewarisan kelas.
Perbedaan dari meng-extends Thread class dan meng-implements Interface
Runnable adalah pada hukum pewarisannya. Di java, suatu class hanya dapat meng-
extends satu kelas saja (pewarisan tunggal). Jika kelas yang ingin kita jadikan thread
harus mewarisi (meng-extends) sebuah kelas, maka kita tidak dapat meng-extends
class tersebut dengan kelasThread lagi. Maka tersedia cara lainnya, yaitu dengan
meng-implements Interface Runnable. Sehingga dapat disimpulkan di sini, yaitu
94 | P e m r o g r a m a n B e r o r i e n t a s i O b j e k I I

untuk mendapatkan pewarisan jamak, maka kita dapat menggunakan Interface
Runnable.
Cara umum Membuat Threads pada Java
1. Tentukan pekerjaan atau hal yang akan dikerjakan oleh Thread
2. Masukkan source code pekerjaan ke dalam runmethod
3. Buat sebuah kelas lain untuk menjalankan Thread
Aplikasi untuk Multithreading masih bingung
Output dari program ini akan berbeda setiap kali dijalankan seperti contoh
diatas, karena penjadwalan thread tidak dapat ditentukan dengan pasti (non-
deterministik). Bahkan, Anda bisa melihat perbedaan yang sangat jelas ketika Anda
menggunakan versi JDK yang berbeda. Misalnya, JDK lama tidak melakukan
pembagian waktu lebih cepat, artinya, 1 thread mungkin bisa melakukan tugasnya
dengan cepat hingga selesai sebelum thread lain dijalankan. Pada JDK lain Anda
akan melihat program akan mencetak sesuai urutanthreadyang telah dibuat. Artinya
pembagian waktunya lebih baik, karena setiap thread memiliki kesempatan yang
sama untuk menjalankan program. Karenanya, untuk membuat suatu program multi-
threading, Anda tidak boleh terpaku pada keluaran suatu compiler.
Adapun method yang digunakan dalam penggunaan Thread sangatlah banyak
tidak hanya method run ( ) dan method start ( ). Salah satu method lain yang sering
digunakan adalah method sleep ( ). Method tersebut digunakan untuk men-delay
atau menghentikan eksekusi suatu thread sementara selama (paling sedikit) waktu
yang sudah disetting sebelumnya dalam hitungan milidetik. Penggunaan method ini
harus diletakkan dalam exception handling. Ada dua cara untuk menyimpan
exception handling-nya, berikut penyimpanan source code-nya:
Tabel 6.1. Cara penggunaan dan penyimpanan method sleep( )
Pada run method Pada main method
public void run() {
. . . // Perintah untuk Thread
try {
Thread.sleep(long millionsecond);
} catch (InterruptedException e) {
Throw new RuntimeException(e);
}
}
public class ThreadvsRunnable {
public static void main(String args[])
throws Exception {
. . . // Pengobjekan variabel Thread dan
pemanggilan method start()
Thread.sleep(long millionsecond);
}
}

Anda mungkin juga menyukai