Anda di halaman 1dari 106

Pertemuan 1

Course Introduction
1. Pokok Bahasan
a. Java History
Proyek Java dimulai pada tahun 1991, sejumlah insinyur perusahaan Sun yang dimotori
oleh James Gosling mempunyai keinginan untuk mendesain sebuah bahasa komputer kecil yang
dapat dipergunakan untuk peralatan konsumen seperti kotak tombol saluran TV. Proyek ini
kemudian diberi nama sandi Green.
Keharusan untuk membuat bahasa yang kecil dan kode yang ketat mendorong mereka
untuk menghidupkan kembali model yang pernah dicoba oleh bahasa UCSD Pascal, yaitu
mendesain sebuah bahasa yang portable yang menghasilkan kode intermediate. Kode intermediate
ini kemudian dapat digunakan pada banyak komputer yang interpreternya telah disesuaikan.
Karena orang-orang Sun memiliki latar belakang sebagai pemakai unix lebih menggunakan
C++ sebagai basis bahasa pemrograman mereka, maka mereka secara khusus mengembangkan
bahasa yang berorientasi objek bukan berorientasi prosedur.
Gosling: ”Secara keseluruhan, bahasa hanyalah sarana, bukan merupakan tujuan akhir”.
Gosling memutuskan menyebut bahasanya dengan nama “Oak” (diambil dari nama pohon yang
tumbuh tepat diluar jendela kantornya di Sun), tetapi kemudian nama Oak diubah menjadi java,
karena nama Oak merupakan nama bahasa komputer yang sudah ada sebelumnya.
Pada tahun 1994 sebagian besar orang menggunakan mosaic, browser web yang tidak
diperdagangkan yang berasal dari pusat Supercomputing Universitas Illinois pada tahun 1993.
(Mosaic sebagian ditulis oleh Marc Andreessen dengan bayaran $6.85 per jam, sebagai mahasiswa
yang melakukan studi praktek. Di kemudian hari ia meraih ketenaran sebagai salah seorang pendiri
dan pemimpin teknologi di netscape)
Browser yang sesungguhnya dibangun oleh Patrick Naughton dan Jonathan Payne dan
berkembang ke dalam browser HotJava yang kita miliki saat ini. Browser HotJava ditulis dalam
Java untuk menunjukkan kemampuan Java. Tetapi para pembuat juga memiliki ide tentang suatu
kekuatan yang saat ini disebut dengan Applet, sehingga mereka membuat browser yang mampu
penerjemahkan Kode Byte tingkat menengah. “Teknologi yang Terbukti” ini diperlihatkan pada

1|Page
SunWorld ’95 pada tanggal 23 mei 1995, yang mengilhami keranjingan terhadap Java terus
berlanjut.
b. Compare procedural and java by giving a simple case study.
Pemrograman Prosedural
Pemrograman Prosedural adalah dilakukan dengan memberikan serangkaian perintah yang
berurutan. Paradigma ini didasari oleh konsep mesin Von Newman (stored program concept)
sekelompok tempat penyimpanan (memori), yang dibedakan menjadi memori instruksi dan
memori data, masing-masing memori tersebut dapat diberi nama dan nilai, selanjutnya instruksi
akan dieksekusi satu persatu secara sekuensial oleh sebuah proses tunggal.
Program dalam paradigma ini berdasarkan pada struktur informasi di dalam memori dan
manipulasi dari informasi yang disimpan tersebut. Kata kunci yang sering digunakan dalam
paradigma ini adalah:

Algoritma + Struktur Data = Program

Contoh bahasa pemrogaman yang menggunakan paradigma prosedural atau imperatif


adalah: Bahasa-bahasa tingkat tinggi seperti Cobol, Basic, Pascal, Fortran, dan C/C++ mendukung
kegiatan pemrograman prosedural, karena itu mereka dinamakan juga bahasa prosedural.

Kelebihan Prosedural:
1. Memiliki algoritma pemecahan masalah yanag sederhana, standar dan efektif.
2. Penulisan program memiliki struktur logika yang benar dan mudah dipahami
3. Program hanya terdiri dari 3(tiga) struktur dasar, yaitu struktur berurutan, struktur seleksi dan
struktur perulangan.
4. Memiliki dokumentasi yang baik.
5. Menghindari penggunaan pernyataan GOTO, yang akan menjadikan program tidak terstruktur
dengan baik.

Kekurangan Prosedural:
1. Program cukup sulit untuk proses perawatan

2|Page
2. Fungsi yang tersedia, susah untuk diubah tanpa harus mempengaruhi fungsi sistem secara
keseluruhan.
3. Butuh usaha yang keras untuk menterjemahkan Business Models dalam programming models.
4. Mungkin dapat bekerja dengan baik pada saat terisolasi tapi tidak pada saat terintegrasi dengan
sistem lain.

Pemrograman berbasis objek (PBO)


Pemrograman berorientasi objek merupakan paradigma pemrograman yang
berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam
kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek
dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.

Sebagai contoh, manusia adalah suatu objek yang memikiki data – data (misalnya: nama,
jenis kelamin, tinggi badan, berat badan, dan yang lainnya) dan juga method (misalnya: cara bicara,
cara berjalan, cara marah, dan sebagainya). Sehingga dapat diambil suatu pokok dasar bahwa titik
berat pemrograman berorientasi object adalah pembagian tanggung jawab kepada masing masing
object dan bukan pembagian berdasarkan proses kerja.
Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP)
merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi
di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika
pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim
pesan ke objek lainnya.

3|Page
Berikut adalah Bahasa Pemograman yang mendukung OOP antara lain:
1. Visual Foxpro
2. Java
3. C++
4. Pascal (bahasa pemrograman)
5. Visual Basic.NET
6. SIMULA
7. Smalltalk
8. Ruby
9. Python
10. PHP
11. C#
12. Delphi
13. Eiffel
14. Perl
15. Adobe Flash AS 3.0

Kelebihan PBO:
1. Dalam menggunakan sebuah class cukup sekali tidak perlu dituis berkali-kali.
2. Dapat menambahkan fitur pada class tanpa mengedit class asal.
3. Menggunakan objek tanpa harus tahu teknis yang ada didalamnya.
4. Data yang digunakan dalam bentuk private hanya bisa di akses oleh fungsi lokasi, sehingga
tidak perlu khawatir untuk berpengaruh pada fungsi lainnya.
5. Dalam pembuatan library sangat mudah dalam penggunaan. Library java kian bertambah
karena meningkatnya dalam pembangunan aplikasi sehingga library juga ikut meningkat untuk
memudahkan programer dalam pembangunan aplikasi. Serta tampilan yang cukup rapi.
6. Memiliki sintak seperti bahasa C maupun C++.
7. Dapat mengatur memori secara langsung tanpa programer mengatur memori secara manual.

4|Page
Kelemahan PBO:
1. Memiliki memori lebih besar dibandingkan dengan program terstruktur.
2. Mudah mengembalikan kode jadi menjadi kode sumber sehingga algoritma yang digunakan
pun sulit untuk disembunyikan dan mudah dibajak.

c. Introduction to java
Java adalah salah satu bahasa pemrograman berorientasi objek yang dikembangkan oleh
Sun Microsystems sejak tahun 1991. Bahasa ini dikembangkan dengan model yang mirip dengan
bahasa C++ dan Smalltalk, namun dirancang agar lebih mudah dipakai dan -platform independent,
yaitu dapat dijalankan di berbagai jenis sistem operasi dan arsitektur komputer--. Oleh karena itu,
Java bisa dipergunakan dalam pembangunan software berbasis web, desktop, mobile, dan lainnya.
Platform independent berarti program yang ditulis dalam bahasa Java dapat dengan mudah
dipindahkan antar berbagai jenis sistem operasi dan berbagai jenis arsitektur komputer. Aspek ini
sangat penting untuk dapat mencapai tujuan Java sebagai bahasa pemrograman Internet di mana
sebuah program akan dijalankan oleh berbagai jenis komputer dengan berbagai jenis sistem
operasi. Sifat ini berlaku untuk level source code dan binary code dari program Java. Berbeda
dengan bahasa C dan C++, semua tipe data dalam bahasa Java mempunyai ukuran yang konsisten
di semua jenis platform. Source code program Java sendiri tidak perlu dirubah sama sekali jika
Anda ingin mengkompile ulang di platform lain. Hasil dari mengkompile source code Java
bukanlah kode mesin atau instruksi prosesor yang spesifik terhadap mesin tertentu, melainkan
berupa bytecode yang berupa file berekstensi .class. Bytecode tersebut dapat langsung Anda
eksekusi di tiap platform yang dengan menggunakan Java Virtual Machine (JVM) sebagai
interpreter terhadap bytecode tersebut.
JVM sendiri adalah sebuah aplikasi yang berjalan di atas sebuah sistem operasi dan
menerjemahkan bytecode program Java dan mengeksekusinya, sehingga secara konsep bisa
dianggap sebagai sebuah interpreter.

5|Page
Dengan cara ini, sebuah program Java yang telah dikompilasi akan dapat berjalan di platform
mana saja, asalkan ada JVM di sana. Kompiler dan interpreter untuk program Java berbentuk Java
Development Kit (JDK) yang diproduksi oleh Sun Microsystems. JDK ini dapat didownload gratis dari
situs java. Interpreter untuk program Java sendiri sering juga disebut Java Runtime atau Java Virtual
Machine. Interpreter Java, tanpa kompilernya, disebut Java Runtime Environment (JRE) dapat
didownload juga di situs yang sama. Untuk mengembangkan program Java dibutuhkan JDK, sementara
jika hanya ingin menjalankan bytecode Java cukup dengan JRE saja.

d. Latihan
a. Latihan 1
Menganalisa dan membenahi kesalahan pada program
Tulislah program berikut ini dan simpanlah dengan nama Greeting.java

Lakukan kompilasi pada file tersebut dan amati hasilnya. Benahilah sehingga program tersebut
dapat berjalan dengan baik.

b. Latihan 2
Menganalisa dan membenahi kesalahan pada program

6|Page
c. Latihan 3
Menganalisa dan membenahi kesalahan pada program

d. Latihan 4
Menganalisa dan membenahi kesalahan pada program

7|Page
Pertemuan 2
Classes and object

1. Pokok Bahasan
a. The difference between class and object, by giving some examples
Kelas merupakan konsep pokok di bahasa pemograman berorientasi object, demikian juga
di Java. Kelas merupakan bentuk logis yang menjadi landasan bangun seluruh bahasa pemograman
berorientasi object. Kelas mendefinisikan bentuk dan perilaku object. Kelas sungguh sangat
penting di Java. Sembarang konsep/abstraksi yang diimplementasikan di Java harus di kapsulkan
di kelas. Kelas adalah tipe data abstrak yang dilengkapi implementasi parsial atau total. Kelas
mendeskripsikan kelompok object dengan properti-properti (atribut-atribut) serupa, perilaku
(operasi-operasi) yang common, keterhubungan terhadap himpunan object-object lain dan
semantik yang common. Kelas (class) merupakan contoh abstrak dari sebuah object yang telah
terbentuk dari proses penyederhanaan.
Pemrograman berorientasi objek, objek adalah entitas dasar saat runtime. pada saat kode
program dieksekusi, objek berinteraksi satu sama lain tanpa harus mengetahui detil data atau
kodenya. interaksi antar objek ini dilakukan menggunakan suatu message. objek memiliki suatu
siklus hidup, yaitu diciptakan, dimanipulasi, dan di hancurkan.

Perbedaan antara objek dengan class.


Objek:
1. Secara sederhana, objek merupakan segala sesuatu yang dapat dibedakan satu sama lainnya.
Segala sesuatu yang ada di alam semesta ini adalah objek. Contohnya: manusia, mobil, hewan,
tumbuhan, tempat, atau bahkan yang tidak bersifat fisik seperti kejadian atau konsep-konsep.
Sehingga bisa disimpulkan bahwa objek tidak harus bersifat fisik, karena jika dikaitkan dengan
OOP objek akan menjadi bentuk logis.Suatu entitas yang mampu menyimpan informasi
(status) dan mempunyai operasi (kelakuan) yang dapat diterapkan atau dapat berpengaruh pada
status objeknya.

8|Page
2. Objek dalam konsep OOP masih memiliki keadaan dan sifat seperti halnya objek di dunia
nyata, karena pada dasarnya objek dalam OOP merupakan representasi dari dunia nyata. Objek
dalam OOP merepresentasikan keadaan melalui variabel, sedangkan sifatnya
direpresentasikan menjadi method. Method merupakan suatu fungsi (sub-routine) yang
berhubungan dengan objek.
3. Dalam konteks OOP, objek adalah instansiasi (yang dibentuk secara seketika) dari kelas pada
saat eksekusi (seperti halnya deklerasi variabel pada pemograman prosedural).
4. Jadi semua objek adalah instan dari kelas.
5. Obyek merupakan hasil instansiasi dari suatu kelas.
6. Sehingga kelas digunakan untuk menciptakan banyak objek
7. Proses pembentukan obyek dari suatu class disebut dengan instantiation.
8. Obyek disebut juga instances.

Karakteristik objek:
1. Setiap obyek memiliki atribut sebagai status.
2. Setiap obyek memiliki tingkah laku (behavior).

Contoh: objek sepeda


Memiliki atribut (state): pedal, roda, jeruji, warna, jumlah roda.
Memiliki tingkah laku (behavior): kecepatanya menaik, kecepatannya menurun, perpindahan gigi
sepeda.

