Modul PBO PDF
Modul PBO PDF
Oleh:
Dedi Gunawan, S.T., M.Sc.
Arkham Zahri R , S.Kom., M.Eng.
PENGANTAR
Pemrograman berorientasi objek merupakan konsep pemrograman yang menggambarkan suatu proses yang terlibat di dalam program dianalogikan sebagai sebuah objek
yang saling berinteraksi satu sama lain.
Objek adalah kata kunci untuk memahami konsep pemrograman berorientasi objek
(PBO). Objek di dalam PBO sendiri diciptakan berdasarkan deskripsi dan sifat-sifat dari
Objek nyata yang ada di kehidupan nyata kita. Seperti kita ketahui bersama, di dalam
lingkungan sekitar, kita dapat dengan mudah menemukan suatu objek semisal : Mobil,
Sepeda, Kucing, atau Pohon.
Kesemua Objek riil di atas sama-sama meiliki memiliki dua hal yang melekat padanya, yaitu berupa: kondisi (state) dan perilaku (behavior). Perilaku identik dengan
kata kerja dan kondisi identik dengan kata sifat, atau kata benda dari objek yang bersangkutan. Mobil memiliki kondisi berupa warna, umur, posisi persneling, kecepatan,
dll, dan perilaku berupa injak gas, injak rem, ganti persneling, ganti warna cat, dll.
Serupa dengan mobil, Objek sepeda memiliki kondisi berupa posisi gigi, kecepatan, dll
dan perilaku berupa ganti gigi, naikan kecepatan, pengereman, dll . Sedangkan Objek
kucing memiliki kondisi berupa warna bulu, jenis, nama, dll dan perilaku berupa meong,
mencakar, dll.
Objek yang digunakan di dalam pemrograman (Software Objek) secara konsep memiliki kesamaan dengan objek riil. Objek di dalam OOP memiliki variabel (field) dan
fungsi (method). Variabel sebagai padanan dari kondisi dan fungsi sebagai padanan dari
perilaku. Gambar 2.1 di bawah ini mengambarkan secara visual suatu Software Objek
dan contoh dari Objek Sepeda yang telah dimodelkan ke dalam Software Objek. Salah
satu bahasa pemrograman yang mendukung konsep pemrograman berorientasi objek dan
yang paling banyak digunakan adalah Java. Java sendiri sebenarnya merupakan sebuah
platform dimana program-program lain yang akan dijalankan harus menggunakan fitur
dari java itu sendiri. Java memiliki arsitektur yang tidak memiliki dependencies atau
i
ii
ketergantungan terhadap sistem operasi, sehingga apapun jenis sistem operasi yang digunakan kita masih bisa menjalankan program java tanpa harus mengganti kode program
java-nya. Arsitektur dari JAVA Environment bisa dilihat pada Gambar 1.1.
Java Platform
Java platform merupakan nama plaform komputer yang diberikan oleh oracle yang
bisa membantu para pengguna dalam mengembangkan dan menjalankan aplikasi yang
berbasis java. selain itu java platform juga menyediakan berbagai perlengkapan yang
memberikan kemudahan bagi para programmer dalam membuat program sehingga pekerjaan merekan menjadi lebih efisien.
Komponen java platform
1. Java Runtime Environmental (JRE) merupakan lingkungan komputasi yang diperlukan untuk menjalankan aplikasi java dan applets.
2. JAVA Development Kit (JDK) merupakan perlengkapan yang digunakan untuk
membuat aplikasi berbasis java dan applets. ketikan kita melakukan instalasi JDK
ke dalam sistem komputer maka secara otomatis JRE juga akan terinstal.
Tools Praktikum
1. Java SDK 7 (http://www.oracle.com/technetwork/java/javase/downloads/jdk7downloads-1880260.html)
2. Eclipse IDE (http://www.eclipse.org/downloads/packages/)
3. Netbeans IDE (https://netbeans.org/downloads/)
4. DIA (http://sourceforge.net/projects/dia-installer/)
Daftar Isi
1 Pengenalan Java
2 Class dan Object
2.1 Landasan Teori . . . . . . .
2.1.1 CLASS . . . . . . .
2.1.2 Objek . . . . . . . .
2.1.3 UML Class diagram
2.2 Latihan . . . . . . . . . . .
2.3 Pekerjaan Rumah . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
iii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
5
6
7
9
10
.
.
.
.
.
.
.
.
12
12
12
13
14
15
15
16
18
.
.
.
.
.
19
20
20
20
21
21
DAFTAR ISI
4.4
iv
4.3.1 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Private Modifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.4.1 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5 Constructor
5.1 Default constructor . . .
5.1.1 Latihan . . . . . .
5.2 Parameterized constructor
5.2.1 Latihan . . . . . .
5.3 Overloading constructor .
5.3.1 Latihan . . . . . .
6 Inheritance / Pewarisan
6.1 Tipe inheritance . . . . .
6.2 Single inheritance . . . .
6.3 Multilevel Inheritance . .
6.4 Hierarchical inheritance .
6.4.1 Overriding Method
6.5 Latihan . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
23
24
24
25
25
26
.
.
.
.
.
.
27
28
29
29
30
31
32
7 Encapsulation / Enkapsulasi
33
7.1 Private modifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7.2 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
8 Polymorphism
36
8.1 Runtime Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.2 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
9 Abstract Class
9.1 Objek abstract class
9.2 Method abstract . .
9.3 Latihan . . . . . . .
9.4 Tugas . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
10 Interface
10.1 Mendeklarasikan Interface
10.2 Implementasi Interface . .
10.2.1 Percobaan . . . .
10.3 Latihan . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
40
40
42
43
43
.
.
.
.
44
44
45
46
47
DAFTAR ISI
11 Nested Class
11.1 Inner Class (Non-Static Nested Class) . . . .
11.1.1 Mengakses Private Member/Variabel
11.2 Static Nested Class . . . . . . . . . . . . .
11.3 Latihan . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
48
49
50
51
51
12 Java Swing
53
12.1 Komponen Swing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
12.2 Setting Up Top-Level Containers . . . . . . . . . . . . . . . . . . . . . 54
BAB
Pengenalan Java
Pemrograman berorientasi objek merupakan konsep pemrograman yang menggambarkan suatu proses yang terlibat di dalam program dianalogikan sebagai sebuah objek
yang saling berinteraksi satu sama lain.
Objek adalah kata kunci untuk memahami konsep pemrograman berorientasi objek
(PBO). Objek di dalam PBO sendiri diciptakan berdasarkan deskripsi dan sifat-sifat dari
Objek nyata yang ada di kehidupan nyata kita. Seperti kita ketahui bersama, di dalam
lingkungan sekitar, kita dapat dengan mudah menemukan suatu objek semisal : Mobil,
Sepeda, Kucing, atau Pohon.
Kesemua Objek riil di atas sama-sama meiliki memiliki dua hal yang melekat padanya, yaitu berupa: kondisi (state) dan perilaku (behavior). Perilaku identik dengan
kata kerja dan kondisi identik dengan kata sifat, atau kata benda dari objek yang bersangkutan. Mobil memiliki kondisi berupa warna, umur, posisi persneling, kecepatan,
dll, dan perilaku berupa injak gas, injak rem, ganti persneling, ganti warna cat, dll.
Serupa dengan mobil, Objek sepeda memiliki kondisi berupa posisi gigi, kecepatan, dll
dan perilaku berupa ganti gigi, naikan kecepatan, pengereman, dll . Sedangkan Objek
kucing memiliki kondisi berupa warna bulu, jenis, nama, dll dan perilaku berupa meong,
mencakar, dll.
Objek yang digunakan di dalam pemrograman (Software Objek) secara konsep memiliki kesamaan dengan objek riil. Objek di dalam OOP memiliki variabel (field) dan
fungsi (method). Variabel sebagai padanan dari kondisi dan fungsi sebagai padanan dari
perilaku. Gambar 2.1 di bawah ini mengambarkan secara visual suatu Software Objek
dan contoh dari Objek Sepeda yang telah dimodelkan ke dalam Software Objek. Salah
satu bahasa pemrograman yang mendukung konsep pemrograman berorientasi objek dan
yang paling banyak digunakan adalah Java. Java sendiri sebenarnya merupakan sebuah
1
platform dimana program-program lain yang akan dijalankan harus menggunakan fitur
dari java itu sendiri. Java memiliki arsitektur yang tidak memiliki dependencies atau
ketergantungan terhadap sistem operasi, sehingga apapun jenis sistem operasi yang digunakan kita masih bisa menjalankan program java tanpa harus mengganti kode program
java-nya. Arsitektur dari JAVA Environment bisa dilihat pada Gambar 1.1.
Java Platform
Java platform merupakan nama plaform komputer yang diberikan oleh oracle yang
bisa membantu para pengguna dalam mengembangkan dan menjalankan aplikasi yang
berbasis java. selain itu java platform juga menyediakan berbagai perlengkapan yang
memberikan kemudahan bagi para programmer dalam membuat program sehingga pekerjaan merekan menjadi lebih efisien.
Komponen java platform
1. Java Runtime Environmental (JRE) merupakan lingkungan komputasi yang diperlukan untuk menjalankan aplikasi java dan applets.
2. JAVA Development Kit (JDK) merupakan perlengkapan yang digunakan untuk
membuat aplikasi berbasis java dan applets. ketikan kita melakukan instalasi JDK
ke dalam sistem komputer maka secara otomatis JRE juga akan terinstal.
package modul.praktikum.pbo;
public class Program {
public static void main(String[] args) {
System.out.println("Assalamualaikum");
}
}
Kompile kode java yang sudah anda tulis dengan cara seperti gambar di bawah ini.
Jika kompilasi berhasil maka tampilan command prompt akan seperti gambar di atas
dimana command prompt tidak menampilkan adanya error. Untuk memastikan apakan
BAB
2.1
2.1.1
Landasan Teori
CLASS
Class adalah cetak biru ( blueprint ) dari objek. Dengan kata lain, suatu objek dapat
dibuat/diturunkan dari suatu model rancangan yang disebut dengan class. Berdasarkan
definisi ini, maka suatu class cukup dibuat hanya satu buah saja dan dari class tersebut
dapat dibuat/diciptakan beberapa objek (puluhan atau bahkan ratusan) yang memiliki
sifat yang sama.
2.1.2
Objek
Objek merupakan representasi nyata dari sebuah kelas, yang bisa kita artikan sebagai
contoh nyata dari kelas. Kita tidak bisa membuat objek kalau tidak ada kelas yang bisa
dijadikan sebagai panduan, sehingga kelas harus diciptakan terlebih dahulu sebelum suatu
objek dibuat . Untuk membuat objek roti dari kelas roti di atas, kita harus membuat
cetakan roti terlebih dahulu dan kita hanya memerlukan satu cetakan roti saja. Bentuk
umum dari sebuah roti biasanya memiliki warna, rasa, harga dan berat, sehingg semua
roti yang kita buat pasti akan memiliki karakter yang sama. Di dalam pemrograman
berorientasi objek, bentuk, ukuran dan berat disebut sebagai properti atau field. Setiap
field memiliki tipe yang berbeda satu sama lain, misalnya berat yang nantinya berisi
angka, warna yang berisi nama-nama warna dan lain sebagainya.
Untuk lebih jelasnya silahkan tulis dan jalankan contoh kode dibawah ini :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Kode di atas merupakan template atau bentuk abstrak dari roti akan tetapi kode
diatas tidak bisa dijalankan untuk menampilkan informasi dari objek roti, sehingga ketika
kita ingin menampilkan informasi dari objek roti menggunakan kelas di atas kita harus
membuat sebuah fungsi main atau fungsi utamanya. Fungsi main bisa dibuat di dalam
kelas tersebut ataupun dibuat dikelas lain dengan terlebih dahulu kita membuat objek
baru. Pembuatan objek baru dari suatu kelas memiliki sintax sebagai berikut
1
1
2
3
4
5
6
7
8
9
10
2.1.3
UML (Unified Modeling Language) merupakan diagram yang biasa digunakan untuk
mengilustrasikan sebuah kelas dan sekaligus hubungan antar kelas. Didalam satu class
diagram terdapat tiga row atau baris dimana masing-masing row memiliki kegunaan yang
berbeda-beda diantaranya :
1. Baris Pertamana menunjukkan nama class
2. Baris kedua digunakan untuk menyatakan variabel yang terdapat pada class, dan
3. Baris ketiga digunakan untuk menyatakan method-method yang ada pada suatu
class
Selain itu UML juga bisa digunakan untuk memberikan indikasi tentang akses modifier
dari sebuah variabel atau method antara lain :
1. + : Tanda ini menunjukkan bahwa suatu variabel atau method memiliki akses
modifier public
2. - : Tanda ini menunjukkan bahwa suatu variabel atau method memiliki akses
modifier private
3. # : Tanda ini menunjukkan bahwa suatu variabel atau method memiliki akses
modifier protected
Akses modifier akan kita pelajari lebih dalam pada modul 4. Contoh class diagram
2.1.3.1
Tujuan dari penggunaan UML class diagram sebenarnya untuk menggambarkan model dari aplikasi yang akan kita buat. Class diagram merupakan satu-satunya diagram
yang dapat menggambarkan dengan detail bentuk kelas yang akan dibuat. Berikut adalah tujuan utama penggunaan class diagram
1. Untuk membuat analisis dan desain statis dari aplikasi
2. Menggambarkan kemampuan program yang akan kita buat
3. Sebagai dasar komponen pengembangan sistem
2.1.3.2
1. Nama dari class harus memiliki arti yang bisa mewakili fungsi sesungguhnya dari
aplikasi
2.2
Latihan
10
bike1.changeCadance(50);
bike1.speedUp(20);
bike1.changeGear(2);
bike1.changeCadance(40);
bike1.speedUp(10);
bike1.changeGear(1);
bike1.printInfo();
}
}
4. Buatlah suatu class yang dapat merepresentasikan sifat-sifat dari objek Kucing.
Objek ini memiliki field/variable/properties berupa umur, warna bulu dan fungsi
berupa meong dan umur.
5. Salah satu applikasi PBO yang sangat umum adalah berupa aplikasi keuangan.
Bank Account (Rekening Bank) adalah salah satu hal yang dapat dijadikan sebagai
suatu objek di dalam PBO.
(a) Buatlah suatu class yang dapat merepresentasikan Objek Rekening tersebut.
Variabel dari objek ini adalah saldo, no rekening, nama dan fungsi berupa
cek saldo, menabung, menarik, dan transfer.
(b) Buatlah suatu class yang memiliki sebuah fungsi utama yang digunakan untuk
mendemokan pembuatan objek tersebut.
6. Perhatikan Class String yang ada di dalam dokumentasi Java. Sebutkan daftar
variable dan fungsi/method yang dimiliki oleh Class String tersebut.
2.3
Pekerjaan Rumah
1. Buatlah suatu class Kalimat yang merupakan program aplikasi untuk menghitung
jumlah huruf dari suatu kalimat yang kita inputkan. Hasil eksekusi program haruslah sesuai dengan gambar berikut ini.
1
2
3
2. Buatlah kelas Hewan dan juga ciptakan objek dari kelas tersebut sehingga kita
bisa membuat berbagai macam objek hewan dengan karakternya masing-masing.
Kode program akan menghasilkan output seperti berikut.
1
2
3
4
5
6
7
8
9
11
Gambar 2.4:
BAB
3.1
Dalam pemrograman objek, setiap objek memiliki propertis dan behaviour atau perlilaku yang menunjukkan karakter dari objek tersebut. Selain itu, setiap objek juga
mampu berkomunikasi satu dengan yang lainnya melalui sebuah fungsi/method dengan
cara mengirimkan pesan tertentu dimana setiap pesan yang dikirim oleh suatu objek
akan diterima dan dikenali oleh objek lain jika pesan tersebut memiliki tipe data yang
dikenali oleh objek lain.
3.2
Variabel
Variabel atau disebut juga field merupakan member dari kelas dimana setiap variabel
harus memiliki tipe data tertentu. Ketika kita membuat suatu variabel maka akan ada
memori komputer yang disediakan untuk menyimpan variabel tersebut. Tipe data di
dalam pemrograman java bisa berupa tipe data primitif dan tipe data reference atau
tipe data objek. Tipe data primitif artinya tipe data ini sudah didefinisikan oleh bahasa pemrograman dengan kata kunci (Keyword) khusus, sedangkan tipe data reference
merupakan tipe data yang merujuk pada suatu class objek. Tipe data primitif bisa kita
lihat di tabel 3.1 Untuk menggunakan tipe data pada variabel penulisan harus sesuai
dengan syntax pemrograman java
1 tipe data namaVariable = nilai/Value ;
2 tipe data namaVariabel;
3 namaVariabel = nilai/value ;
12
13
int a,
byte B
double
char a
b, c, d = 10;
= 22;
pi = 3.14159;
= a;
Ada beberapa jenis variabel yang biasa digunakan dalam pemrograman berorintasi
objek yaitu local variabel, instance variabel dan class/static variabel. Ketiga jenis variabel
tersebut memiliki karakteristik yang berbeda-beda.
3.2.1
Local variabel
Variabel lokal merupakan variabel yang dideklarasikan di dalam sebuah method, konstruktor ataupun dalam suatu blok program. Variabel jenis ini akan diciptakan ketika
method dijalankan dan akan dihapus dari memori komputer ketika method tersebut
dihentikan. Sehingga lokal variabel hanya bisa digunakan oleh fungsi/method yang
mendeklarasikannya dan blok atau fungsi lain tidak bisa menggunakan variabel lokal
dari method lain. Hal yang perlu diperhatikan adalah lokal variabel tidak memiliki nilai
default sehingga setiap variabel harus di deklarasikan nilai awalnya
Contoh penerapan variabel lokal Tuliskan kode program di bawah ini dan amati
hasilnya
1
2
3
4
5
6
7
8
9
14
Latihan 1
1. Buatlah method baru untuk menghitung berat badan dengan nama void beratBadan, di dalam method tersebut buatlah variabel lokal beratLahir, isikan nilai
awal pada berat lahir kemudian hitunglah berat badan dengan rumus
beratBadan = beratLahir + (usia/2)
2. Bisakah nilai dari variabel umur dipanggil dari method void beratBadan ? berilah
alasannya !
3.2.2
Instance Variable
Variabel isntance atau bisa kita sebut dengan variabel global merupakan variabel
yang dimiliki oleh suatu kelas dan berada diluar blok atau method tertentu. Variabel
jenis ini bisa diakses dari semua method yang menjadi member dari class, sehingga semua
metode bisa memanipulasi nilai atau value dari variabel instance tersebut. Berbeda
dengan variabel lokal, variabel instance bisa memiliki akses modifier.
Contoh penerapan variabel Instance
1
2
3
4
5
6
7
8
9
10
void methodDua(){
//detail method
}
}
Latihan 2
1. Modifikasi kelas VariabelLokal, dengan menambahkan satu variabel instance untuk
menampung nilai dari umur
2. Gunakan nilai umur untuk menyelesaikan permasalahan pada method menghitung
berat badan yang ada di Latihan 1
3. Analisa hasilnya dan bandingkan dengan hasil percobaan sebelumnya !
3.2.3
15
Static Variable
Static variabel merupakan variabel yang disimpan di dalam memori statis dan hanya
memiliki satu nilai di mana nilai tersebut akan dipakai oleh semua objek yang dibuat
tanpa ada batasan jumlah objek dan biasanya digunakan untuk membuat nilai konstanta.
Static variabel juga bisa diakses oleh semua method yang ada pada suatu kelas dengan
cara memanggil nama dari kelas dan variabelnya seperti ClassN ame.V ariableN ame.
Tulis dan jalankan kode program di bawah ini :
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
3.3
Method / Fungsi
16
dengan kata kunci void. Selain itu method juga bisa memiliki parameter. Parameter
di dalam method sifatnya tidak wajib dan itu sangat tergantung pada kegunaan dari
method tersebut. Akan tetapi setiap parameter di dalam method harus memiliki tipe
data tertentu Secara umum bentuk sebuah method adalah seperti blok berikut.
1
2
3
3.3.1
Method jenis ini adalah method yang harus memiliki type data pada body method.
Dengan demikian maka Method harus memiliki nilai return dimana nilai retur akan
digunakan oleh method lain. Nilai return yang dihasilkan oleh method ini memiliki tipe
data yang sama dengan tipe data yang dituliskan sebelum nama method.
Contoh :
1
2
3
4
5
6
1
2
3
4
5
6
7
8
17
Parameter Method
Parameter pada method merupakan sebuah variabel lokal yang hanya bisa diakses
oleh method tersebut. Sebuah method boleh memiliki parameter ataupun tidak bahkan
bisa memiliki lebih dari satu parameter, tergantung dari kegunaan method yang kita buat.
Karena parameter merupakan variabel lokal maka setiap parameter yang dituliskan dalam
method harus memiliki tipe data tertentu.
Contoh
1
2
3
4
5
6
1
2
3
4
5
Latihan 3
Lengkapilah kode di bawah ini dengan menambahkan method yang memiliki parameter kemudian tampilkan hasilnya. Buatlah minimal 5 Objek pegawai dengan nama,
nim dan gaji yang berbeda-beda.
1
2
3
4
5
3.3.2
18
Method Void
Method void merupakan method yang tidak menghasilkan nilai kembalian atau return
value. Method dengan tipe void juga bisa memiliki parameter ataupun tidak, tergantung
dari tujuan penggunaannya. Tuliskan kode di bawah ini dan amati perbedaannya dengan
method return.
1
2
3
4
5
6
7
8
9
10
11
12
}
13
public static void main(String[] args) {
14
VoidMethod vm = new VoidMethod();
15
vm.durasi(1, 30, 15);
16
vm.infoDurasi();
17
}
18 }
Pekerjaan Rumah
1
2
3
4
5
BAB
Setiap variabel atau field dalam kode java, sebaiknya memiliki penentu akses. Maksud
dari pentu akses adalah untuk mengijinkan apakah variable/field dan method/fungsi boleh diakses oleh kelas lain atau tidak atau dikenal dengan encapsulation. Akses terhadap
suatu variabel instan di luar kelas biasanya tidak diperkenankan dengan maksud untuk
menjaga data dari akses kelas lain yang bisa mengaibatkan kesalahan. Sebagai penggantinya, disediakan metode yang diperlukan untuk mengakses variabel instan. Berkaitan
dengan boleh tidaknya suatu variabel instan diakses dari luar kelas, Java menyediakan
beberapa penentu akses antara lain: Default (Tanpa penent akses), Public, Protected
dan Private. Untuk bisa memahami perbedaan dari masing-masing tipe akses, kita perlu
memahami sedikit tentang package atau paket terlebih dahulu. Package, merupakan suatu folder tempat menyimpan class java, sehingga program yang kita buat bisa tersusun
dengan rapi. Selain itu package juga berfungsi untuk mengelompokan class java sesuai
dengan grupnya masing-masing sehingga bisa meminialisir kesalah dalam pengaksesan
kelas.
Contoh package di dalam kode java
1
package modul.praktikum.pbo;
Perbedaan public, private, dan tanpa penentu akses pada variabel atau
method
1. Default. Tanpa penentu akses, setiap Variabel atau method dapat diakses oleh
kelas yang berada dalam package yang sama.
2. Public. Variabel atau method dapat diakses pada semua kelas yang menggunakan
kelas yang berisi variabel tersebut meskipun berada pada package yang berbeda.
19
20
3. Private. variabel atau method hanya dapat diakses dari dalam kelas itu sendiri
4. Protected. hanya bisa diakses oleh kelas turunannya meskipun kelas turunannya
berada dalam package yang berbeda dengan kelas induk
4.1
Default Modifier
Default modifier atau tipe akses default bisa diterapkan baik dalam variabel maupun
method. Pada default modifier kita tidak perlu memuliskan secara eksplisit pada variabel atau method, karena secara otomatis java akan mengeksekusinya sebagai default
modifier. Sehingga, yang perlu kita tuliskan adalah tipe data kemudian nama variabel
atau nama method-nya saja.
Perhatikan contoh kode di bawah ini dan kerjakan latihannya
1
2
3
4
5
6
7
8
9
class DefaultModifier{
int a=1;
int b=2;
int c;
void jumlah(){
c=a+b;
System.out.println(c);
}
}
4.1.1
Latihan
1. Untuk membuktikan bahwa Variabel-variabel di atas hanya bisa diakses oleh kelas
yang berada di dalam package yang sama, silahkan buat satu package dengan
nama praktikum.pbo.package1, kemudian buat file java lainnya untuk mengakses
variabel dan method dari kelas diatas dan tampilkan hasilnya.
2. Butlah package baru dan satu file kelas java di package tersebut, kemudian cobalah
untuk mengakses variabel yang ada di kelas DefaultModifier dan perhatikan
hasilnya
4.2
Public Modifier
Public modifier merupakan penanda bahwa suatu method atau variabel bisa diakses
dari berbagai kelas dan package. Public modifier biasanya dipakai oleh kode program
21
yang memang mengijinkan semua kelas bisa mengaksesnya. Perhatikan contoh kode
program berikut ini
1
2
3
4
5
6
7
8
9
4.2.1
Latihan
4.3
Protected Modifier
Protected modifier merupakan hak akses yang diberikan oleh suatu kelas ke kelas
turunannya saja, meskipun kelas turunannya berada dalam package yang berbeda. sehingga kelas-kelas lain yang tidak memiliki hubungan turunan tidak akan bisa mengakses
method protected. Perhatikan contoh kode program di bawah ini.
1
2
3
4
5
6
7
8
class ProtectedModifier {
protected void printInfo(){
System.out.println("Protected Modifier");
}
4.3.1
Latihan
Buatlah kelas dan objek untuk mengakses method dari kelas di atas, dan bandingkan
dengan dua modifier sebelumnya
4.4
22
Private Modifier
Private modifier merupakan akses modifier dimana kelas lain tidak diijinkan untuk
mengakses variabel atau method dari kelas tersebut, meskipun kelas-kelas tersebut berada dalam package yang sama.
1
2
3
4
5
6
7
4.4.1
Latihan
Tuliskan kode di atas dan buatlah file java untuk mengakses variabel ataupun method
dari kelas di atas. Apakah variabel ataupun method bisa diakses dari kelas lain ? Berilah
penjelasannya.
BAB
Constructor
Konstruktor adalah metode yang dapat digunakan untuk memberikan nilai awal saat
objek diciptakan. Metode ini akan dipanggil secara otomatis oleh java ketika new dipakai
untuk menciptakan objek dari suatu kelas.
Konstruktor memiliki beberapa karakteristik antara lain :
1. Nama constructor sama dengan nama kelas
2. Tidak memiliki nilai balik atau return value
Konstruktor memiliki beberapa tipe diantaranya :
1. Default constructor
2. Parameterized constructor
5.1
Default constructor
Default constructor merupakan konstruktor yang secara otomatis dibuatkan oleh java
compiler, sehingga meskipun kita tidak menuliskan atau membuat constructor secara
eksplisit java sudah menyediakannya.
1
2
3
4
5
23
BAB 5. CONSTRUCTOR
24
Baris kode ke 3-5 merupakan konstruktor yang tidak memiliki detail implementasi, konstruktor yang seperti ini disebut dengan default konstruktor, kita boleh menuliskannya
maupun tidak. Tujuan sebenarnya dari default constructor adalah untuk memberikan
nilai awal pada objek seperti 0, NULL, dan sebagainya.
Dari contoh program sebelumnya nilai default dari objek yang diciptakan melalui konstruktor adalah melakukan print out yang berisi default constructor. Untuk mengeceknya silahkan tulis kode di bawah ini dan perhatikan hasilnya
1
2
3
4
5
5.1.1
Latihan
1. Buatlah kelas baru dengan menambahkan variabel nama, nim dan alamat serta
sebuah konstruktor default yang dapat menampilkan nama, nim dan alamat anda.
Selanjutnya buatlah kelas baru dengan fungsi main untuk menampilkan hasilnya.
5.2
Parameterized constructor
Parameterized constructor sebenarnya merupakan method, yang mana sebuah method bisa memiliki beberapa parameter atau bahkan tidak memiliki parameter (default
constructor). Constructor bisa memiliki beberapa parameter sebagai penentu nilai awal
dari sebuah objek. Seperti layaknya method, parameter di dalam constructor juga harus
memiliki tipe data tertentu. Tipe data disini bisa berupa tipe data reference ataupun
tipe data primitive. Tulis contoh parameterized constructor berikut
1
2
3
4
5
6
7
8
9
10
BAB 5. CONSTRUCTOR
11
12
13
25
1
2
3
4
5
6
5.2.1
Latihan
1. Buatlah class Buku dengan variabel String namaPengarang, String judulBuku, int
tahunTerbit, int cetakanKe dan double hargaJual. Selanjutnya buatlah constructornya serta sebuah method untuk menampilkan informasi buku.
2. Buatlah 10 objek buku dengan fungsi main yang dapat menampilkan nilai dari
semua parameter Buku tersebut.
5.3
Overloading constructor
BAB 5. CONSTRUCTOR
26
import java.util.Date;
public class OverloadingCons {
int idUser;
String userName;
int level;
Date lastLogin;
public OverloadingCons(){
}
public OverloadingCons(int iduser, String userName){
this.idUser = iduser;
this.userName = userName;
}
}
Dari kode di atas terdapat dua constructor yang memiliki jumlah parameter berbeda.
Ketika kita membuat objek dari kelas diatas maka nilai default dari objek tersebut bisa
memiliki dua kemungkinan yaitu NULL atau id user dan nama user.
5.3.1
Latihan
1. Modifikasi kode di atas dengan menambahkan 3 constructor baru dengan parameter yang berbeda.
2. Buatlah kelas baru dengan method main untuk membuat objek dari kelas sebelumnya.
3. Buatlah kelas baru dengan nama CustomerData, tambahkan variabel nama, alamat, tanggal lahir, pekerjaan dan gaji. Selanjutnya buatlah overloading constructor
dari kelas tersebut.
4. Buatlah kelas baru dengan method main serta membuatlah 10 objek customer dari
kelas CustomerData.
BAB
Inheritance / Pewarisan
Inheritance (pewarisan) adalah salah satu ciri utama dari PBO dan merupakan fitur
yang sangat memudahkan bagi programmer untuk membuat dan mengatur program.
Sepertihalnya dalam kehidupan riil, sifat seoran anak secara umum mirip dengan sifat
orang tuanya. Demikian juga pada kasus pemrograman. Suatu class yang diturunkan
(inherited from) dari induknya (parent class) akan mewarisi semua atau sebagian sifat
(variable dan fungsi) dari class induknya. Dengan inheritance kita tidak perlu membuat
(mengimplementasikan) ulang suatu Class jika kita sudah memiliki Class lain yang serupa. Inheritance dapat digambarkan pada contoh diagram di bawah ini.
28
membuat ketiga jenis sepeda tersebut kita cukup mengambil karakter dari sepeda secara
umum semisal semua sepeda pasti memiliki gear, peda, rem, dan lain sebagainya. Oleh
karena itu kita hanya perlu menurunkan sifat sepeda (bicycle) kemudian kita terapkan
pada Mountainbike, Roadbike dan Tandembike.
Untuk menggunakan inheritance kata kunci yang diperlukan adalah extends. Secara
umum sintax dari inheritance adalah seperti berikut
1
2
6.1
Tipe inheritance
6.2
29
Single inheritance
1
2
3
4
5
6
7
8
9
gajiPerBulan = p.gajiPokok+lemburPerJam;
System.out.println(gajiPerBulan);
}
}
Kode di atas menunjukkan bahwa kelas Programmer merupakan kelas turunan dari kelas
Pegawai, sehingga kita bisa menggunakan variabel dari kelas Pegawai dan menggunakannya ke dalam kelas Programmer. Pada baris ke-6 terlihat bahwa kelas programmer
menggunakan variabel gajiPokok dari kelas pegawai dan menjumlahkannya dengan variabel yang ada pada kelas programmer.
6.3
Multilevel Inheritance
Dari kelas pegawai di atas kita bisa membuat beberapa kelas turunan yang lainnya
sehingga kelas pegawai nantinya memiliki beberapa kelas turunan, inilah yang disebut
dengan multilevel inheritance. Silahkan tulis dan analisa kode program berikut.
1
2
3
4
5
6
7
8
9
30
Kode diatas menunjukkan bahwa variabel dari kelas Pegawai bisa dipakai oleh kelas-kelas
turunannya tanpa perlu kita membuat variabel sendiri di masing-masing kelas turunannya.
6.4
Hierarchical inheritance
Hierarchical inheritance merupakan model kelas turunan dimana suatu sub-class memiliki sub-class lain. sub-class dari sub-class juga memiliki akses ke kelas induk yang
paling atas. Jika kita ilustrasikan dalam kehidupannyata seperti seorang cucu yang memiliki orang tua dan kakek, dimana cucu tersebut boleh menggunakan barang milik
ayahnya sekaligus barang milik kakeknya. Tulislah contoh berikut kemudian jalankan
1
2
3
4
5
public class A {
public void messageA (){
System.out.println("Info dari Kelas A");
}
}
31
c.messageA();
c.messageB();
c.messageC();
}
}
Pada kode TesInheritance terlihat bahwa objek dari kelas A hanya bisa menggunakan
method yang ada pada kelas A sendiri, akan tetapi objek dari kelas B bisa menggunakan
method dari kelas A dan halnyang sama juga ada pada kelas C dimana objek dari kelas
C memiliki akses ke method yang ada pada kelas A dan B. Dengan demikian berarti
bahwa induk kelas (Super class) tidak bisa mengakses variabel atau method dari anak
kelas (sub class), tetapi sub-class memiliki akses pada variabel atau method dari super
class selama variabel atau class tersebut tidak bersifat private.
6.4.1
Overriding Method
Overriding method merupakan fitur yang dimiliki oleh java untuk memanfaatkan
method-method dari super kelas agar bisa digunakan oleh sub kelas dengan implementasi yang berbeda. Overriding berbeda dengan Overloading, Overriding hanya bisa diterapkan pada kelas yang memiliki hubungan turunan atau inheritance. Perhatikan contoh
penggunaan overriding method berikut. Tulis dan Jalankan kode program di bawah ini
1
2
3
4
5
class Hewan{
public void gerak(){
System.out.println("Hewan bisa berjalan");
}
}
6.5
32
Latihan
BAB
Encapsulation / Enkapsulasi
7.1
Private modifier
Encapsulation merupakan teknik untuk melindungi atau membungkus data yang berupa variabel ataupun method dari akses kelas lain. Dengan menggunakan encapsulation
maka data bisa disembunyikan dari kelas-kelas lain yang tidak berhak memiliki akses.
Untuk menerapkan teknik enkapsulsi ada beberapa hal yang harus dilakukan antara lain:
1. Mendeklarasikan variabel dengan akses modifier private
2. Menyediakan akses public setter dan getter untuk menampilkan atau memodifikasi
nilai variabel
Contoh penggunaan private modifier dalam enkapsulasi
1
2
3
4
5
6
7
8
9
10
11
12
34
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
35
return nama;
}
1
2
3
4
5
6
7.2
Latihan
1. Buatlah Kelas dengan fungsi main dan 5 objek berbeda untuk menampilkan data
dari class Programmer
BAB
Polymorphism
Salah satu kekuatan dari pemrograman berorientasi objek selain inheritance dan encapsulation ada juga istilah polymorphism. Polymorphism (polimorpisme) merupakan
salah satu kemampuan pemrograman berorientasi objek untuk membuat berbagai jenis
bentuk dari suatu objek. Salah satu penggunaan polimorpisme yang paling sering dipakai
adalah ketika suatu induk kelas (Super class) melakukan referensi terhadap anak kelas
(sub-class).
Perlu diketahui bahwa salah satu cara untuk mengakses suatu objek adalah dengan membuat reference variabel. Ketika suatu reference variabel diciptakan maka hal itu tidak
bisa dirubah menjadi bentuk yang lain. Reference variabel itu sendiri bisa dideklarasikan
sebagai atau interface.
Perhatikan contoh berikut
1
2
3
BAB 8. POLYMORPHISM
1
2
3
4
37
8.1
Runtime Polymorphism
Runtime Polymorphism merupakan proses pemanggilan method dengan cara melakukan overiding pada saat kode program berjalan.
Contoh runtime polymorphism. Pada contoh ini kita membuat dua kelas yang pertama
adalah kelas Sepeda dan yang kedua adalah kelas SepedaAir, selanjutnya kita akan
melakukan overriding terhadap method yang dimiliki oleh sepeda. Ketika kita memanggil
method yang ada pada induk kelas dengan cara membuat objek reference maka hal ini
dilakukan oleh JVM bukan compiler sehingga ini disebu dengan runtime polymorphism.
1
2
3
4
5
1
2
3
4
5
6
7
8
9
10
class Sepeda{
void run(){
System.out.println("Bisa berjalan");
}
}
1
2
BAB 8. POLYMORPHISM
3
4
5
6
7
8
9
10
11
12
13
14
38
Latihan
1. Buatlak kelas Kucing dan Anjing kemudian dimana masing-masing kelas tersebut
melakukan overriding terhadap method perilaku(), dan tambahkan satu method
pada masing-masing kelas yang secara khusus hanya berlaku pada masing-masing
kelas tersebut. Selanjutnya buat kelas baru TestPolimorpisme untuk menampilkan hasilnya. Tampilan hasil
1
2
3
4
5
6
8.2
TOM
Menykai Ikan
Meeooww...Meeooww
BULL
Menyukai Daging dan Tulang
Guk..Guk..Guk..
Tugas
Buatlah class berdasarkan Class diagram berikut ini, terapkan teknik polimorpisme
dan tampilkan hasilnya dengan print screen
BAB 8. POLYMORPHISM
39
BAB
Abstract Class
Java menyediakan suatu mekanisme yang memungkinkan suatu method ditentukan didalam kelas tetapi tidak disertai degnan definisinya. Method seperti ini dikenal
dengn method abstract dan kelasnya dinamakan kelas abstract. Definisi kelas ditentukan
masing-masing kelas turunan. Dalam hal ini setiap keas turunan dari kelas abstrak harus
mendefinisikan method-method yang tegolong sebagai mehtode abstrak. Kelas abstract biasa dibuat sekiranya di depan telah diketahui bahwa subkelas-subkelas merupakan
operasi yang sesuai dengan method tersebut tetapi antara satu subkelas denga subkelas
yang lain memiliki tindakan yang berbeda.
Abstrak class di dalam java selalu ditandai dengan kata kunci abstract. Ciri-ciri
abstract kelas memiliki ciri-ciri sebagai berikut
1. Abstract class tidak bisa dibuat instance objeknya
2. Abstract class bisa memiliki abstract method maupun tidak
3. Jika kita membuat abstract method maka kita harus membuatkan implementasi
dari method tersebut
9.1
Seperti yang sudah di sebutkan sebelumnya bahwa abstract class tidak bisa digunakan untuk membuat instance objek. Sehingga untuk mengguanakan fitur dari abstract
class maka kita perlu membuat kelas yang merupakan kelas turunan dari kelas abstrak
tersebut. Perhatikan dan cobalah contoh program berikut
1 abstract class AbstrakClass {
40
41
int a;
int b;
int c;
public AbstrakClass (int a, int b, int c){
this.a = a;
this.b = b;
this.c = c;
}
Kode program di atas merupakan sebuah abstract class yang memiliki konstruktor
dengan tiga parameter. Untuk membuktikan bahwa suatu abstract class tidak dapat
dibuat instance objeknya, silahkan tulis kode program di ini
1 public class ObjekAbstrakClass {
2
public static void main(String[] args) {
3
AbstrakClass ac = new AbstrakClass(2, 3, 4);
4
}
5 }
Jika kita menjalankan kode di atas maka bisa dipastikan terjadi error. Error yang muncul disebabkan karena ada pembuatan objek dari kelas AbstrakClass. Sehingga untuk
menggunakan abstrak class agar bisa diimplentasikan kita perlu membuat kode program
yang merupakan turunan dari kelas abstract tersebut.
Perhatikan dan tulis ulang kode berikut
1 public class TurunanAbstrakClass extends AbstrakClass{
2
int x;
3
4
public TurunanAbstrakClass (int a, int b, int c){
5
super(a,b,c);
6
x = a+b+c;
7
}
8
9
public void printX(){
10
System.out.println(x);
11
}
12 }
42
Kode TurunanAbstrakClass merupakan turunan dari AbstrakClass, dengan cara seperti ini kita bisa mengguanakan variabel atau method dari abstract class.
Tulis dan amati kode berikut
1 public class ObjekAbstrakClass {
2
public static void main(String[] args) {
3
TurunanAbstrakClass tac = new TurunanAbstrakClass(2, 3, 2);
4
tac.printX();
5
System.out.println(tac.kali());
6
}
7 }
9.2
Method abstract
Sebuah kelas abstrak boleh memiliki method abstrak maupun method non-abstrak.
Method abstrak merupakan method yang hanya memiliki nama method saja tanpa menjelaskan rutin atau fungsi detail implementasi dari method tersebut. Sedangkan method
non-abstrak merupakan method yang memiliki detail implementasi didalamnya.
Perhatikan kelas abstrak berikut
1 public abstract class MethodAbstrak {
2
public abstract int luas();
3
public abstract int keliling();
4
5
public int getLuas(){
6
return luas();
7
}
8
public int getKeliling(){
9
return keliling();
10
}
11 }
Kode kelas abstrak di atas memiliki dua method abstrak yaitu luas dan keliling, dimana
method tersebut tidak memiliki detail implementasi tentang bagaimana menentukan
nilai luas dan keliling. Untuk mengimplementasikannya cara yang dilakukan adalah sama
seperti pada sub-bab sebelumnya, yaitu kita harus membuat suatu kelas yang merupakan
kelas turunan dari abstrak kelas. Dengan cara seperti ini kita bisa menetukan detail dari
method abstrak yang ada pada kelas abstrak. Misalkan dalam hal ini kita akan membuat
kelas Persegi. Tulis kode berikut ini dan analisa hasilnya.
1 public class Persegi extends MethodAbstrak{
43
int sisi = 5;
public int luas() {
return sisi*sisi;
}
9.3
Latihan
1. Dengan menggunakan kelas MethodAbstrak buatlah kelas PersegiPanjang, JajaranGenjang, Lingkaran, dan SegiTiga. Selanjutnya implementasikan method luas
dan keliling pada masing-masing kelas tersebut.
9.4
Tugas
1. Buatlah abstract class untuk bangun ruang, dengan ketentuan memiliki method
abstrak volume, dan luasSelimut/luasPermukaan. Berikutnya buatlah kelas Balok,
Kubus, Bola, Kerucut, dan PrismaSegiTiga untuk mengimplementasikan method
abstrak tesebut.
BAB
10
Interface
Interface merupakan suatu mekanisme yang disediakan oleh java yang memungkinkan
berbagi konstanta atau menentukan bentuk method yang dapat digunakan oleh sejumlah
kelas. Sekilas interface mirip dengan abstract class, karena interface juga menentukan
method untuk kelas yang mereferensi namun detail dari method diserahkan atau ditentukan oleh masing-masing kelas tersebut. Sama halnya dengan abstrak kelas, interface
juga bisa memiliki konstanta, method defaul, static method dan juga perilaku yang bisa diimplementasikan oleh kelas implennya. Akan tetapi interface memiliki beberapa
perbedaan dengan kelas pada umumnya seperti :
1. Interface tidak bisa digunakan untuk membuat objek
2. Interface tidak bisa memiliki konstruktor
3. Secara defaul semua method di dalam interface bersifat abstrak
4. Variabel pada interface harus bertipe static final
5. Interface tidak bisa diturunkan kepada kelas lain, melainkan interface hanya bisa
di implement-kan
6. Sebuah interface bisa mengeksten beberapa interface.
10.1
Mendeklarasikan Interface
44
45
10.2
Implementasi Interface
Ketika sebuah kelas mengimplementasikan interface, kita bisa berasumsi bahwa kelas tersebut memiliki kontrak kerja dengan interface untuk mengimplementasikan seluruh
method yang ada pada interface. Ketika suatu kelas tidak mengimplementasikan method dari interface maka akan terjadi error. Agar interface bisa digunakan kita perlu
menggunakan kata kunci implement yang mengindikasikan bahwa kelas tersebut mengimplementasikan sebuah interface.
1 public class Mamalia implements Animal{
2
public void eat(){
3
System.out.println("Mammal eats");
4
}
5
6
public void travel(){
7
System.out.println("Mammal travels");
8
}
9
10
public int noOfLegs(){
11
return 0;
12
}
13
14
public static void main(String args[]){
15
MammalInt m = new MammalInt();
46
16
m.eat();
17
m.travel();
18
}
19 }
Kode program diatas merupakan implementasi dari interface Animal, dimana kelas mamalia mengimplementasikan semua method yang dimiliki oleh interface Animal.
10.2.1
Percobaan
1. Buat interface baru dengan nama IntLampu.java, tuliskan kode program seperti
berikut
1
2
3
4
5
6
47
7
8
9
10
11
12
13
14
15
10.3
if(lampu.setSaklar(sc.nextInt())==0){
lampu.matikanLampu();
}else {
lampu.hidupkanLampu();
}
}
}
Latihan
Modifikasi kelas Lampu di atas dengan menambahkan satu variabel static final
REDU P KAN LAM P U , dan tambahkan method untuk meredupkan lampu. Selanjutnya buat kelas dengan fungsi main untuk menjalankannya.
BAB
11
Nested Class
Nested class merupakan fasilitas yang disediakan oleh java untuk mengelompokkan
kelas secara virtual sehingga lebih mudah dibaca dan dimaintenance. Selain itu hal ini
juga memungkinkan outer class bisa mengakses private variabel dan method dari inner
class.
Contoh kode di atas menunjukkan bahwa di dalam suatu kelas sangat memungkinkan
untuk kita membuat kelas lain, dimana kelas-kelas tersebut memiliki kaitan fungsi atau
kegunaan.
Nested class sendiri dikategorikan menjadi dua bagian yaitu : Non-Static Nested class
dan Static Nested class. Struktur dari pengelompokan inner kelas dapat dilihat dari
gambar berikut ini
48
11.1
49
Non-static nested class lebih sering disebut sebagai inner class. Secara umum suatu
kelas tidak boleh memiliki akses modifier private, akan tetapi jika kita menggunakan inner
class maka suatu kelas bisa kita buat private. Inner class bisa dibuat secara sederhana
dengan membuat suatu kelas di dalam kelas lain. Syntax Inner class
1 class Outer_Demo{
2
class Nested_Demo{
3
}
4 }
Berikut adalah contoh penggunaan inner class dan cara melakukan akses terhadap method pada inner class. Tulis dan jalankan contoh kode program berikut.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
class OuterDemo{
int num;
//inner class
50
Dari kode program sebelumnya terlihat bahwa OuterDemo merupakan kelas paling
luar yang di dalamnya memiliki inner class yaitu InnerDemo, dan satu variabel dengan
nama displayInner untuk mengakses variabel dari kelas InnerDemo. Mehod displayInner
merupakan method yang akan kita gunakan untuk mengakses method dari inner class,
disitu terlihat bahwa kita harus membuat objek atau instance dari inner class untuk
mengakses method di dalamnya.
11.1.1
Seperti yang sudah disebutkan sebelumnya bahwa inner class bisa juga memiliki tipe
akses private. Untuk mengakses variabel private dari inner class proses yang dilakukan
sedikit berbeda. Kita harus membuat instance dari outer kelasnya kemudian dari outer
class kita buat instance dari inner class dengan menggunakan instance dari outer classnya.
1
2
1 class OuterDemo {
2
private int num= 175;
3
public class Inner_Demo{
4
public int getNum(){
5
System.out.println("Ini adalah nilai dari variabel private
outerDemo");
6
return num;
7
}
8
}
9 }
1 public class OuterDemoMain {
2
public static void main(String args[]){
3
4
//Membuat Objek OuterDemo
5
OuterDemo outer=new OuterDemo();
6
7
//Membuat Objek InnerDemo
8
OuterDemo.InnerDemo inner=outer.new InnerDemo();
9
System.out.println(inner.getNum());
10
}
11 }
11.2
51
Static nested class merupakan inner class yang bertipe static. Kelas dengan tipe ini
bisa diakses oleh outer class tanpa harus membuat instance atau objek dari outer class.
Seperti halnya dengan static member (variabel,method) static member tidak memiliki
akses kedalam instance variabel dan method dari outer class. Syntax dari Static nested
class seperti berikut
1
2
3
4
class MyOuter {
static class Nested_Demo{
}
}
Membuat objek static nested class sedikit berbeda dengan membuat objek dari inner
class. Berikut adalah contoh membuat instance dari Static nested class.
1
2
3
4
5
6
7
8
9
10
11
12
11.3
Latihan
1. Isikan nama dan nim kalian, kemudan buatlah method di dalam StaticNestedClass untuk mengakses method printNama
2. Buatlah method di dalam InnerClass untuk mengakses variabel jurusan.
3. Buatlah kelas dengan fungsi main untuk menampilkan hasil dari kode program
1
2
3
class NestedClass {
String nama="";
String nim="";
class InnerClass {
}
}
52
BAB
12
Java Swing
Swing merupakan suatu cara untuk pembuatan aplikasi yang berbasis GUI (Graphical
User Interface) di Java. Sebenarnya terdapat dua cara untuk pembuatan aplikasi yang
berbasis GUI di Java selain menggunakan Swing, Cukup banyak paket di java untuk
melakukan pemrograman GUI, tetapi sebagai pengenalan anda cukup memahami paket
yang berada di javax.swing.
12.1
Komponen Swing
Tidak seperti beberapa komponen AWT yang menggunakan native code, keseluruhan
Swing ditulis menggunakan bahasa pemrograman Java. Swing menyediakan implementasi platform-independent dimana aplikasi yang dikembangkan dengan platform yang
berbeda dapat memiliki tampilan yang sama.
Seperti pada package AWT, package dari Swing menyediakan banyak kelas untuk
membuat aplikasi GUI. Package tersebut dapat ditemukan di javax.swing. Perbedaan
utama antara keduanya adalah komponen Swing ditulis menyeluruh menggunakan Java
mengingat yang belakangan tidak. Kesimpulannya, program GUI ditulis menggunakan
banyak kelas dari package Swing yang mempunyai tampilan look and feel yang sama
meski dijalankan pada beda paltform. Lebih dari itu, Swing menyediakan komponen
yang lebih menarik seperti color chooser dan option pane.
Nama dari komponen GUI milik Swing hampir sama persis dengan komponen GUI
milik AWT. Perbedaan jelas terdapat pada penamaan komponen. Pada dasarnya, nama
komponen Swing sama dengan nama komponen AWT tetapi dengan tambahan huruf
J pada prefixnya. Sebagai contoh, satu komponen dalam AWT adalah button class.
Sedangkan pada Swing, nama komponen tersebut menjadi Jbutton class.
53
54
Berikut adalah beberapa contoh komponen swing dan penjelasan dari Swing
1. JComponent : Kelas induk untuk semua komponen Swing, tidak termasuk toplevel container checkbox class dalam package AWT
2. JButton : Tombol push. Korespondesi pada button class dalam package AWT
3. JCheckBox : Item yang dapat dipilih atau tidak oleh pengguna. Korespondensi
pada
4. JFileChooser : Mengijinkan pengguna untuk memilih sebuah file. Korespondensi
pada cfilechooser class dalam package AWT
5. JTextField : Mengijinkan untuk mengedit text satu baris. Korespondensi pada
textfield class dalam package AWT.
6. JFrame : Turunan dan korepondensi pada frame class dalam package AWT tetapi
keduanya sedikit tidak cocok dalam kaitannya dengan menambahkan komponen
pada kontainer. Perlu mendapatkan content pane yang terbaru sebelum menambah sebuah komponen.
7. JPanel : Turunan Jcomponent. Kontainer class sederhana tetapi bukan top-level.
Korespondensi pada panel class dalam package AWT.
8. JApplet : Turunan dan korepondensi ke Applet class dalam package AWT. Juga
sedikit tidak cocok dengan applet class dalam kaitannya dengan menambahkan
komponen pada container
9. JOptionPane : Turunan Jcomponent. Disediakan untuk mempermudah menampilkan pop- up kotak dialog.
10. JDialog : Turunan dan korespondensi pada dialog class dalam package AWT. Biasanya digunakan untuk menginformasikan sesuatu kepada pengguna atau prompt
pengguna untuk input.
11. JColorChooser : Turunan Jcomponent. Mengijinkan pengguna untuk memilih
warna
12.2
Seperti disebutkan diatas, top-level containers seperti JFrame dan JApplet dalam
Swing sangat tidak cocok dengan AWT. Ini adalah syarat menambahkan komponen ke
dalam kontainer. Jika Anda ingin menambahkan langsung sebuah komponen kedalam
55
kontainer sebagai kontainer AWT, pertama-tama Anda telah mendapatkan content pane dari kontainer. Untuk melakukan hal tersebut, Anda akan menggunakan metode
getContentPane dari kontainer.
Perlu diperhatikan pada package java.awt masih saja diimpor karena layout manager
yang digunakan terdapat pada package tersebut. Juga, memberi judul pada frame dan
mengepack komponen di dalam frame dapat juga dilakukan untuk frame AWT.
Latihan
Tulis dan jalankan kode program berikut ini :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package java_swing;
import javax.swing.*;
public class Coba_GUI {
public static void main(String[] args) {
GUI g = new GUI();
}
}
public GUI() {
setTitle("Mencoba kombinasi kompunen GUI");
setDefaultCloseOperation(3);
setSize(350, 200);
ButtonGroup group = new ButtonGroup();
group.add(rbPria);
group.add(rbWanita);
setLayout(null);
add(lnama);
add(fnama);
add(ljeniskelamin);
add(rbPria);
add(rbWanita);
add(lagama);
add(cmbAgama);
add(lhobby);
add(cbSepakbola);
add(cbBasket);
add(btnSave);
lnama.setBounds(10, 10, 120, 20);
fnama.setBounds(130, 10, 150, 20);
ljeniskelamin.setBounds(10, 35, 120, 20);
rbPria.setBounds(130, 35, 120, 20);
rbWanita.setBounds(230, 35, 120, 20);
lagama.setBounds(10, 60, 150, 20);
cmbAgama.setBounds(130, 60, 150, 20);
lhobby.setBounds(10, 85, 120, 20);
cbSepakbola.setBounds(130, 85, 100, 20);
cbBasket.setBounds(230, 85, 150, 20);
btnSave.setBounds(100, 130, 120, 20);
setLocationRelativeTo(null);
setVisible(true);
}
}
56
57
Selain itu kita dapat menggabungkannya dengan AWT seperti pada contoh program
berikut
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
58
user.setText("");
pass.setText("");
frame.setTitle("Login");
frame.setVisible(true);
} else {
JOptionPane.showMessageDialog(null, "Maaf User/password Anda
Salah");
user.setText("");
pass.setText("");
}
}
}
});
bclose.addActionListener(new ActionListener() {
@Override
Pekerjaan Rumah
1. Buatlah Sebuah form dengan swing yang memiliki 3 buah tombol, dimana setiap
tombol akan merubah warna dari form ketika tombol tersebut diklik
2. Tambahkan Icon pada setiap tombol pada form
3. Buatlah aplikasi untuk menghitung Luas bangun datar seperti Segi tiga, Persegi,
Persegi Panjang, Jajaran Genjang dan Layang-layang.