Class:
1. Class merupakan suatu konsep yang lebih tinggi lagi hierarkinya dari objek yang dihasilkan
dari proses generalisasi objek-objek yang memiliki beberapa ciri yang sama. Dalam OOP,
kelas merupakan suatu hasil pemodelan fakta-fakta dari suatu objek yang berguna bagi suatu
aplikasi yang diprogram. Proses pemodelan fakta-fakta tersebut disebut dengan abstraksi.
2. Dalam suatu sistem, sering kali ditemui beberapa obyek sejenis
3. Beberapa obyek sejenis dapat di-identifikasi sebagai suatu kelas (class)
4. Kelas mendefinisikan bentuk dan perilaku objek

9|Page
5. Kelas adalah template/ prototype yang mendefinisikan Type objek
6. Merupakan sarana pengkapsulan kumpulan data danmetode-metode yang beroperasi pada
kumpulan data
7. Kelas merupakan “cetakan” (blueprint) dari suatu obyek
8. Dari suatu kelas kita dapat membuat obyek-obyek baru yang masing-masing dapat memiliki
keadaan yang berbeda-beda.
9. Dalam suatu sistem, sering kali ditemui beberapa obyek sejenis
10. Beberapa obyek sejenis dapat di-identifikasi sebagai suatu kelas (class)
11. Kelas mendefinisikan bentuk dan perilaku objek
12. Kelas adalah template/ prototype yang mendefinisikan Type objek
13. Merupakan sarana pengkapsulan kumpulan data danmetode-metode yang beroperasi pada
kumpulan data.
14. Kelas merupakan “cetakan” (blueprint) dari suatu obyek
15. Dari suatu kelas kita dapat membuat obyek-obyek baru yang masing-masing dapat memiliki
keadaan yang berbeda-beda.

Perhatikan table dibawah ini untuk perbedaan kelas dan object dalam OOP.
Class object
class merupakan rancangan (design) Object merupakan perwujudan suatu class
class bersifat abstract Object bersifat konkrit

10 | P a g e
b. Making a simple first object (Fokus: first programming with java).
Class pada JAVA
Contoh class

11 | P a g e
Membuat Objek
Class menyediakan "blueprint" untuk objek jadi pada dasarnya,sebuah objek dibuat dari class.Di
java, kata kunci "new" digunakan untuk membuat objek baru.
Ada tiga langkah membuat objek dari class:
Deklarasi: Deklarasi variabel dengan nama variabel dan jenis objek.
Instansiasi: kata kunci "new" digunakan untuk membuat objek.
Inisialisasi: kata kunci "new" diikuti dengangan panggilan untuk konstuktor, panggilan ini
menginisialisasi objek baru.

Berikut contoh membuat objek dibawah ini.

Jika code diatas benar maka hasilnya seperti berikut.

12 | P a g e
c. Primitive and reference: Type, keywords, reference variable, object declaration &
assignment, objects in garbage collector, arrays.
Tipe Data Primitif
Tipe data adalah hal yang penting dalam konsep pemrograman. Tipe data ini akan
membantu kita dalam membedakan setiap variabel yang kita buat. Java memiliki tipe data primitif,
yaitu tipe data yang tidak diturunkan dari objek manapun. Java memiliki 8 tipe data primitif
diantaranya boolean, char, byte, short, int, long, float, dan double. Berikut penjelasan mengenai 8
tipe data diatas.
1. Boolean adalah tipe yang mengharuskan operannya bernilai boolean (true atau false). Boolean
literal tidak boleh berharga 0 atau 1. Boolean tidak memiliki range dan nilai default-nya adalah
false. Tipe boolean adalah tipe yang menjadi hasil dari operator logika. Panjang tipe boolean
adalah 16 bit.
2. Char adalah tipe data yang memilik panjang 16 bit sama dengan boolean. Panjang karakter
sebesar ini karena berada pada rentang 0 sampai dengan 65.536. Kumpulan karakter standar
(yang biasa disebut dengan karakter ASCII) berada pada rentang nilai 0 sampai 127, dan
perluasan sekumpulan karakter 8-bit (ISO-Latin-1) rentang nilainya 0 sampai 255. Nilai
karakter ini diapit dengan tanda petik tunggal. Nilai default dari tipe data ini adalah ‘\u0000’.
3. Byte adalah tipe data integral 8 bit. Memiliki rentang nilai antara -27 sampai 27 – 1 atau dari -
128 sampai 127. Nilai default dari tipe data byte adalah 0.
4. Short adalah tipe data integral 16-bit. Tipe Memiliki rentang nilai antara -215 sampai 215 – 1
atau dari -32768 sampai 32767. Nilai default dari short adalah 0.
5. Int adalah tipe data Integral 32-bit. Memiliki rentang nilai antara -231 sampai 231 – 1 atau dari
-2,147,483,648 sampai 2,147,483,647. Nilai default dari tipe data int adalah 0.
6. Long adalah tipe data Integral 64-bit. Memiliki rentang nilai antara -263 sampai 263 – 1 atau
dari -9,223,372,036,854,775,808 sampai 9,223,372,036,854,775,807. Nilai default dari tipe
data long adalah 0L, jika tidak diberi akhiran L memiliki default litral int.
7. Float adalah tipe data Floating Point 32-bit. Nilai literalnya mengandung pecahan (dipisahkan
dengan tanda titik ‘.’). Nilai default dari tipe data float adalah 0.0F, jika tidak diberi akhiran F
memiliki default nilai literal double.
8. Double adalah tipe data Floating Point 64-bit. Nilai default dari ipe data double adalah 0.0.

13 | P a g e
d. Object cycle: life and death
Pada prinsipnya objek adalah sebuah pointer. Selama tidak bersifat static, programmer
dapat melakukan sesuatu hanya terhadap objek tertentu dari kelas.
Siklus Hidup Objek
Suatu objek di java, terlebih dahulu harus dideklarasikan, setelah itu mengalami pembuatan,
penggunaan, kemudian penghancuran.

Siklus Hidup Thread Pada Java


Siklus Hidup Thread Pada Java: Description: Suatu thread bisa berada dalam salah satu
kondisi berikut: Baru: Objek thread baru saja dibuat, akan tetapi belumSuatu thread bisa berada
dalam salah satu kondisi berikut :
1. Baru: Objek thread baru saja dibuat, akan tetapi belum mulai dijalankan, sehingga belum bisa
berbuat apa-apa.
2. Bisa-jalan: Artinya objek ini sudah dimulai dan sudah bisa dijalankan oleh mekanisme
pembagian waktu oleh CPU. Sehingga thread ini bisa jalan kapan saja, selama diperintahkan
oleh penjadwal thread.
3. Mati: suatu thread biasanya mati ketika selesai menjalankan metode run(). Sebelumnya, kita
bisa memanggi metode stop(), akan tetapi program bisa berada dalam kondisi tidak stabil jika

14 | P a g e
metode ini dipanggil. Kita akan lihat beberapa metode lain untuk menghentikan thread di
bagian berikutnya.
4. Diblok : Thread seharusnya bisa berjalan, akan tetapi ada yang menghalanginya. Salah satunya
adalah jika thread menunggu di bagian kritis sementara ada thread lain yang sedang
menjalankan bagian kritis tersebut. Ketika suatu thread berada dalam kondisi diblok,
penjadwal thread akan mengabaikannya dan tidak memberikan waktu CPU.

e. Constructor and Garbage collector


Construktor adalah Constructor merupakan suatu method yang akan memberikan nilai
awal pada saat suatu objek dibuat. Pada saat program dijalankan, constructor akan bekerja dengan
constructor, hal mendasar yang perlu diperhatikan, yaitu:
1. Nama Constructor sama dengan nama Class.
2. Tidak ada return type yang diberikan kedalam Constructor Signature.
3. Tidak ada return stetement, didalam tubuh constructor.

15 | P a g e
Contoh programnya dengan menghitung volum kotak.
class Kotak {
double panjang;
double lebar;
double tinggi;

//Mendefenisikan constructor dengan parameter


kotak(double p, double l, double t) {
panjang = p;
lebar = l;
tinggi = t;

}
double hitungVolume() {
return (panjang * lebar * tinggi)
}
}
class DemoConstructor2 {
public static void main(String[] args) {

kotak k1, k2;


k1 = new kotak(4, 3, 2)
k2 = new kotak (6, 5, 4)

system.out.println(“volume k1 = “ + k1.hitungVolume() }
system.out.println(“volume k2 = “ + k2.hitungVolume() }
}
}

16 | P a g e
2. Latihan
Buatlah class hewan seperti berikut

17 | P a g e
Pertemuan 3
Encapsulation

1. Pokok Bahasan
a. Why do we need encapsulation?
Enkapsulasi merupakan sebuah proses penggabungan antara data-data dan fungsi-fungsi
yang berkaitan ke dalam sebuah objek. Dengan demikian, kita dapat membuat program yang
terintegrasi, tanpa harus mendeklarasikan variabel-variabel yang bersifat eksternal. Istilah yang
digunakan, untuk menyebut data-data yang terdapat dalam suatu objek adalah data members,
sedangkan fungsi-fungsi yang terdapat di dalamnya dikenal dengan istilah member functions.
Definisi enkapsulasi: Pembungkusan variabel dan method dalam sebuah obyek yang terlindungi.
Encapsulation merupakan teknik yang membuat variabel/field class menjadi bersifat privat
dan menyediakan akses ke variabel/field melalui public method. Jika field di deklarasikan sebagai
private, maka field ini tidak bisa diakses oleh siapapun diluar class, dengan demikian field
disembunyikan di dalam class. Dengan kata lain encapsulation juga berfungsi untuk
menyembunyikan data.
Encapsulation juga merupakan tembok penghalang yang mencegah kode atau data diakses
oleh data lain di luar class. Akses ke kode dan data di kontrol melalui interface. Manfaat utama
teknik encapsulation adalah kita mampu memodifikasi kode tanpa merusak kode yang telah
digunakan pada class lain.

18 | P a g e
b. Object state
Object adalah dasar dari modularitas dan struktur dalam sebuah program komputer ber-
orientasi objek. Fungsinya membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah
program komputer.

19 | P a g e
State adalah variabel-variabel yang dideklarasikan di dalam class.
Contohnya:

c. Instance variable vs local variables


Variable adalah lokasi di dalam memori yang digunakan untuk menyimpan sebuah nilai
atau value, dimana nilai tersebut dapat berubah sewaktu-waktu. Setiap variable di Java, pasti sama
seperti bahasa pemrograman lainnya yaitu mempunyai nama, tipe data, dan nilai yang menentukan
ukuran dan letak variable di memori.
Di bawah ini adalah sintak untuk membuat variable di Java:
tipe_data nama_variable [=nilai] [, nama_variable [=nilai]..]

Agar lebih jelasnya, bisa langsung lihat contoh dibawah ini:


int a, b, c; //deklarasi tiga variable bertipe int yaitu a, b, dan c
int a = 10, b = 5, c = 14; //memberi nilai pada variable a, b, dan c
double ipk = 3.50;
char a = 'a';

20 | P a g e
Java mempunyai 3 macam variable, yaitu:
1. Local Variable
2. Instance Variable
3. Static/Class Variable

Local Variable
Local variable adalah variable yang di deklarasikan di dalam method, konstruktor ataupun blok
statement.
Dilarang memberikan access modifier pada local variable.
Local variable tidak mempunyai default value, so kita haru mendeklarasikan dan memberi nilai
sebelum variable itu digunakan.
Contoh penggunaan local variable:

Instance Variable
Instance variable adalah variable yang di deklarasikan di dalam kelas tetapi diluar method,
konstruktor maupun blok statement.
Instance variable dibuat ketika sebuah objek dibuat yaitu menggunakan keyword "new". Instance
variable dihancurkan (destroyed) ketika sebuah objek dihancurkan.
Instance variable dapat menggunakan access modifier seperti private, public, protected, dan
default.
21 | P a g e
Contoh Program:

Class/Static Variable
Class variable atau static variable adalah variable yang di deklarasikan dengan menggunakan
keyword "static". Class variable di deklarasikan di dalam kelas, tetapi diluar method atau blok
statement.
Static variable biasanya digunakan dalam mendefiniskan konstanta, yaitu variable yang
mempunyai nilai tetap atau tidak dapat dirubah.
Sintak dasar konstanta adalah public/prive static final nama_konstanta.

22 | P a g e
Static variable dibuat ketika program dijalankan dan dihancurkan ketika program berhenti.
Static variable mempunyai nilai default sama seperti instance variable, yaitu jika bertipe number
maka nilai defaultnya 0, sedangkan kalau bertipe boolean maka nilai defaultnya false, dan kalau
bertipe objek, maka nilai defaultnya adalah null.
Contoh program

d. Methods argument and return type


Methods argument
Method adalah implementasi operasi yang bisa di lakukan oleh Class dan Object. Operasi – operasi
yang dilakukan oleh method, diantaranya, yaitu:
1. Suatu Method bisa menerima dan memanipulasi data atau field didalam diri Method tersebut.
2. Suatu Method bisa mempengaruhi nilai suatu object lain.

Method melakukan:
1. Memanipulasi data
2. Perhitungan matematika
3. Mengontrol proses
4. Memonitori kejadian dari suatu event

23 | P a g e
Untuk membuat atau menciptakan suatu method ada 4 bagian yang mendasar yaitu:
1. Nama Method
2. Daftar parameter-parameter
3. Tipe objek atau tipe primitive (tipe data) yang di kembalikan method
4. Badan program method

Suatu method memiliki dua jenis di java:


1. Method yang di sediakan di java itu sendiri, antara lain
a. Println
b. Nextlnt
c. Equals
d. Etc

2. Method yang dapat kita buat sendiri


Untuk membuat method yang di buat sendiri di java, sintaksnya yaitu:

Return type
Return type ini digunakan dalam metode untuk mengembalikan sebuah nilai.
Misalkan sebagai contoh, kita bisa mendefinisikan sebuah metode bernama sum yang
mengembalikan jumlah dari dua parameter

24 | P a g e
Pada gambar diatas dicontohkan kodingan lengkap return type dengan membuat method sum
dengan parameter int a dan int b lalu membuat return type a+b setelah itu panggil pada method
main beberapa inputan. Lalu jalankan dan hasilnya sesuai rumus dan perlu diingat jika sebuah
method tidak mengembalikan nilai apapun kita tidak perlu menggunakan return type perhatikan
gambar dibawah ini:

25 | P a g e
e. Pass by value
Pass By Value dan Pass By Reference merupakan metode dalam mengirimkan parameter
ke dalam sebuah fungsi / dalam java disebut method . Pass By Value melewatkan parameter
berdasarkan nilainya. Disini nilai parameter aktual akan dilewatkan pada saat pemanggilan method
akan disalin ke parameter formal sehingga perubahan nilai pada method, tidak akan berpengaruh
terhadap argument yang digunakan untuk memanggil method tersebut. Dengan kata lain,
perubahan nilai tersebut hana akan dikenali pada method yang bersangkutan saja. Pass By
Reference melewatkan parameter berdasarkan referensinya. Pada cara ini , referensi dari argumen
(bukan nilai argumen) akan dilewatkan kedalam parameter formal, bukan disalin. Dengan
demikian, nilai yang digunakan di dalam method akan sama dengan nilai yang di tunjuk referensi.
Melalui cara ini setiap perubahan nilai yang terjadi pada method juga akan berpengaruh terhadap
argumen yang digunakan untuk memanggilnya.
Di dalam java kita tidak dapat secara eksplisit melewatkan parameter berdasarkan nilai
(value) ataupun referensinya. Mengapa demikian ?, Karena, setiap internal java akan melakukan
hal tersebut secara otomatis. Cara yang diambil java untuk melewatkan parameter tergantung dari
tipe argument yang digunakan pada saat pemanggilan method. Apabila parameter ber tipe
sederhana (seperti int, char, bolean, dll), maka java akan menggunakan metode pass by value.
Namun apabila parameter berupa objek, maka java akan menggunakan metode pass by reference.
Untuk lebih jelasnya, kita langsung saja lihat contoh program dibawah ini !

26 | P a g e
Di bawah ini contoh program yang berisikan fungsi dengan menggunakan dua metode penerapan
parameter.

27 | P a g e
Dengan hasil output:

28 | P a g e
f. Getters and setters
Setter sering digunakan untuk meng - set isian data ke dalam variable,
Getter digunakan untuk mengambil isian data dan di returnkan atau dikembalikan.
Constructor yaitu fungsi yang menyatukan/dapat kita simpulkan untuk mengisi data variable
secara keseluruhan tetapi ingat dalam menggunkan constructor harus samakan dulu varialbelnya.
Ini contoh kelasnya, kelas ContohKelasPakaiGetterSetter:

29 | P a g e
Contoh kelas yang memanggil kelas ContohKelasPakaiGetterSetter di atas:

Bila kelas KelasPemanggilGetterSetter ini dieksekusi, menghasilkan output seperti ini:

Coba kita tinjau kelas ContohKelasPakaiGetterSetter. Dalam kelas ini terdapat tiga buah atribut:
nama  akses level: private
alamat  akses level: protected
Jurusan  akses level: protected
nim  akses level: private

30 | P a g e
Kemudian terdapat method getter dan setter yang akses levelnya diset public.
public String getNim()  ngambil nilai atribut nim
public String getNama()  ngambil nilai atribut nama
public String getAlamat()  ngambil nilai atribut alamat
public String getJurusan()  ngambil nilai atribut Jurusan
public void setNim(String nim)  mengeset nilai atribut nim
public void setNama(String nama)  mengeset nilai atribut nama
public void setAlamat(String alamat)  mengeset nilai atribut alamat
public void setJurusan(String jurusan)  mengeset nilai atribut Jurusan

Sekarang kita perhatikan kelas KelasPemanggilGetterSetter. Kelas ini tidak secara langsung
mengakses atribut pada kelas ContohKelasPakaiGetterSetter. Untuk mengaksesnya digunakan
method getter dan setter yang sudah disediakan di kelas ContohKelasPakaiGetterSetter. Ini
contohnya:

ContohKelasPakaiGetterSetter objekKelas_1 = new ContohKelasPakaiGetterSetter();


objekKelas_1.setNim(“AAA111”);
objekKelas_1.setNama(“PAK BEYE”);
objekKelas_1.setAlamat(“Cigondewah”);
objekKelas_1.setJurusan(“Ilmu Palak”);

Untuk mengambil nilai atribut digunakan method getter:


String nim_1 = objekKelas_1.getNim();
String nama_1 = objekKelas_1.getNama();
String alamat_1 = objekKelas_1.getAlamat();
String jurusan_1 = objekKelas_1.getJurusan();

31 | P a g e
2. Latihan
Tulis Source Code Bus.java berikut:

Tulis Source Code UjiBus.java berikut:

Output?
Mengapa bisa demikian? Jawaban: Karena penumpang melebihi penumpang maksimum.

32 | P a g e
Pertemuan 4
Class relationship (class diagram)

1. Pokok Bahasan
a. Association, aggregation, composition
Assosiation (Assosiasi)
Assosiasi adalah hubungan antara object. Relasi assosiasi biasa disebut is “a” relationship.
Assosiasi berarti bahwa sebuah object “menggunakan” object yang lain. Assosiasi adalah sebuah
relasi dimana semua object memiliki lifecycle nya sendiri dan tidak ada yang bertindak sebagai
owner.
Contoh Teacher dan Student. Banyak Student dapat berasosiasi dengan satu Teacher dan
satu Student dapat berasosiasi dengan banyak Teacher. Object keduanya bisa dibuat dan
dihancurkan secara mandiri tanpa berpengaruh pada eksistensi object lain.

Aggregation (Agregasi)
Agregasi adalah bentuk hubungan yang lebih khusus dari Assosiasi dimana sebuah object
memiliki lifecycle nya sendiri tapi dengan kepemilikan dan class child tidak dapat memiliki class
parentnya. Relasinya biasa di sebut relasi “has-a”.
Sebagai contoh, Department dan Teacher. Satu Teacher tidak dapat memiliki banyak
Department, tapi jika kita menghapus object Department, object Teacher tidak akan ikut terhapus.
Contoh:

33 | P a g e
Karena object teacher di buat di luar object department, sehingga jika object department
dihancurkan maka object teacher tetap exist. Object department bisa memiliki banyak object
teacher yang berasosiasi dengannya, tapi tidak sebaliknya. Sehingga dalam relasi ini object
department adalah owner dari object teacher.

Relasi Agregasi disebut juga Weak Assosiation dan dalam UML disimbolkan seperti ini:

34 | P a g e
Composition (Komposisi)
Komposisi sama dengan relasi Agregasi, tapi lebih spesfic lagi yaitu lifecycle object bergantung
pada object ownernya.

Pada contoh ini class University bertindak sebagai object owner seperti pada relasi
Agregasi di atas. Karena object electricalDepartment dan biologyDepartment di buat di dalam
object univerty sehingga jika object university dihancurkan, maka object electricalDepartment dan
biologyDepartment akan tidak exist lagi.

35 | P a g e
Relasi Komposisi disebut juga Strong Association atau Death Relationship dan disimbolkan dalam
UML seperti ini:

2. Latihan
Buatlah hubungan agregasi antar kelas dengan asumsi sebagai berikut:
Ada sebuah kelas provinsi dimana provinsi tersebut terdiri dari berbagai kabupaten, dalam kelas
kabupaten tersebut terdapat berbagai atribut dan method. Karena di dalam provinsi terdapat
kabupaten oleh sebab itu saya memasukkan kelas kabupaten menjadi atribut kelas provinsi.
Jawab:

36 | P a g e
Provinsi.java

37 | P a g e
KabKota.java

Utama.java

38 | P a g e
Pertemuan 5
Inheritance

1. Pokok Bahasan
a. Why do we need inheritance?
Dengan konsep inheritance, sebuah class dapat mempunyai class turunan. Suatu class yang
mempunyai class turunan dinamakan parent class atau base class. Sedangkan class turunan itu
sendiri seringkali disebut subclass atau child class. Suatu subclass dapat mewarisi apa-apa yang
dipunyai oleh parent class-nya. Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah
tidak lain hanya memperluas (extend) parent class-nya.
Di dalam Java untuk mendeklarasikan suatu class sebagai subclass dilakukan dengan cara
menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama
parent class-nya. Berikut adalah contoh deklarasi inheritance.
Contoh:

Contoh diatas memberitahukan kompiler Java bahwa kita ingin meng-extend class A ke
class B. Dengan kata lain, class B adalah subclass (class turunan) dari class A, sedangkan class A
adalah parent class dari class B.
Java hanya memperkenankan adanya single inheritance. Konsep single inheritance hanya
memperbolehkan suatu sublass mempunyai satu parent class. Dengan konsep single inheritance
ini, masalah pewarisan akan dapat diamati dengan mudah.
Suatu parent class dapat tidak mewariskan sebagian member-nya kepada subclass-nya.
Sejauh mana suatu member dapat diwariskan ke class lain, ataupun suatu member dapat diakses
dari class lain, sangat berhubungan dengan access control (kontrol pengaksesan). Di dalam java,
kontrol

39 | P a g e
Pengaksesan dapat digambarkan dalam tabel berikut ini:

Kata kunci super dipakai untuk merujuk pada member dari parent class, sebagaimana kata kunci
this yang dipakai untuk merujuk pada member dari class itu sendiri.
Ada beberapa hal yang harus diingat ketika menggunakan pemanggil constuktor super:
1. Pemanggil super() HARUS DIJADIKAN PERNYATAAN PERTAMA DALAM constructor.
2. Pemanggil super() hanya dapat digunakan dalam definisi constructor.
3. Termasuk constructor this() dan pemanggil super() TIDAK BOLEH TERJADI DALAM
constructor YANG SAMA.

Contoh:

b. How inheritance promotes software reusability


Perngertian dari inheritance adalah dimana sebuah objek dapat mempunyai objek turunan.
Dalam hal pemrogramman makan dapat diimpelementasikan dengan sebuah class yang
mempunyai class turunan. Class yang mempunyai class turunan disebut sebagai Parent Class atau
Base Class, sedangkan class yang menjadi turunan dari Parent Class disebut sebagai Subclass atau
Child Class. Secara sederhana misal Hewan adalah parent class maka child class bisa berupa ayam,
kucing, bebek.

40 | P a g e
Suatu subclass dapat mewarisi sebagian atau keseluruhan sifat dari parent class-nya, denga kata
lain sebuah subclass hanya merupakan perluasan dari parent class.

Dekalarasi Inheritance
Cara untuk mendeklarasikan inheritance adalah dengan memberikan keyword extends
setelah nama class diikuti denga nama parent class.Kata kunci extends memberikan informasi pada
kompiler Java bahwa kita ingin melakukan perluasan class.

Contoh dari deklarasi inheritance:


Definisi parent class a

Definisi child class B yang meripakan turunan dari class A

Pada dasarnya semua class dalam Java merupakan turunan atau subclass dari super class Object.
Contohnya misalkan ada sebuah class:

41 | P a g e
Maka pada saat compilasi compiler Java akan membacanya sebagai subclass dari parent class
Object:

c. Designing for inheritance


Kita menggunakan inheritance apabila ditemukan Class yang dapat diperluas menggunakan class
lain.Misalnya kita mempunyai kelas Pegawai:

Selain itu kita juga mempunyai Class Manajer:

42 | P a g e
Dari dua class diatas kita dapat melihat bahwa class Manajer mempunyai data member
yang identik dengan class Pegawai ,hanya saja ada tambahan member Departemen.Sebenarnya
class Manajer merupakan perluasan dari class Pegawai dengan tambahan data member
Departemen.Maka kita perlu menggunakan konsep inheritance untuk kasus diatas.Sehingga class
Manajer dapat kita tuliskan sebagai berikut.

d. Superclass and subclass relationship & access modifier


Dalam terminologi java, kelas induk yang diturunkan disebut dengan superclass. Sedangkan kelas
baru hasil turunan disebut subclass. Pada proses penurunan kelas, kelas turunan akan mewarisi
sifat-sifat yang terdapat pada kelas induknya. Selanjutnya, kelas turunan tersebut dapat memiliki
sifat spesifik yang sebelumnya tidak dimiliki oleh kelas induk.
Berikut contoh dengan ilustrasi hierarkhi binatang:

Superclass
Superclass atau dapat disebut dengan class induk digunakan untuk menunjukkan hirarki class yang
berarti class dasar dari subclass/class anak.

Subclass
Subclass adalah class anak atau turunan secara hirarki dari superclass.

43 | P a g e
Access Modifier
Access Modifier adalah sebuah “hak akses” yang diberikan kepada sebuah variabel/method/class
dengan tujuan untuk menjaga integritas dari data tersebut ketika ingin diakses object lain. Hak
akses sendiri diberikan oleh pembuat program sebagai salah satu bentuk implementasi dari OOP
itu sendiri. Dengan adanya Access Modifier, kita dapat membatasi resource-resource mana saja
yang dapat diakses oleh object tertentu, turunannya, ataupun oleh method tertentu.
Di bahasa JAVA sendiri ada 4 jenis access modifier yang dapat digunakan:

e. Method Overriding
Overriding
Method overriding merupakan method yang parrent class yang ditulis kembali oleh subclass.
Aturan dari method overriding pada Java :

1. Parameter yang terdapat pada method overriding di subclass harus sama dengan parameter
yang terdapat pada parent class.
2. Aturan hak akses, hak akses method overriding di subclass tidak boleh lebih ketat di
bandingkan dengan hak akses method pada parent class.

Berikut ini contoh overriding:

44 | P a g e
45 | P a g e
2. Latihan
a. Latihan 1
Menggunakan kata kunci super
Berikut ini listing penggunaan kata kunci super untuk membedakan atribut superclass dengan
atribut subclass.

Ketika program tersebut dijalankan, akan tampak hasil seperti dibawah ini:

46 | P a g e
Pertemuan 6
Polymorphism

1. Pokok Bahasan
a. Why do we need polymorphism?
Polymorphism adalah salah satu dari tiga kemampuan yang mendasar yang dimiliki oleh
OOP, setelah data abstraction dan inheritance. Polymorphism menyediakan cara yang berbeda
pada pemisahan interface dari implementasinya, untuk memasangkan ulang apa dari bagaimana.
Polymorphism memberikan organisasi kode yang lebih baik dan kode menjadi lebih mudah dibaca,
juga memberikan suatu kemampuan pada program untuk berkembang secara terus menerus baik
pada tahap pengembangan awal ataupun pada saat ingin menambahkan kemampuan-kemampuan
yang baru.
Encapsulation membuat tipe data yang baru dengan mengkombinasikan karakteristik-
karakteristik dan perilaku-perilaku. Dengan menggunakan kata kunci private kita dapat
menyembunyikan interface dari implementasi. Cara yang seperti ini dapat memudahkan para
programmer yang mempunyai background prosedural. Tetapi polymorphism menangani
decoupling dalam bentuk types. Kita mengetahui kalau inheritance memperbolehkan perlakuan
yang sama pada object turunan maupun object asal. Kemampuan ini sangat penting karena
memperbolehkan beberapa tipe yang ada (turunan dari tipe asal yang sama) mendapat perlakuan
seperti kalau mereka itu satu tipe, dan hanya dibutuhkan satu kode saja untuk mengakses
keseluruhan tipe yang ada. Metode polymorphism ini memperbolehkan untuk memanggil satu tipe
untuk mengekspresikan perbedaannya dari tipe yang lainnya, yang sejenis, selama mereka
diturunkan dari tipe asal yang sama. Perbedaan ini diekspresikan melalui perbedaan-perbedaan
dalam perilaku dari metoda-metoda yang dapat kita panggil dari class asal.
Dalam pembahasan ini kita akan menjelaskan tentang polymorphism (juga disebut sebagai
dynamic binding atau late binding atau run-time binding) mulai dari yang paling dasar, dengan
contoh yang membeberkan tentang pengaruh polymophism dalam program yang akan dibuat.
Sebelumnya kita mengetahui kalau sebuah object dapat digunakan sebagai tipenya sendiri atau
sebagai object dari tipe asalnya. Mengambil handle sebuah object dan memperlakukannya sebagai

47 | P a g e
handle dari tipe asal disebut sebagai upcasting karena urutan dari cabang-cabang inheritance
digambarkan class asal terletak yang paling atas.
Kita juga akan menemui sebuah masalah seperti yang tertera dari kode berikut ini:

b. Polymorphism: in object declaration and assignment, in method argument and return type
Java itu pemrograman berorientasi objek jadi sepatutnya kita harus mempelajari objek pada
java,WAJIB :D. Dalam sebuah class pada java biasanya ada attribut dan method saat kelas tersebut
dipack jadi satu atau diinstansi jadilah sebuah objek yang terdapat sebuah state dan behaviour .
jadi objek pada OOP adalah sebuah instansi dari sebuah class yang mempunyai dua karakteristik
yakni state dan behaviour.
Contoh simple :
Objek Manusia
1. Manusia memiliki attribut (state) : rambut, warna kulit dan warna mata.
2. Manusia memiliki tingkah laku (behaviour) : ramah, menggunakan akalnya dan pemalu.

Membuat objek pada java :


a. Menggunakan keyword new
b. Attribut dan Method yang sudah dimiliki objek, dibuat dalam sebuah kelas.

Contoh simple membuat objek pada java :

Keterangan:
1. Manusia merupakan tipe data berupa class Manusia.
2. yusuf merupakan sebuah variabel.
3. new Manusia(); merupakan instansi class Manusia, ingat untuk membuat objek gunakan
keyword new.
4. Jadi yang mana objeknya?, yusuf merupakan sebuah objek karena variabel tersebut
insiallisasinya merupakan instansi dari sebuah class yakni class manusia.

48 | P a g e
c. Method overloading
Method Overloading adalah sebuah kemampuan yang membolehkan sebuah class mempunyai 2
atau lebih method dengan nama yang sama, yang membedakan adalah parameternya.
Pada method overloading perbedaan parameter mencakup:
1. Jumlah parameter
2. Tipe data dari parameter
3. Urutan dari tipe data parameter
Method Overloading juga dikenal dengan sebutan Static Polymorphism. Berikut ini contoh Class
yang melakukan Overloading.

49 | P a g e
Penggunaan pada class utama:

d. Constructor overloading (revisited) and superclass constructor


Overloading Konstruktor
Overloading Konstruktor adalah mekanisme dimana kita dapat membuat Konstruktor lebih dari
satu dalam satu Class, tapi dengan ketentuan setiap Konstruktor memiliki Parameter yang berbeda,
bisa berbeda jumlah Parameternya ataupun berbeda Type Data parameternya.
Contoh Class Orang yang memiliki dua buah Konstruktor:

Dimana Konstruktor yang pertama tidak memiliki Parameter, dan Konstruktor kedua memiliki
Parameter, dengan begitu, kita dapat menggunakan dua cara untuk membuat object dari kelas
Orang, yaitu dengan tanpa Parameter dan menggunakan Parameter, contoh sebagai berikut :

50 | P a g e
e. Calls to super (), this ()
Super Class
Subclass juga dapat memanggil constructor secara eksplisit dari superclass terdekat. Hal ini
dilakukan dengan pemanggil construktor super. Pemanggil constructor super dalam constructor
dari subclass akan menghasilkan eksekusi dari superclass constructor yang bersangkutan,
berdasar dari argumen sebelumnya.
Jika sebuah method mengoverride satu dari method superclass, kita bisa menggunakan method
yang dioverride tsb melalui penggunaan keyword super. Kita juga dapat menggunakan keyword
super utk menunjuk terhadap sebuah field yang tersembunyi (meskipun field tersembunyi tsb
dikucilkan).

51 | P a g e
This
Kata kunci this dipergunakan pada pembuatan kelas dan digunakan untuk menyatakan objek
sekarang. Untuk menghindari variabel yang sama antara variabel class dengan variabel property.
Contoh:

2. Latihan

52 | P a g e
Pertemuan 7
Interface and Abstract Classes

1. Pokok Bahasan
a. Why do we need abstract classes?
Pada Class abstract kita buat contoh seperti membuat superclass bernama LivingThing.
class ini mempunyai method tertentu seperti eat, sleep, dan walk. Akan tetapi, ada beberapa
method di dalam superclass yang sifatnya tidak dapat digeneralisasi. Kita ambil contoh, method
walk. Tidak semua kehidupan berjalan(walk) dalam cara yang sama. Ambil manusia sebagai misal,
kita manusia berjalan dengan dua kaki, dimana kehidupan lainnya seperti sapi berjalan dengan
empat kaki. Akan tetapi, beberapa ciri umum dalam kehidupan sudah biasa, itulah kenapa kita
inginkan membuat superclass umum dalam hal ini.

Berikut ini adalah perbedaan abstract class dan interface di Java.

53 | P a g e
b. Abstract vs concrete class
# Abstract Class :
- Mendefinisikan class yang bersifat abstrak
- Tidak dapat digunakan untuk membentuk objek
- Dapat memiliki method abstrak
- Digunakan sebagai base class untuk membentuk class konkrit (concrete class)
- Dibentuk dengan menggunakan kata kunci abstract pada saat definisi class
- Abstract class yaitu sebuah class setengah jadi (abstrak) yang memuat/memiliki method dan
atrribut.
- Abstract class sebenarnya adalah sebuah class, sehingga memiliki semua sifat dari class biasa
(punya konstruktor).
- Abstract class akan selalu menjadi superclass / hirarki tertinggi dari subclass-subclass-nya.
- Abstract class mempunyai setidaknya satu abstract method.
- Bila subclass method abstract tidak mengimplementasikan isi semua method maka subclass
tersebut harus dideklarasikan abstract.

* Kegunaan abstract class :


- Class Abstract berisi beberapa method dan beberapa method abstract. Class Abstract berisi
sebagian implementasi, dan subclass yang melengkapi implementasinya. Dengan kata lain Class
Abstract memiliki beberapa kesamaan (Bagian yang diimplementasikan oleh subclass) dan
memiliki perbedaan (method yang dimiliki oleh abstract class).
- Deklarasikan method abstract, jika ada satu atau lebih subclass yang diharapkan mempunyai
fungsionalitas yang sama tetapi implementasi berbeda.
- Gunakan class abstract untuk mendefinisikan behavior secara umum sebagai superclass,
sedangkan subclass menyediakan implementasi detail
- Jika class abstract semua method merupakan method abstract, sebaiknya class abstract tersebut
diganti menjadi Interface

# Concrete Class
- Mendefinisikan class yang nyata

54 | P a g e
- Dapat membentuk atau instansiasi object
- Object hanya bisa dibuat dari non-abstract class (concrete class)
- Dapat menurunkan implementasi dari super class
- Dapat sebagai base class pada hierarchical relationship dan membutuhkan class lain untuk
mewarisinya.

c. Abstract classess and methods


Abstract class
Abstract class adalah kelas yang terletak pada posisi tertinggi pada hierarki kelas. Kelas ini
digunakan sebagai basis bagi penurunan kelas lainnya, sehingga abstract class tidak dapat
diinstansiasi secara langsung menjadi object. Suatu abstract class bisa mengandung method
kongkrit dan/atau method abstract. Abstract method meruapakan suatu method yang tidak
mempunyai badan method. Hanya berupa nama method dan parameter inputan method. Ketika
suatu abstract class diturunkan/ di-extends, maka subclass harus mengimplementasikan semua
method abstract pada parent/ base class. Jika tidak mengimplementasikan semua method abstract
maka subclass harus dideklarasikan sebagai abstract class.

Pengertian Method
Method merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object.
Method didefinisikan pada class akan tetapi dipanggil melalui object. Metode menentukan
perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat
dilakukan objek sepanjang hidupnya. Ada 4 (Empat) bagian dasar yang dimiliki metode antara
lain:
1. Nama metode
2. Tipe Objek atau tipe primitive yang dikembalikan metode.
3. Daftar parameter.
4. Badan atau isi metode.

Tiga bagian pertama mengindikasikan informasi penting tentang metode itu sendiri. Dengan kata
lain, nama metode tersebut=metode lain dalam program. Dalam java kita dapat memiliki metode-

55 | P a g e
metode berbeda yang memiliki nama sama tetapi berbeda tipe kembalian atau daftar argumennya,
sehingga bagian-bagian definisi metode ini menjadi penting. Ini disebut overloading metode
(proses yang berlebihan pada suatu metode).
Untuk menjalankan program yang memiliki sifat polymorphism tersebut, diperlukan suatu
kemampuan overloading, yaitu suatu kemampuan untuk menentukan fungsi yang mana yang harus
digunakan atau dijalankan jika terdapat nama fungsi yang sama. Polimorfisme bisa diartikan
seperti kemampuan suatu variable untuk mengubah perangai sesuai dengan objek hasil instansiasi
yang digunakan. Polimorfisme membiarkan lebih dari 1 objek dari sub class sub class dan
diperlakukan sebagai objek dari super class tunggal.

d. Overloading and overriding (revisited)


Overloading Konstruktor adalah mekanisme dimana kita dapat membuat Konstruktor lebih dari
satu dalam satu Class, tapi dengan ketentuan setiap Konstruktor memiliki Parameter yang berbeda,
bisa berbeda jumlah Parameternya ataupun berbeda Type Data parameternya.
Contoh Class Orang yang memiliki dua buah Konstruktor:

Dimana Konstruktor yang pertama tidak memiliki Parameter, dan Konstruktor kedua memiliki
Parameter, dengan begitu, kita dapat menggunakan dua cara untuk membuat object dari kelas
Orang, yaitu dengan tanpa Parameter dan menggunakan Parameter, contoh sebagai berikut :

56 | P a g e
Overriding
Method overriding merupakan method yang parrent class yang ditulis kembali oleh subclass.
Aturan dari method overriding pada Java :

3. Parameter yang terdapat pada method overriding di subclass harus sama dengan parameter
yang terdapat pada parent class.
4. Aturan hak akses, hak akses method overriding di subclass tidak boleh lebih ketat di
bandingkan dengan hak akses method pada parent class.

Berikut ini contoh overriding:

57 | P a g e
e. Casting
Casting adalah saat programmer melakukan konversi antar tipe yang tipenya tidak kompatibel,
tidak dapat mengonversi secara otomatis maka dibutuhkan casting. Casting juga melibatkan
narrowing conversation yaitu bila tipe tujuan lebih kecil dari tujuan asal maka akan ada informasi
yang hilang. Contoh casting saat pemberian nilai dari tipe data double ke int yang memiliki range
lebih kecil dari double.
Format casting:

58 | P a g e
f. Why do we need interface?
Interface adalah sebuah tipe referensi pada Java. Interface secara struktur serupa dengan class. Isi
dari interface adalah method abstract, artinya method hanya dideklarasikan tidak ditulis secara
utuh. Deklarasi method pada interface serupa dengan method pada class abstract.
Variable pada interface akan memiliki aturan static dan final sedangkan method akan memiliki
aturan public dan abstract. Hal ini terjadi setelah proses kompilasi seperti yang terlihat pada
gambar.

2. Latihan

59 | P a g e
Pertemuan 8
Static & final method & variables

1. Pokok Bahasan
a. Static method
Mendeklarasikan Method Statik

[modifiers] static return_type method_identifier( [arguments ]){

method_code_block;
}

Memanggil Method Statik


<class_name> . <method_identifier(arguments)> ;

Perbedaan pemanggilan method statik dan non-statik adalah :


 Pemanggilan method statik dilakukan tanpa menginstanstiasi obyek, tetapi langsung
menuliskan nama class.
 Pemanggilan method non-statik dilakukan dengan terlebih dahulu menginstanstiasi obyek

b. Final method
Final dapat dibagi menjadi 3 macam yaitu :
Final Field
Apabila suatu field dideklarasikan final, maka field tersebut tidak bisa diubah lagi nilainya
(menjadi konstanta).
Contoh :
class katt
{
final int jumlah_kaki = 4; //field (dideklarasikan final)
}

60 | P a g e
Field jumlah_kaki tidak bisa diubah lagi nilainya.

Final Method
Apabila suatu method dideklarasikan final, maka kita tidak bisa melakukan overriding untuk
method tersebut.
Contoh :
class katt
{
final void suara()
{
System.out.println("Miaww...");
}
}
class siam extends katt //siam adalah turunan dari katt
{
void suara() // overriding akan menghasilkan error, method
{ // suara() pada katt dideklarasikan final
System.out.println("Murr...Murr...");
}
}

Method suara() pada katt tidak bisa di-override.

Final Class
Apabila suatu class dideklarasikan final, maka class tersebut tidak bisa diturunkan lagi.
Contoh :
final class katt // class katt dideklarasikan final
{
...
...

61 | P a g e
}
class siam extends katt //siam adalah turunan dari katt
{ //akan menghasilkan error(class katt
... //dideklarasikan final)
}

c. variable
Variabel
Variabel adalah sebuah item dari data yang digunakan untuk menyimpan sebuah nilai dari objek.
Variabel memiliki:
– Tipe data
• Tipe data merupakan tipe dari nilai yang dapat disimpan variabel.

– Nama
• Nama variabel harus mengikuti aturan seperti identifier.

Deklarasi dan Inisialisasi Variabel


Mendeklarsikan variabel:
<tipe data> <nama> [=inisialisasi nilai];

Catatan: Nilai yang berada antara tanda <> adalah nilai yang harus ada, sedangkan nilai yang
berada antara tanda [] adalah optional (boleh tidak diisi).

Contoh Program
public class VariableSamples {
public static void main( String[] args ){
//deklarasikan sebuah tipe data dengan nama variabel
// result dan tipe data boolean
boolean result;
//deklarasikan sebuah tipe data dengan nama variabel

62 | P a g e
// option dan tipe data char
char option;
option = 'C'; //memberi nilai 'C' pada variabel option
//deklarasikan sebuah tipe data dengan nama variabel
//grade, tipe data double dan nilai inisialisasi 0.0
double grade = 0.0;
}
}

Panduan Pemrograman
1. Merupakan hal yang baik dilakukan untuk menginisialisasi variabel setelah Anda
mendeklarasikannya.
2. Gunakan nama yang deskriptif untuk menamakan variabel Anda. Contoh, jika anda ingin
mempunyai variabel yang mengandung nilai grade dari siswa, beri nama variabel tersebut dengan
grade, bukan dengan huruf random.
3. Deklarasikan satu variabel pada satu baris code. Contohnya pada deklarasi variabel-variabel
berikut ini,
double exam=0;
double quiz=10;
double grade = 0;
adalah lebih baik daripada deklarasi berikut ini,
double exam=0, quiz=10, grade=0;

Mencetak Nilai Variabel


• Untuk mencetak nilai dari sebuah variabel, kita dapat menggunakan command berikut ini:
System.out.println()
System.out.print()

63 | P a g e
Sample Program
1 public class OutputVariable {
2 public static void main( String[] args ){
3 int value = 10;
4 char x;
5 x = ‘A’;

1 System.out.println( value );
2 System.out.println( “The value of x=“ + x );
3 }
4 }

Program diatas akan memberikan output yaitu:


10
The value of x=A

System.out.println() vs. System.out.print()


• System.out.println()
– Memberikan satu baris baru pada akhir data output
• System.out.print()
– Tidak memberikan baris baru pada akhir data output

Contoh:
• Program 1:
System.out.print(“Hello”);
System.out.print(“World”);
Output:
HelloWorld

64 | P a g e
• Program 2:
System.out.println(“Hello”);
System.out.println(“World”);

Output:
Hello
World

2. Latihan

65 | P a g e
Pertemuan 10
Exception handling

1. Pokok Bahasan
Pengertian
Pada dasarnya, Exception merupakan subkelas dari kelas java.lang.Throwable. “Bukalah
dokumentasi java untuk lebih menyakinkan anda”. Karena Exception adalah sebuah kelas maka
hakikatnya ketika program berjalan dan muncul sebuah bug atau kesalahan maka bug tersebut
dapat dianggap sebuah object. Sehingga ketika object ini di tampilkan di layar maka java akan
secara otomatis memanggil method toString yang terdapat dalam object bertipe Exception ini. Java
memberikan akses kepada developer untuk mengambil object bug yang terjadi ini dengan
mekanisme yang dikenal Exception Handling. Exception handling merupakan fasilitas di java
yang memberikan flexibilitas kepada developer untuk menangkap bug atau kesalahan yang terjadi
ketika program berjalan. Contoh Exception Handling akan dibahas pada bagian berikutnya.

Perbedaan antara Class Error dan Class Exception di java


Seperti yang telah dijelaskan diatas bahwa kelas Exception merupakan kelas turunan dari kelas
Throwable di package Java.Lang. Selain Exception, java.lang.Throwable juga memiliki subclass
yaitu class Error. Tentu, kita bertanya-tanya, sebetulnya apa sih perbedaan antara class Error
dengan class Exception.

Penjelasan dari Class Error :


“An Error is a subclass of Throwable that indicates serious problems that a reasonable application
should not try to catch. Most such errors are abnormal conditions” (JDK 5.0 Documentation)

Penjelasan dari class Exception :


“The class Exception and its subclasses are a form of Throwable that indicates conditions that a
reasonable application might want to catch. “ (JDK 5.0 Documentation)

66 | P a g e
Seperti dari penjelasan yang diberikan oleh JDK Documentation, maka dapat kita lihat bahwa error
dan exception pada dasarnya berbeda. Error merupakan masalah yang muncul tapi tidak ada alasan
yang kuat untuk menangkapnya. Sedangkan Exception merupakan kesalahan kecil yang muncul
dan ingin diperlakukan sesuai keinginan developer.

Keyword penting pada exception handling


Ada 5 keyword penting dalam java dalam hal exception handling :
1. try
Keyword ini biasanya digunakan dalam suatu block program. keyword ini digunakan untuk
mencoba menjalankan block program kemudian mengenai dimana munculnya kesalahan yang
ingin diproses. Keyword ini juga harus dipasangkan dengan keyword catch atau keyword finally
yang akan dibahas pada point kedua dan ketiga.
Contoh penggunaan :
public class A
{
public static void main(String[] args) {
try
{
int a = 1 / 0; // berpotensi untuk menimbulkan
kesalahan yaitu
// pembagian dengan bilangan 0
System.out.println("perintah selanjutnya");
}
catch (Exception kesalahan)
{
System.err.println(kesalahan);
}
}
}
Output :

java.lang.ArithmeticException: / by zero

Perhatikan contoh diatas, ada beberapa hal penting yang perlu dilihat. Pertama, block program yag
diyakini menimbulkan kesalahan maka ada di dalam block try and catch.Kedua, kesalahan yang
muncul akan dianggap sebagai object dan ditangkap catch kemudian di assign ke variable
kesalahan dengan tipe Exception. Ketiga, perintah setelah munculnya kesalahan pada block try
tidak akan dieksekusi.

67 | P a g e
2. catch

Jika anda sudah melihat contoh try maka secara tidak langsung anda sudah memahami kegunaan
dari keyword ini. Dalam java, keyword catch harus dipasangkan dengan try. Kegunaan keyword
ini adalah menangkap kesalahan atau bug yang terjadi dalam block try. Setelah menangkap
kesalahan yang terjadi maka developer dapat melakukan hal apapun pada block catch sesuai
keinginan developer. Contoh Program :
catch(Exception kesalahan)
{
System.out.println(“mohon maaf, terdapat kesalahan pada
program”);
//lakukan hal lainnya disini
}
Keyword catch juga dapat diletakan berulang-ulang sesuai dengan kebutuhan. Contoh :

public class A
{
public static void main(String[] args) {
try
{
int a = 1/0; //berpotensi untuk menimbulkan kesalahan yaitu pembagian
dengan bilangan 0
System.out.println("perintah selanjutnya");
}
catch(NullPointerException e)
{
}
catch(ArrayIndexOutOfBoundsException e)
{
}
catch(Exception e)
{
}
}
}

3. finally

Keyword ini merupakan keyword yang menunjukan bahwa block program tersebut akan selalu
dieksekusi meskipun adanya kesalahan yang muncul atau pun tidak ada. Contoh implementasinya
pada program :
public class A
{
public static void main(String[] args) {

68 | P a g e
try
{
//int a = 1/0;
}
finally
{
System.out.println("terima kasih telah menjalankan
program");
}
}
}
Output Program diatas:

terima kasih telah menjalankan program

4. throw

Keyword ini digunakan untuk melemparkan suatu bug yang dibuat secara manual. Contoh
program:
public class A
{
public static void main(String[] args) {
try
{
throw new Exception("kesalahan terjadi");
}
catch(Exception e)
{
System.out.println(e);
}
}
}
Output Program :

java.lang.Exception: kesalahan terjadi

5. throws

Keyword throws digunakan dalam suatu method atau kelas yang mungkin menghasilkan suatu
kesalahan sehingga perlu ditangkap errornya. Cara mendefinisikannya dalam method adalah
sebagai berikut : <method modifier> type method-name throws exception-list1, exceptio-list2, …
{}.

69 | P a g e
Contoh Program:
public class A
{
public static void main(String[] args) {
try
{
f();
}
catch(Exception e)
{
System.out.println(e);
}
}
public static void f() throws NullPointerException,
ArrayIndexOutOfBoundsException
{
//implementasi method
throw new NullPointerException();
//throw new ArrayIndexOutOfBoundsException();
}
}
Output Program :

java.lang.NullPointerException

2. Latihan

70 | P a g e
Pertemuan 11
Object Persistence

1. Pokok Bahasan
Selama ini, untuk mengakses database dengan java saya ajarkan pada mahasiswa menggunakan
jdbc. Sebetulnya itu adalah cara klasik. Manipulasi data dengan jdbc masih menggunakan query,
baik dengan statement (direct) atau pun dengan preparedstatement(indirect). Nah ada cara yang
lebih mudah untuk hal itu, yaitu menggunakan framework relational data. Dengan cara ini bukan
berarti tanpa menggunakan query sama sekali, tapi memang memungkinkan manipulasi data tanpa
menggunakan query. Cara ini baru saya berikan pada mahasiswa jika mereka sudah memahami
teknik manipulasi data dengan jdbc.

Saat ini banyak framework relational data yang bisa digunakan untuk membuat aplication dengan
java. Salah satunya adalah Java Persistence API. JPA adalah sebuah framework dalam
pemrograman java menggunakan pendekatan Obejct Relational Maping (ORM) untuk memanage
atau mengatur relational data menggunakan platform Java Standard Edition dan Java Enterprise
Edition. JPA saat ini sudah dirilis versi 2.0 yang merupakan penerus dari versi sebelumnya. Pada
versi 2.0 sudah dilengkapi dengan berbagai fitur yang semakin memudahkan programer untuk
manipulasi data.
Dalam konteks ini,m JPA dibagi dalam tiga bagian:
API itu sendiri. API JPA terdapat dalam package javax.persistence
Query khusus JPA yaitu Java Persistence Query Language (JPQL)
Object/Relational metadata
Mengapa JPA lebih baik dari jdbc?, berikut adalah beberapa kenutungan penggunaan JPA:
Tidak perlu membuat query untuk manipulasi data
Dapat mudah mengelola transaksi dengan API
Tidak perlu membuat Data Access Object yang complex
Dapat digunakan untuk mengelola POJO (Plain Old Java Object)
Untuk membuat aplikasi menggunakan JPA, kita harus membuat class entitas yang merupakan
permodelan(representas) table pada database. Untuk selanjutnya proses manipulasi data harus

71 | P a g e
mengacu pada class entitas ini. Class ini dapat dibuat sendiri atau bisa juga menggunakan fitur
generate pada netbeans. Berikut adalah contoh sederhana penggunaan JPA untuk memanipulasi
tabel pada database.
Terlebih dahulu buat database dalam database mysql
DROP DATABASE IF EXISTS akademik;
CREATE DATABASE akademik;
CREATE TABLE `mahasiswa` (
`nim` VARCHAR(14) NOT NULL,
`nama` VARCHAR(40) DEFAULT NULL,
`jurusan` VARCHAR(30) DEFAULT NULL,
`alamat` VARCHAR(60) DEFAULT NULL,
`email` VARCHAR(30) DEFAULT NULL,
`telepon` VARCHAR(15) DEFAULT NULL,
PRIMARY KEY (`nim`)
);

Selanjutnya buat class entitas Mahasiswa


package demojpa.entity;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
*
* @author ahza
*/
@Entity
@Table(name = "mahasiswa")
@NamedQueries({
@NamedQuery(name = "Mahasiswa.findAll", query = "SELECT m FROM Mahasiswa m"),
@NamedQuery(name = "Mahasiswa.findByNim", query = "SELECT m FROM Mahasiswa m WHERE
m.nim = :nim"),
@NamedQuery(name = "Mahasiswa.findByNama", query = "SELECT m FROM Mahasiswa m
WHERE m.nama = :nama"),
@NamedQuery(name = "Mahasiswa.findByJurusan", query = "SELECT m FROM Mahasiswa m
WHERE m.jurusan = :jurusan"),
@NamedQuery(name = "Mahasiswa.findByAlamat", query = "SELECT m FROM Mahasiswa m
WHERE m.alamat = :alamat"),
@NamedQuery(name = "Mahasiswa.findByEmail", query = "SELECT m FROM Mahasiswa m
WHERE m.email = :email"),
@NamedQuery(name = "Mahasiswa.findByTelepon", query = "SELECT m FROM Mahasiswa m
WHERE m.telepon = :telepon")})
public class Mahasiswa implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "nim")
private String nim;
@Column(name = "nama")

72 | P a g e
private String nama;
@Column(name = "jurusan")
private String jurusan;
@Column(name = "alamat")
private String alamat;
@Column(name = "email")
private String email;
@Column(name = "telepon")
private String telepon;

public Mahasiswa() {
}

public Mahasiswa(String nim) {


this.nim = nim;
}

public String getNim() {


return nim;
}

public void setNim(String nim) {


this.nim = nim;
}

public String getNama() {


return nama;
}

public void setNama(String nama) {


this.nama = nama;
}

public String getJurusan() {


return jurusan;
}

public void setJurusan(String jurusan) {


this.jurusan = jurusan;
}

public String getAlamat() {


return alamat;
}

public void setAlamat(String alamat) {


this.alamat = alamat;
}

public String getEmail() {


return email;
}

public void setEmail(String email) {


this.email = email;
}

public String getTelepon() {


return telepon;
}

public void setTelepon(String telepon) {


73 | P a g e
this.telepon = telepon;
}

@Override
public int hashCode() {
int hash = 0;
hash += (nim != null ? nim.hashCode() : 0);
return hash;
}

@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not
set
if (!(object instanceof Mahasiswa)) {
return false;
}
Mahasiswa other = (Mahasiswa) object;
if ((this.nim == null && other.nim != null) || (this.nim != null &&
!this.nim.equals(other.nim))) {
return false;
}
return true;
}

@Override
public String toString() {
return "demojpa.entity.Mahasiswa[nim=" + nim + "]";
}
}

Selanjutnya buat class Main dan methode main. Didalamnya buat code untuk insert data ke table
mahasiswa.
package demojpa;

import demojpa.entity.Mahasiswa;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
*
* @author ahza
*/
public class Main {

/**
* @param args the command line arguments
*/
static EntityManagerFactory emf =
Persistence.createEntityManagerFactory("DemoJPAPU");
static EntityManager em = emf.createEntityManager();
public static void main(String[] args) {
em.getTransaction().begin();
Mahasiswa m = new Mahasiswa("43A87006030124");
m.setNama("Muhamad Nur");
m.setJurusan("Manajemen Informatika");
m.setAlamat("Cikarang, Bekasi");
74 | P a g e
m.setEmail("alif.ivan@gmail.com");
m.setTelepon("021-9099897");
em.persist(m);
em.flush();
em.getTransaction().commit();
}
}

dan untuk mengupdate data yang perlu dilakukan adalah rubah em.persist(m) menjadi
em.merge(m). Object m dengan nim tersebut harus sudah ada dalam database, jika tidak akan
dianggap sebagai insert baru.
public static void main(String[] args) {
em.getTransaction().begin();
Mahasiswa m = new Mahasiswa("43A87006030124");
m.setNama("Ahza Muhamad Nur");
m.setJurusan("Teknik Informatika");
m.setAlamat("Cikarang, Bekasi");
m.setEmail("alif.ivan@gmail.com");
m.setTelepon("021-3454677");
em.merge(m);
em.flush();
em.getTransaction().commit();
}

Dan terakhir untuk menghapus data, gunakan code em.remove(rm) dimana rm adalah object yang
didapat dari hasil pencarian dengan nim yang telah ditentukan.
public static void main(String[] args) {
em.getTransaction().begin();
Mahasiswa m = new Mahasiswa("43A87006030124");
Mahasiswa rm = em.find(Mahasiswa.class, m.getNim());
em.remove(rm);
em.flush();
em.getTransaction().commit();
}

2. Latihan

75 | P a g e
Pertemuan 12
Multithreading

1. Pokok Bahasan
Apa itu Multithread
Yaitu Thread yang multi :v. Jika dalam bahasa saya, yaitu ketika kita sedang menjalankan game
di androidkemudian kita bisa juga membuka aplikasi lainnya.. itu multithread. Nah, mari kita bahas
sedikit lebih dalam mengenai Java Multithread

Java - Multithread
Java merupakan bahasa pemrogramanan yang multi thread yang artinya kita bisa mengembangkan
program multi thread menggunakan java. Sebuah program multi threaded mengandung dua atau
lebih bagian perintah yang dapat dijalankan secara bersamaan dan setiap bagian dapat menangani
tugas yang berbeda pada saat yang sama untuk mengoptimalkan penggunaan dari sumber daya
yang tersedia, khususnya jika komputer yang kita miliki memiliki beberapa CPU.

Seperti halnya multitasking, ketika beberapa proses berbagi sumber daya umum pengolahan
seperti CPU.Multi-threading memperluas fungsi dari multitasking ke dalam aplikasi di mana kita
dapat membagi operasitertentu dalam satu aplikasi menjadi thread tersendiri. Setiap thread dapat
berjalan secara paralel. OSmembagi waktu proses tidak hanya di antara aplikasi yang berbeda,
tetapi juga di antara setiap thread yangterdapat dalam aplikasi.

Multi-threading memungkinkan kita untuk melkukan sesuatu dimana beberapa kegiatan dapat
dilanjutkan secarabersamaan dalam program yang sama.

Siklus dari pengeksekusian Thread


Sebuah thread berjalan melalui berbagai tahapan. Sebagai contoh, sebuah thread diciptakan,
dimulai, berjalan, dan kemudian berhenti. Berikut diagram menunjukkan siklus pengeksekusian
thread dari awal hingga akhir.

76 | P a g e
HOME
PROGRAMMING
JAVA
HTML
PHP
NODE.JS
CODEIGNITER
EXPRESS.JS
VUE.JS
BLOGGING
NEWBIE BLOGGER
AWESOME TEMPLATES
TIPS BLOGGING
SEO
ADSENSE
INTERNET
INTERNET
SOCIAL NETWORKS
REALITY
77 | P a g e
REALITY
ABOUT PEOPLE
OTHERS
COLLEGE
CODES
OTHER LESSONS
MABINWA
ISLAM
MY LIFE

Cari disini...
Home » Java » Kuliah » Pengertian Multithread pada Pemrograman Java
Pengertian Multithread pada Pemrograman Java
Zen Huzaini Add Comment Java, Kuliah Saturday, January 9, 2016
Akhirnya, liburan telah tiba, kini saatnya untuk saya menuliskan kembali tugas-tugas kuliah saya
yang pernah saya pelajari agar bisa bermanfaat. Pada artikel kali ini saya akan membahas tentang
Multithread di pemrograman Java.

Apa itu Multithread


Yaitu Thread yang multi :v. Jika dalam bahasa saya, yaitu ketika kita sedang menjalankan game
di androidkemudian kita bisa juga membuka aplikasi lainnya.. itu multithread. Nah, mari kita bahas
sedikit lebih dalam mengenai Java Multithread

Java - Multithread
Java merupakan bahasa pemrogramanan yang multi thread yang artinya kita bisa mengembangkan
program multi thread menggunakan java. Sebuah program multi threaded mengandung dua atau
lebih bagian perintah yang dapat dijalankan secara bersamaan dan setiap bagian dapat menangani
tugas yang berbeda pada saat yang sama untuk mengoptimalkan penggunaan dari sumber daya
yang tersedia, khususnya jika komputer yang kita miliki memiliki beberapa CPU.

78 | P a g e
Seperti halnya multitasking, ketika beberapa proses berbagi sumber daya umum pengolahan
seperti CPU.Multi-threading memperluas fungsi dari multitasking ke dalam aplikasi di mana kita
dapat membagi operasitertentu dalam satu aplikasi menjadi thread tersendiri. Setiap thread dapat
berjalan secara paralel. OSmembagi waktu proses tidak hanya di antara aplikasi yang berbeda,
tetapi juga di antara setiap thread yangterdapat dalam aplikasi.

Multi-threading memungkinkan kita untuk melkukan sesuatu dimana beberapa kegiatan dapat
dilanjutkan secarabersamaan dalam program yang sama.

Siklus dari pengeksekusian Thread


Sebuah thread berjalan melalui berbagai tahapan. Sebagai contoh, sebuah thread diciptakan,
dimulai, berjalan, dan kemudian berhenti. Berikut diagram menunjukkan siklus pengeksekusian
thread dari awal hingga akhir.

Multithread Pada Pemrograman Java

Penjelasan
New : Sebuah thread baru dimulai siklus hidupnya di state baru. Masih dalam keadaan ini sampai
program thread dijalankan.

Runnable: Setelah thread baru dimulai, thread menjadi runnable (dapat dijalankan). Sebuah thread
di state ini bisa melaksanakan tugasnya.

Waiting: Kadang-kadang,saat transisi perpindahan, thread akan mengalami fase dimana dia harus
menunggu sementara saat thread yang lain berjalan. Sebuah transisi thread yang dalam kondisi
waiting dapat kembali ke thread runnable hanya ketika thread lain memberi sinyal / informasi pada
thread sedang dalam kondisi waiting tersebut untuk melanjutkan proses eksekusinya.

Timed Waiting (Jangka waktu tunggu) : Sebuah thread yang sedang dalam kondisi runnable dapat
memasuki kondisi Timed Waiting untuk jangka waktu tertentu.

79 | P a g e
Dihentikan (Mati): Sebuah thread yang berada di fase runnable akan memasuki fase berhenti dan
dihentikan ketika sudah menyelesaikan tugas.

Prioritas Thread pada Java


Setiap thread di Java memiliki prioritas yang membantu sistem operasi menentukan urutan thread
untukdijalankan (dijadwalkan).

Prioritas thread Java berada dalam kisaran antara MIN_PRIORITY (konstan dari 1) dan
MAX_PRIORITY (konstan dari 10). Secara default, setiap thread diberikan prioritas
NORM_PRIORITY (konstan dari 5). Thread dengan prioritas yang lebih tinggi berarti thread
tersebut lebih penting dijalankan terlebih dahulu untuk sebuah program. Namun, prioritas thread
tidak dapat menjamin urutan pengeksekusian thread, tergantung dari platform yang digunakan.

Kekurangan Multithread di Java


Adanya sinkronisasi , artinya ketika kita menjalankan program multithread ini akan membuka
kemungkinan untuk thread dalam mengakses dan memodifikasi objek yang sama di memori pada
saat yang bersamaan. Ketika hal itu terjadi , maka Java akan memunculkan sebuah exception.

2. Latihan

80 | P a g e
Pertemuan 13
Using java library (Java API)

1. Pokok Bahasan

Java adalah bahasa pemrograman yang dapat dijalankan di komputer atau di telepon genggam.
Java juga merupakan bahasa pemrograman tingkat tinggi yang berorientasi objek (OOP) yaitu cara
ampuh dalam pengorganisasian dan pengembangan perangkat lunak. Pada OOP, program
komputer sebagai kelompok objek yang saling berinteraksi. Deskripsi singkat OOP adalah
mengorganisasikan program sebagai kumpulan komponen yang disebut dengan objek. Program
java tersusun dari bagian-bagian yang disebut kelas. Kelas itu sendiri terdiri atas metode-metode
yang melakukan pekerjaan dan mengembalikan informasi setelah melakukan tugasnya.

Para pemrogram Java banyak mengambil keuntungan dari kumpulan kelas di pustaka kelas Java,
yang disebut dengan Java Application Programming Interface (API). Kelas-kelas ini
diorganisasikan menjadi sekelompok yang disebut paket (package). Jadi ada dua hal yang harus
dipelajari dalam Java, yaitu mempelajari bahasa Java dan bagaimana mempergunakan kelas pada
Java API. Kelas merupakan satu-satunya cara menyatakan bagian eksekusi program, tidak ada cara
lain. Sedangkan pengertian API itu sendiri ialah seperangkat fungsi standar yang disediakan oleh
OS atau Bahasa. Dalam Java, API dimasukkan ke dalam package-package yang sesuai dengan
fungsinya.

Beberapa fungsi java yaitu java merupakan bahasa yang sederhana. Java dirancang agar
mudah dipelajari dan digunakan secara efektif. Java tidak menyediakan fitur-fitur rumit bahasa
pemrograman tingkat tinggi, serta banyak pekerjaan pemrograman yang mulanya harus dilakukan
manual, sekarang digantikan dikerjakan Java secara otomatis seperti dealokasi memori.

81 | P a g e
82 | P a g e
Penjelasan Program :

System.out.print () dan System.out.println () merupakan dua instruksi dasar untuk menampilkan


informasi. Secara umum untuk menampilkan informasi ke layar digunakan perintah System.output
() atau System.out.println (). Perbedaannya terletak pada posisi kursor setelah informasi tercetak
di layar. Jika kita menggunakan System.out.print () maka posisi kursor ada di posisi akhir setelah
informasi yang ditampilakan, sedangkan kita menggunakan System.out.println () posisi kursor ada
pada baris berikutnya.

Gunakan pasangan kurung buka “(“ dan kurung tutup “)” pada ekspresi matematis seperti pada
program diatas. Pada System.out.print () atau System.out.println (). Beberapa informasi yang akan
ditampilkan dipisahkan dengan karakter (+), karakter penjumlahan (+) berarti penggabungan
string. Berbeda dengan operator aritmatika dan operator logika. Cara penulisannya harus di ikuti
dengan tanda “ “ sehingga dapat membandingkan nilai variable. Dan jika kita membuat program
seperti ini System.out.println z=x/y; saja tanpa menambahkan System.out.println maka hasilnya
adalah “8” tanpa ada penjelasan 16/2. Itu disebabkan karena ekspresi tersebut merupakan
informasi pertama yang akan ditampilkan.

Pada program diatas menggunakan tipe data yang diproses tipe data lain, misalnya data string
angka diproses sebagai data numerik. Dalam situasi seperti ini diperlukan konversi tipe data yaitu
Type-Casting. Type-Casting adalah istilah dimana suatu data ‘dipaksa’ menjadi tipe data lain
secara sementara pada saat akan diproses.

Int atau integer jika dipakai menggunakan tipe data bilangan bulat. Jika bilangannya pecahan maka
menggunakan double. Jika karakter berarti menggunakan char, Boolean untuk tipe data logika dan
yang terakhir string adalah tipe data karaketer.

Variable yang terlibat dalam perhitungan ini, x dan y, bertipe int; sedangkan variable untuk
menampung hasil perhitungan z bertipe double. Ada satu aturan bahwa jika variable yang terlibat
semuanya bertipe ilangan bulat, hasil perhitungan pun akan bertipe bilangan bulat tidak tergantung

83 | P a g e
pada tipe variable penampungnya. Dengan kata lain diambil bagian integernya saja.
Konsekuensinya adalah hasil proses yang terjadi memiliki kesalahan. Jika salah satu atau semua
operand yang terlibat dalam ekspresi matematis bernilai pecahan maka hasilnya juga pecahan.

Penulisan (double) x menyatakan bahwa dalam proses perhitungan ini nilai x diubah menjadi tipe
double. Nilai aktualnya tetap dalam tipe int. perubahan ini hanya bersifat sementara pada saat
proses perhitungan dilakukan. Dalam hal ini yang diubah menjadi pecahan hanya variable x,
sedangkan variable y tetap.

//awal memulai program java selalu dengan class


//contoh dengan nama TypeCasting
public class TypeCasting {
//memulai penulisan method selalu menggunakan void
//method bernama main
public static void main (String[] args{
//menulis fungsi untuk mencetak
System.out.println("Contoh Sederhana Program Java");
System.out.println("*****************************");

84 | P a g e
//memasukkan deklarasi variable
int x = 19;
int y = 2;
double z = (double)x/y;

//menulis fungsi untuk mencetak


System.out.println (x + " / " + y + " = " + z);
//akhir dari method main
}
//akhir dari class TypeCasting
}

Dalam program java memiliki bagian-bagian struktur. Adapun bagiannya yaitu class, method dan
deklarasi variable sesuai dengan contoh program dibawah, yaitu :

· Class : Class pada java terbentuk atas atribute (variabel/ciri-ciri) dan behaviour (fungsi).
Class mengizinkan Anda dalam mendeklarasikan tipe data baru. Ia dijalankan sebagai blueprint,
dimana model dari object yang Anda buat berdasarkan pada tipe data baru ini.
· Method : Sebuah method menjelaskan behaviour dari sebuah object. Method juga dikenal
sebagai fungsi atau prosedur.
· Variabel : Item yang digunakan data untuk menyimpan pernyataan dari objek.

Selain itu terdapat pula bagian struktur lainnya yang ada diluar program dibawah, yaitu :

· Object : Sebuah entiti yang memiliki keadaan, behaviour dan identitas yang yang tugasnya
dirumuskan dalam suatu lingkup masalah dengan baik. Inilah instance sebenarnya dari sebuah
class. Ini juga dikenal sebagai instance. Instance dibuat sewaktu Anda meng-instantiate class
menggunakan kata kunci new.

85 | P a g e
· Atribut : Atribut menunjuk pada elemen data dari sebuah object. Atribut menyimpan
informasi tentang object. Dikenal juga sebagai member data, variabel instance, properti atau
sebuah field data.
· Konstruktor : Sebuah tipe khusus dari method yang digunakan untuk membuat dan
menginisialisasi sebuah object baru. Ingat bahwa konstruktor bukan member (yaitu atribut, method
atau inner class dari sebuah object).

2. Latihan

86 | P a g e
Pertemuan 14
Collections

1. Pokok Bahasan
Collection merupakan istilah umum yang dipakai untuk setiap objek yang berfungsi untuk
mengelompokkan beberapa objek tertentu menggunakan suatu teknik tertentu pula. Semua class
yang berhubungan dengan pengelompokan objek ini dalam java tergabung dalam Java Collection
Framework, dimana Framework ini diletakan dalam package java.util dan mempunyai dua
interface utama, yaitu collection dan map. Pada makalah ini hanya akan dibahas Collection

Jenis Pengelompokan Collectin ini merupakan pengelompokan satu dimensi. Berdasarkan teknik
pengelompokannya terbagi menjadi tiga kelompok yaitu set, list, dan queue. Semua class dalam
kelompok collection ini merupakan implementasi dari interface yang sama, maka pada dasarnya
cara penggunan class ini adalah sama. Yang membedakannya hanyalah kapan kita harus
menggunakannya karena hal ini sangat terkait dengan kebutuhan.

a. Set merupakan pengelompokan mengikuti model himpunan dimana setiap anggota-nya harus
unik. Urutan maupun letak dari anggotanya tidaklah penting, hanya keberadaan anggotanya saja
yang penting.
Contoh dalam Program:

import java.util.*;

public class setCollection {


public static void main(String[] args) {
Set<String> set1 = new HashSet<String>();

Collections.addAll(set1, "A B C D E ".split(" "));


set1.add("M");
System.out.println("B: " + set1.contains("B"));//ada H

87 | P a g e
System.out.println("H: " + set1.contains("H"));//ada N

Set<String> set2 = new HashSet<String>();


Collections.addAll(set2, "E F G H".split(" "));

//Apakah huruf2 di set2 ada di set 1 ?? -> true


System.out.println("set2 in set1: " + set1.containsAll(set2));

set1.remove("H");
System.out.println("set1: " + set1);
System.out.println("set2 in set1: " + set1.containsAll(set2));

set1.removeAll(set2);
System.out.println("set2 dihapus dari set1: " + set1);

Collections.addAll(set1, "X Y Z".split(" "));


System.out.println("‘X Y Z’ ditambahkan ke set1: " + set1);
}
}

b. List merupakan pengelompokan berdasarkan urutan seperti layaknya array, karena itu ia
memiliki posisi awal dan juga posisi akhir. Dengan list kita bisa menyimpan suatu objek pada awal
atau akhir list, menyisipkan, mengakses serta menghapus isi list pada posisi index tertentu dimana
semua proses ini selalu didasarkan pada urutannya. Selain itu isi list tidak harus unik. Beberapa
Class java yang mengimplementasi kelas ini antara lain : Vector, Stack, LinkedList, dan ArrayList.

Contoh dalam Program :

88 | P a g e
Vector

import java.util.Scanner;
import java.util.Vector;

public class VektorJava{


public static void main(String[] args) {
String data = "";
Vector<String> V = new Vector<String>();
Scanner input = new Scanner(System.in);
for(int i=0;i<=3;i++){
System.out.print("Masukan Data "+i+": ");
data = input.next();
V.add(data);
}

System.out.println(V);

String nama = (String) V.get(0);


System.out.println(nama);

Stack

import java.io.*;
import java.util.*;

89 | P a g e
public class StackImplement {
Stack<Integer> stack = new Stack<Integer>();
String str;
int num, n;

public static void main(String[] args) {


StackImplement q = new StackImplement();
}

public StackImplement() {
try {
BufferedReader bf = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Banyak Data : ");
str = bf.readLine();
num = Integer.parseInt(str);
for (int i = 1; i <= num; i++) {
System.out.print("Masukan Elemen " + i + " : ");
str = bf.readLine();
n = Integer.parseInt(str);
stack.push(n);
}
} catch (IOException e) {
}

System.out.println("Stack : ");
while (!stack.empty()) {
System.out.print(stack.pop() + " ");

90 | P a g e
}
System.out.println();
}
}

LinkedList

import java.util.LinkedList;

public class LinkListCollection {


public static void main(String[] args) {
LinkedList<String> A = new LinkedList<String>();
String[] nama = {"David","Alfa","Benny"};

//Tambah data data diambil dari array nama;


for(int nList = 0;nList<nama.length;nList++){
A.add(nama[nList]);
}

//Tampil Data
System.out.println("Data Asli : ");
for(int nList = 0;nList<nama.length;nList++){
System.out.println("Indeks "+nList+": "+A.get(nList));
}

System.out.println("\nTambah data di Index ke-3 : ");


A.add(3, "Danni");

91 | P a g e
for(int nList = 0;nList<=nama.length;nList++){
System.out.println("Indeks "+nList+": "+A.get(nList));
}

System.out.println("\nDelete data di Index ke-2 : ");


A.remove(2);
for(int nList = 0;nList<nama.length;nList++){
System.out.println("Indeks "+nList+": "+A.get(nList));
}

System.out.println("\nTambah data di Awal list : ");


A.addFirst("Marcelo");
for(int nList = 0;nList<=nama.length;nList++){
System.out.println("Indeks "+nList+": "+A.get(nList));
}

System.out.println("\nTambah data di Akhir list : ");


A.addLast("Ferdi");
for(int nList = 0;nList<=nama.length+1;nList++){
System.out.println("Indeks "+nList+": "+A.get(nList));
}

System.out.println("\nTambah data di Akhir list : ");


A.remove(4);
for(int nList = 0;nList<=nama.length;nList++){
System.out.println("Indeks "+nList+": "+A.get(nList));
}

}
}

92 | P a g e
ArrayList

import java.util.ArrayList;
import java.util.Scanner;

public class ArrayListCollection {


public static void main(String[] args) {
String str = "";
ArrayList<String> senerai = new ArrayList<String>();
Scanner scan = new Scanner(System.in);
while (true) {
try {
System.out.println("\n1. Tambah Data");
System.out.println("2. Lihat Data");
System.out.println("3. Delete Data");
System.out.println("4. Exit");
System.out.print("Masukan pilihan : ");
int pilihan = scan.nextInt();

switch (pilihan) {
case 1:
int jmlDt = 0;
System.out.print("Tambah data : ");
str = scan.next();

93 | P a g e
senerai.add(str);
jmlDt++;
break;
case 2:
System.out.println("\nIsi senerai sekarang : ");
System.out.println("Jumlah Element : " + senerai.size());
for (int i = 0; i < senerai.size(); i++) {
System.out.println("Index " + i + ". " + senerai.get(i));
}
System.out.println("");
break;
case 3:
int indeks;
try {
System.out.print("Masukan Index list yang akan di hapus: ");
indeks = scan.nextInt();
senerai.remove(indeks);
System.out.println(">remove data sukses<");
} catch (IndexOutOfBoundsException a) {
System.out.println("Indeks Array melebihi batas");
}
break;
case 4:
System.out.println("Terima kasih");
System.exit(0);

default:
System.out.println("Inputan Tidak tersedia \n");
}

94 | P a g e
} catch (Exception e) {
System.err.println("Salah Input");
System.exit(1);
}
}
}
}

Implementasi dari ArrayList dan Vector ini mirip seperti array, dimana kita dapat menggakses
anggotanya melalui indeksnya. Kelebihannya adalah ia dapat menyesuaikan ukurannya sesuai
dengan kebutuhan. Perbedaan dari kedua kelas ini, vector secara internal telah mendukung
sinkronisasi, sedangkan ArrayList secara internal tidak mendukung sinkronisasi.

c. Queue merupakan model pengelompokan berdasarkan metode antrian suatu prioritas


tertentu(contoh FIFO-First In First Out). Beberapa Class java yang mengimplementasi interface
Queue ini antara lain PriorityQueue dan LinkedList.

import java.io.*;
import java.util.*;

public class QueueJava{


String str;
int num;
public static void main(String[] args){
QueueJava q = new QueueJava();
}

public QueueJava(){

95 | P a g e
try{
LinkedList<Integer> list = new LinkedList<Integer>();
BufferedReader bf = new BufferedReader(
new InputStreamReader(System.in));

System.out.print("Banyak Data : ");


str = bf.readLine();
if((num = Integer.parseInt(str)) == 0){
System.out.println("Anda menekan angka nol.");
System.exit(0);
}

else{

for(int i = 0; i < num; i++){


System.out.print("Masukan Elemen "+i+" : ");
str = bf.readLine();
int n = Integer.parseInt(str);
list.add(n);
}
}
System.out.println("\nElement Pertama : "
+ list.removeFirst());
System.out.println("Element Terakhir : "
+ list.removeLast());
System.out.println("Element Tengah : ");
while(!list.isEmpty()){
System.out.print(list.remove() + " ");
}
System.out.println("");

96 | P a g e
}
catch(Exception e){
System.out.println(e.getMessage()
+ " adalah String.");
System.exit(0);
}
}
}

2. Latihan

97 | P a g e
Pertemuan 15
Making connection with database

1. Pokok Bahasan

Sistem Basis Data pada Java


Database merupakan salah satu bagian inti dari Sistem Informasi yang menyimpan data untuk
proses pengolahan nantinya. Agar aplikasi bisa mengakses data dari suatu database engine, maka
diperlukan suatu mekanisme koneksi antara aplikasi dan database tersebut. Pada bahasa
pemrograman java terdapat kumpulan kelas yang digunakan khusus untuk koneksi database.

Komponen database pada java mengikuti standar SQL (Structured Query Language), sehingga
library fungsinya dapat ditemukan dalam package java.sql.* dan javax.sql.*.
Terdapat 3 langkah utama untuk melakukan koneksi ke database : (1) membuat koneksi sengan
server database. (2) Membuat perintah dan mengirimkannya ke server database. (3) menerima dan
mengolah hasil.

Untuk mendapatkan koneksi database, diperlukan 3 langkah, yaitu :


1. Menginstalasi driver database yang digunakan
2. menciptakan instance object dari server
3. melakukan registrasi koneksi ke database

Setelah berhasil dilakukan, maka kita hanya perlu melakukan registrasi koneksi, dan menciptakan
koneksi melalui interface Connection berdasarkan URL disertai dengan username dan password
database

JDBC
Untuk melakukan koneksi ke suatu sumber data, diperlukan database driver yang akan menjadi
jembatan antara Aplikasi dengan Database. Database driver ini bersifat spesifik untuk setiap

98 | P a g e
sumber data. Misalnya, Database Driver MySQL hanya bisa digunakan untuk melakukan koneksi
ke database MySQL, begitu juga dengan Database Driver PostgreSQL hanya untuk PostgreSQL.

Komponen utama JDBC


Driver adalah komponen untuk menangani masalah komunikasi dengan server database.
DriverManager adalah komponen untuk menangani objek driver.
Connection adalah komponen yang menyimpan koneksi ke database.
Statement adalah komponen yang menangani perintah SQL ke database.
ResultSet adalah komponen yang menyimpan data hasil perintah ke database.
SQLException adalah komponen untuk menangani kesalahan-kesalahan yang mungkin terjadi saat
pengolahan database.

Memanggil Driver JDBC


Untuk menghubungkan database MySQL dengan Java, perlu dilakukan pemanggilan driver JDBC.
Driver adalah sebuah library yang berisi perintah-perintah untuk berkomunikasi dengan server
database.
Sebelum mulai menulis program, import terlebih dahulu package java.sql.*. karena di dalam
library ini terdapat kelas-kelas seperti DriverManager, Connection, dan ResultSet.

import java.sql.*

Untuk memanggil driver JDBC bisa menggunakan

Class.forName(namaDriver);

atau

Class.forName(namaDriver).newInstance();

99 | P a g e
Keduanya bertujuan untuk registrasi Class Driver. Perintah tersebut dapat menghasilkan error bila
driver tidak ditemukan, sehingga perlu dilakukan penanganan, menggunakan
ClassNotFoundException.

try {
// perintah pemanggilan driver
} catch (ClassNotFoundException exc) {
// penanganan kesalahan
}

Membangun Koneksi
Setelah berhasil melakukan pemanggilan driver, maka dilanjutkan dengan membangun koneksi.
Untuk membuat koneksi tidak perlu dengan menciptakan object baru. Karena pembuatan object
telah dienkapsulasi pada kelas DriverManager. Jadi, untuk mendapatkan object hanya dengan
syntax :

DriverManager.getConnection(url, username, password);

Sama seperti pemanggilan driver, perintah kali ini dapat menyebabkan error. Untuk itu, diperlukan
penanganan. Namun, kali ini menggunakan SQLException, karena kesalahan yang mungkin
terjadi ada di dalam database engine.

try {
Connection conn = DriverManager.getConnection(URL, username, password);
} catch (SQLException exc) {
// penanganan kesalahan
}

URL bisa dibuat dengan format : Jdbc:<DBServer>://[host]:[port]/<NamaDB>


Username : user pada server database

100 | P a g e
Password : password untuk user diatas

Membuat Object Statement


Statement merupakan objek interface yang diciptakan dari method Connection.createStatement().
Objek Statement digunakan untuk penerimaan statement SQL tanpa parameter.
Perintah Statement :

Statement stat = Connection.createStatement();

Melakukan Eksekusi
Sekarang, objek statement telah dibuat dan sudah bisa digunakan untuk mengirim perintah SQL,
kemudian mengeksekusinya. Untuk melakukan eksekusi, dibagi menjadi 2 bagian.
Pertama, menggunakan method executeQuery(). Method ini dipakai untuk perintah
SELECT,sehingga akan memberikan nilai kembalian dalam bentuk ResultSet.
Kedua, menggunakan method executeUpdate(). Method ini dipakai pada perintah INSERT,
UPDATE, dan DELETE. Untuk melakukan perintah DELETE :

PreparedStatement stat = conn.prepareStatement(perintah/query delete);


stat.executeUpdate();

Menerima hasil dan memprosesnya


Hasil statement akan memberikan hasil, jikaperintah yang digunakan adalah SELECT. Hasil
kembalian berupa ResultSet.

ResultSet rs = stat.executeQuery(perintah SQL);


If( rs.next() ) {
// ambil nilai dan masukan ke dalam variabel
}

2. Latihan

101 | P a g e
Pertemuan 16
GUI and SWING

1. Pokok Bahasan
SWING
Sebagaimana diketahui, Component merupakan puncak hirarki dalam AWT. Pada Swing yng
berkedudukan seperti itu yaitu JComponent. Kelas inilah yang menjadi superkelas bagi sejumlah
kelas. Misalnya JComboBox, JLabel, Jlist dan JPanel. Swing dikemas salam paket bernama
javax.swing. Itulah sebabnya program yang menggunakan fitur Swing menyertakan pernyataan
import javax.swing.*;
Komponen Penjelasan

Swing

JComponent Kelas induk untuk semua komponen Swing, tidak termasuk top-level kontainer

JButton Tombol “push”. Korespondesi pada button class dalam package AWT

JCheckBox Item yang dapat dipilih atau tidak oleh pengguna. Korespondensi pada
checkbox classdalam package AWT

JFileChooser Mengijinkan pengguna untuk memilih sebuah file. Korespondensi pada filechooser class dalam
package AWT

JTextField Mengijinkan untuk mengedit text satu baris. Korespondensi pada textfield class dalam package
AWT.

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.

JPanel Turunan Jcomponent. Kontainer class sederhana tetapi bukan top-level. Korespondensi pada
panel class dalam package AWT.

JApplet Turunan dan korepondensi ke Applet class dalam package AWT. Juga sedikit tidak cocok
dengan applet class dalam kaitannya dengan menambahkan komponen pada kontainer

102 | P a g e
JOptionPane Turunan Jcomponent. Disediakan untuk mempermudah menampilkan pop- up kotak dialog.

JDialog Turunan dan korespondensi pada dialog class dalam package AWT. Biasanya digunakan untuk
menginformasikan sesuatu kepada pengguna atau prompt pengguna untuk input.

JColorChooser Turunan Jcomponent. Mengijinkan pengguna untuk memilih warna

Java GUI adalah pemrograman dengan bahasa Java yang dibuat menggunakan aplikasi yang
berbasiskan GUI. Tujuannya adalah menambahkan komponen-komponen yang tidak bisa dibuat
dalam basis text. Komponen-konponen tersebut bisa berupa tombol, gambar, dll. Tujuannya adalah
untuk memudahkan user menggunakan program yang dibuat tersebut.

Macam-macam GUI :

1. AWT (Abstract Window Toolkit) – SUN Microsystem -> Oracle Product

AWT (Abstract Window Toolkit) ini adalah GUI Toolkit pertama pada bahasa pemrograman Java,
sayang-nya AWT ini sangat-sangat kekurangan komponen yang biasa digunakan untuk
membangun sebuah aplikasi desktop secara lengkap (komponen tabel saja tidak ada ) Terlepas dari
kurang-nya komponen GUI yang terdapat pada AWT (Abstract Window Toolkit), aplikasi yang
dibangun menggunakan AWT (Abstract Window Toolkit) akan tampak seperti aplikasi native.
Maksudnya yaitu, jika aplikasi yang dibangun menggunakan AWT (Abstract Window Toolkit) ini
dijalankan pada Sistem Operasi Windows. Maka aplikasi ini akan terlihat seperti aplikasi Windows
pada umum-nya, dan begitu juga jika dijalankan pada Sistem Operasi Mac ataupun GNU/Linux.
Kenapa ini bisa terjadi, karena AWT (Abstract Window Toolkit) ini benar-benar memanggil native
subrutin untuk menggambar setiap komponen-nya ke layar.

2. SWT (Standart Widget Tookit) – IBM Product -> Eclipse Foundation

103 | P a g e
SWT (Standart Widget Toolkit) ini adalah sebuah GUI Toolkit yang dikeluaran oleh IBM sebagai
alternatif dari AWT/Java Swing milik SUN Microsystem, yang membedakan antara SWT
(Standart Widget Toolkit) dan AWT/Java Swing adalah SWT ini benar-benar mengakses native
GUI library yang terdapat pada Sistem Operasi melalui JNI (Java Native Interface). Dengan model
seperti ini, memungkinkan tampilan aplikasi yang dibangun menggunakan GUI Toolkit SWT
menjadi sama persis dengan aplikasi native lain-nya. Kekurangan dari model pemanggilan native
GUI library seperti ini adalah kita harus menyediakan library untuk tiap-tiap Sistem Operasi target
aplikasi kita.

3. QtJambi – Trolltech -> Nokia Product -> Stopped and Taken By Community
Pernah menggunakan Desktop Environment KDE ? Ingin membuat aplikasi yang tampilan-nya
mirip denganKDE ? Kalau teman-teman ingin membangun aplikasi yang tampilan-nya tampak
seperti aplikasi yang terdapat pada KDE tapi masih ingin menggunakan bahasa java sebagai dasar-
nya, maka QtJambi adalah pilihan yang tepat untuk teman-teman. Karena QtJambi ini merupakan
binding Qt Framework dengan bahasa Java, tetapi sayang-nya proyek QtJambi sudah tidak
disupport oleh Nokia dan secara resmi telah ditutup Untung-nya, awal tahun ini ada beberapa
developer yang peduli dengan kelangsungan proyek ini dan akhir-nya membuat sebuah komunitas
untuk melanjutkan pengembangan proyek QtJambi, sekarang teman-teman bisa melihat
perkembangan proyek QtJambi ini pada halaman QtJambi Community.

4. avaGNOME – Community Product


Kalau QtJambi diatas ditujukan untuk teman-teman yang sudah akrab dengan API (Application
Programming Interface) Qt Framework, berbeda dengan JavaGNOME Proyek ini lebih
dikhususkan untuk teman-teman pecinta GTK atau yang paling banyak dikenal yaitu
GNOMESama seperti GUI Toolkit SWT dan QTJambi, JavaGNOME ini juga mengakses native
library tetapi API yang digunakan adalah API dari GTK. Untuk teman-teman yang sudah terbiasa
membangun aplikasi menggunakan Glade, maka teman-teman bisa men-design form-nya
menggunakan Glade dan memanggil-nya menggunakan bahasa java melalui JavaGNOME.

2. Latihan

104 | P a g e
Pertemuan 17
Deployment

1. Pokok Bahasan
Setelah menyiapkan program JavaFX, kita boleh membuat deployment untuk mengedarkan
program tersebut kepada pengguna. Deployment perlu dibuat kerana takkanlah kita mahu
pengguna menggunakan Netbeans untuk run program kita.

Jadi, seperti software-software yang lain, kita akan membuatkan program JavaFX boleh run hanya
dengan double-click sahaja.

Icon
Sebelum kita membuat deployment, kita akan tambah sedikit lagi pada program kita, iaitu icon.
Icon biasanya diletakkan pada sesuatu software untuk memberi identiti kepada software tersebut.

Kita boleh menggunakan mana-mana software seperti GIMP atau Photoshop, untuk membuat icon.
Saya buat icon yang simple sahaja menggunakan Paint.NET. Icon tersebut mestilah menggunakan
saiz segi empat sama, contohnya 32×32, 48×48, 64×64 dan sebagainya. Icon tersebut kemudiannya
diletakkan di dalam package hellojavafx.style.
Untuk memaparkan icon pada program JavaFX, kita tambah code berikut di HelloJavaFX.java:
package hellojavafx;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;

public class HelloJavaFX extends Application {

@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("view/Home.fxml"));

Scene scene = new Scene(root);

stage.setTitle("Hello World!");
105 | P a g e
stage.getIcons().add(new
Image(getClass().getResourceAsStream("style/icon.png")));
stage.setScene(scene);
stage.show();
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}

Semestinya nama gambar tersebut mengikut nama yang anda gunakan. Selepas run, kita boleh
nampak icon tersebut di atas kiri stage tersebut.

2. Latihan

106 | P a g e

Anda mungkin juga menyukai