Anda di halaman 1dari 59

Modul 1: Pengenalan Pemrograman Berorientasi Obyek

1. Tujuan Instruksi Khusus:


 Mahasiswa dapat memahami karakteristik PBO

 Mahasiswa dapat memahami pembuatan model UML PBO

 Mahasiswa dapat membuat kelas project PBO

2. Materi:
 Pengenalan PBO
 Pemodelan PBO menggunakan UML Class Diagram
 Plant Old Java Object (POJO)

3. Referensi:
 Grady Booch, et al., Object Oriented Analyze And Design With Applications,
Addyson Wesley 2007
 Brahmah Dathan, et al., Object Oriented Analyze And Design, Springer.

4. Tools:
 Netbeans 7
 Eclipse
5. Teori

1.1 Karakteristik OOP

PBO merupakan bagian dari evolusi perangkat lunak baik dari sisi konsep
maupun produk. Untuk membedakan dengan pemrograman generasi sebelumnya,
terdapat karakteristik elemen utama yang harus terdapat didalan PBO:

1. Enkapsulasi, pengemasan dan penyembunyian suatu benda ataupun


sistem yang memungkinkan terdiri atas berbagai informasi ataupun lojik
yang kompleks, sehingga memudahkan penggunaannya. Secara
mendasar enkapsulasi ditujukan untuk menyembunyikan informasi
Information Hidding.
Melalui enkapsulasi obyek, maka akan didapatkan keuntungan :

1. Obyek dan bagian-bagian didalamnya dapat fleksibel untuk


dipindahkan, digunakan ataupun diubah dengan mudah

2. Obyek dapat dilindungi dari pengaksesan yang tidak diperkenankan

3. Obyek lebih kohesi sehingga dapat bekerja dengan lebih independen


Manusia

 Memiliki Kepala

 Memiliki Tangan

 Memiliki Kaki

+ Bisa melihat

+ Bisa makan

+ Bisa berjalan

Mobil

 Memiliki mesin

 Memiliki kemudi

 Memiliki roda

+ Bisa hidup mesinnya

+ Bisa belok

+ Bisa berjalan
2. Abstraksi, pengenalan secara umum atau high level terhadap sebuah
obyek, tanpa memerlukan pengetahuan secara detail. Contoh obyek yang
bersifat abstrak : makhluk hidup, kendaraan, dll. Untuk menyebut
manusia secara umum bisa dikatakan sebagai makhluk hidup walaupun
banyak makhluk hidup yang lain selain manusia tetapi makhluk hidup
memiliki sifat umum seperti bernafas, bergerak, berkembang biak, dll.
Ataupun penyebutan untuk mobil adalah kendaraan karena bisa bergerak
dan mengangkut barang ataupun penumpang.

“Abstraction is the concept of representing something at high level,


without going into too much details”.

Abstraksi seringkali didekati dengan hubungan “is A”

3. Modularitas, pembagian obyek kompleks kedalam bagian-bagian


individual yang mandiri dan spesifik sesuai fungsionalnya untuk
mengurangi kompleksitasnya. Untuk standar pemrograman biasanya
modularitas obyek dimasukkan kedalam folder atau package.
4. Hirarki,

1.2 Class Diagram OOP

Untuk memudahkan transformasi obyek kedalam arsitektur software,


dapat digunakan standar pemodelan UML. Dimana untuk mewakili obyek
dapat digambarkan kedalam Class Diagram, seperti halnya ditunjukkan pada
gambar enkapsulasi. Untuk

Untuk penerapan PBO terdapat beberapa ketentuan penulisan, yaitu


diantaranya:

1. Penulisan Obyek atau kelas diawali huruf kapital, seperti: Manusia, Mobil

2. Bagian dan identifikasi obyek disebut dengan atribut dan diberikan tipe
serta modifier, dengan standar penulisan

<modifier> <atribut> : <tipe>

Contoh:

Kepala Bulat, Kepala Lonjong, maka dapat dikonversikan menjadi

Private String kepala


kepala = “lonjong”;

3. Fungsi dan perilaku obyek disebut dengan metode, dengan standar


penulisan

<modifier> <methode>([parameter,…])

Contoh:

Berjalan kedepan 10 langkah

public berjalan (langkah : int)

Untuk penggambaran lengkap UML kelas diagram sebagaimana berikut:

Manusia

 private kepala:String

 private kaki:String

 private tinggi:float

+ public menengok(derajat:int)

+ public berjalan(jarak:float)

1.3 Plain Old Java Object (POJO)


Bentuk standar penulisan obyek kedalam standar bahasa pemrograman Java
sebagai implementasi PBO.
 Deklarasi class java dapat dilakukan dengan penulisan sebagai berikut:
<modifier> class <nama_class> {
[deklarasi_atribut]
[deklarasi_konstruktor]
[deklarasi_metode]
[deklarasi_setter]
[deklarasi_getter]
}

Contoh:
public class Manusia
{
…script java code here…
}

 Deklarasi atribut dapat dilakukan dengan penulisan sebagai berikut:


<modifier> <tipe> <nama_atribut> ;

Contoh:
public class Manusia {
public String kepala;
public String kaki;
public int tinggi;
}

 Deklarasi metode dapat dilakukan dengan penulisan sebagai berikut:


<modifier> <return_type> <nama_metode> ([daftar_argumen]) {
[<statement>]
}

Contoh:
public class Manusia {
private String kepala;
private String kaki;
public float tinggi;

public int berjalan(int langkah) {


return langkah;
}
}
Standar elemen POJO lainnya,

Utilitas Fungsi Standar Penulisan


Setter Mengisikan nilai kedalam <modifier> void <methode>
atribut ([parameter]){
this.<attribut> = parameter
}
Getter Membaca nilai kedalam atribut <modifier> <return type>
<methode> ( ){
return this.<attribut>
}
Constructor Pembangunan obyek default di <modifier> <class name>
memori saat pembentukan ([parameters,…]){
instance this.<attribut> = parameter
}
toString Default pencetakan nilai-nilai modifier String toString(){
atribut return [attributs,…]
}
Main Eksekusi pengujian internal public static void
class main(String[] args) {
// instance
}

Contoh implementasi POJO:

 Setter
public void setKepala(String kepala){
this.kepala =kepala;
}
 Getter
public String getKepala(){
return kepala;
}

 Constructor
public Manusia(String kepala, String kaki, String tangan) {
this.kepala = kepala;
this.kaki = kaki;
this.tangan = tangan;
}
//Penggunaan saat instance,
Manusia adi = new Manusia(“tegak”, “lurus”,”lurus”);

 Main
public static void main(String[] args) {
Manusia adi = new Manusia("tegak", "lurus",”lurus”);
System.out.println(adi);
}

6. Tugas Pendahuluan

1. Apa yang membedakan PBO dengan pemrograman struktural?

2. Apa manfaat menggunakan PBO?

3. Berikan contoh bahasa pemrograman yang menggunakan PBO?

7. Instruksi Praktikum
1. Gunakan editor IDE Netbeans untuk membuat kelas POJO dari kelas
Manusia dengan atribut sesuai kebutuhan.
2. Dengan menggunakan code generator “Insert Code” yang disediakan
netbeans, buat elemen pojo secara lengkap dan amati kode-kode yang
dihasilkan.
3. Buat instance kelas manusia pada metode main dan lakukan print toString().

8. Tugas
1. Didunia nyata manusia memiliki berbagai organ tubuh, buatlah berbagai
obyek tubuh manusia dengan menggunakan class java minimal 10 obyek
yang saling keterkaitan antara obyek yang satu dengan lainnya.
2. Dengan menggunakan editor Netbeans dan selanjutnya dengan
menggunakan code generator “Insert Code” yang disediakan netbeans, buat
elemen pojo secara lengkap dari obyek-obyek tersebut.
3. Lakukan pengujian struktur kelas pada obyek tersebut dengan menggunakan
aktifitas obyek dalam bentuk method, seperti: berjalan, makan, duduk, atau
tidur, dimana methode tersebut mampu melakukan perubahan nilai variabel
pada berbagai atribut obyek.
Modul 2: Implementasi Enkapsulasi Obyek di Bahasa

Pemrograman Java

1. Tujuan Instruksi Khusus:


 Mahasiswa dapat mengimplementasikan enkapsulasi obyek

 Mahasiswa dapat memahami pembuatan model UML dengan relasi enkapsulasi

obyek

2. Materi:
 modifier
 Pemodelan Obyek menggunakan UML Class Diagram

3. Referensi:
 Grady Booch, et al., Object Oriented Analyze And Design With Applications,
Addyson Wesley 2007
 Brahmah Dathan, et al., Object Oriented Analyze And Design, Springer.

4. Tools:
 Netbeans 7
 Eclipse
5. Teori

Untuk mengoperasikan sebuah peralatan dengan mudah, maka dibutuhkan


untuk melakukan pembungkusan struktur dan bahannya sehingga pengguna tidak
berhadapan langsung dengan berbagai bahan mentah ataupun operasional manual
detailnya. Prinsip enkapsulaasi menekankan pada penggunaan sistem operasional
yang siap pakai dan menghindarkan pada cara kerja manual yang detail dan
primitif.

Contoh : pengguna kendaraan sekarang lebih menyukai motor matic


dikarenakan operasionalnya yang mudah karena mampu mengenkapsulasi
berbagai komponen dan operasionalnya dibandingkan dengan motor manual.

Contoh kelas dan operasional motor manual,


package motor;
public class Manual {
int persneling;
int speed;
boolean coupling=false;
boolean started=false;
boolean engine;

@Override
public String toString() {
return "Manual{"+ "engine=" + engine +" persneling=" +
persneling + ", coupling=" + coupling + ", speed=" + speed +
'}';
}
public Manual(boolean isStarted) {
if(this.started==false)
this.engine = isStarted;
}

public static void main(String[] args) {


Manual m = new Manual(true);
// want to accelerate run
System.out.println(m);
m.coupling=true;
System.out.println(m);
m.persneling=1;
System.out.println(m);
m.coupling=false;
System.out.println(m);
m.speed=10;
System.out.println(m);
m.speed=20;
System.out.println(m);
m.coupling=true;
System.out.println(m);
m.persneling=2;
System.out.println(m);
m.coupling=false;
System.out.println(m);
m.speed=30;
System.out.println(m);
m.speed=40;
}

}
public static void main(String[] args) {
Manual m = new Manual(true);
// want to accelerate run
System.out.println(m);
m.coupling=true;
System.out.println(m);
m.persneling=1;
System.out.println(m);
m.coupling=false;
System.out.println(m);
m.speed=10;
System.out.println(m);
m.speed=20;
System.out.println(m);
m.coupling=true;
System.out.println(m);
m.persneling=2;
System.out.println(m);
m.coupling=false;
System.out.println(m);
m.speed=30;
System.out.println(m);
m.speed=40;
}

5.1 Modifier

Untuk mendukung enkapsulasi perlu digunakan modifier pada atribut,


metode, ataupun obyek itu sendiri. Modifier digunakan untuk menentukan ruang
batas pengaksesan, dimana terdapat 4 jenis yaitu:

1. “default”, Akses dibatasi didalam ruang luang lingkup package

2. “public”, Sepenuhnya terbuka tanpa batasan

3. “protected”, Terbatasi package dan sub-package


4. “private”, Paling tertutup dibatasi didalam ruang lingkup kelas

Melalui implementasi modifier kelas aksesor, maka dilakukan pembatasan


pengaksesan langsung terhadap nilai atribut dan lojik primitif obyek, dengan
dilakukan enkapsulasi pengaksesan hanya melalui instance class accesor dari metode
yang disediakan kelas mutator.

class Systen

Mutator

Matic

- coupling: boolean
- engine: boolean
- persneling: int
- speed: int
- started: boolean

+ accelerate() : void
+ breakDown() : void
+ start() : void

Accessor

Motor

+ accelerate() : void
+ breakDown() : void
+ start() : void

* Catatan tanda (-) private, (+) public


Untuk enkapsulasi obyek dapat digambarkan melalui diagram hirarki akses
atribut dan metode sebagaimana berikut:

Sedangkan untuk menunjukkan kondisi dan tahapan hubungannya dapat


digunakan UML Sequence Diagram.
sd System

M otor M ati c

start()

setEngi ne(true)
engi ne i s started()

accel erate()

setCoupl i ng(true)

setUpPersnel i ng(+1)

setCoupl i ng(fal se)


speed i s up()

breakDown()

setCoupl i ng(true)

setDownPersnel i ng(-1)

setCoupl i ng(fal se)


speed i s down()

Untuk implementasi dari enkapsulasi sebagaimana contoh skrip program Java


berikut:
public class Matic {
private int persneling;
private int speed;
private boolean coupling=false;
private boolean started=false;
private boolean engine=false;

@Override
public String toString() {
return "Matic{" + "persneling=" + persneling + ", speed=" + speed + ",
coupling=" + coupling + ", started=" + started + ", engine=" + engine + '}';
}

public void start(){


if(isStarted()==false){
setStarted(true);
setEngine(true);
}
else{
System.out.println("engine is turn-on");
}
}

public void accelerate(){


if(this.persneling<=6){
setCoupling(true);
setPersneling(getPersneling()+1);
setCoupling(false);
}
if(this.getSpeed<=100){
setSpeed(getSpeed()+10);
}

public void break_down(){


if(this.persneling>=0){
setCoupling(true);
setPersneling(getPersneling()-1);
setCoupling(false);
setSpeed(getSpeed()+10);
}
if(this.getSpeed>0){
setSpeed(getSpeed()-10);
}
}
public static void main(String[] args) {
Matic m = new Matic();
m.start();
m.accelerate();
System.out.println(m);
m.accelerate();
System.out.println(m);
m.accelerate();
System.out.println(m);
}
// setter-getter
}

6. Tugas Pendahuluan

1. Jelaskan apa yang dimaksud dengan enkapsulasi?

2. Apa manfaat enkapsulasi obyek?

3. Berikan contoh enkapsulasi obyek disekitar anda?

7. Instruksi Praktikum
1. Gunakan editor IDE Netbeans untuk menuliskan kelas POJO dari kelas motor
Manual dan Matic dengan atribut sesuai dengan desain hirarki.
2. Lakukan pengujian program dengan membandingkan eksekusi kedua kelas
tersebut
8. Tugas Pendahuluan

1. Jelaskan apa yang dimaksud dengan enkapsulasi?

2. Apa manfaat enkapsulasi obyek?

3. Berikan contoh enkapsulasi obyek disekitar anda?

9. Instruksi Praktikum
1. Gunakan editor IDE Netbeans untuk menuliskan kelas POJO dari kelas motor
Manual dan Matic dengan atribut sesuai dengan desain hirarki.
2. Lakukan pengujian program dengan membandingkan eksekusi kedua kelas
tersebut
3. Jelaskan perbedaan, kekurangan dan kelebihan kedua kelas tersebut.

10. Tugas
1. Buatlah desain enkapsulasi obyek pada aktifitas manusia terhadap anggota
tubuh, dengan menyempurnakan tugas praktikum 1.
2. Implementasikan desain anda kedalam kelas POJO
3. Lakukan pengujian dari sistem yang anda buat melalui penggunaan aktifitas
pada method.
Modul 3: Abstraksi Pemrograman Berorientasi Obyek

1. Tujuan Instruksi Khusus:

 Mahasiswa dapat memahami Karakteristik Abstraksi PBO

 Mahasiswa dapat memahami Konsep Inheritance PBO

 Mahasiswa dapat memahami Konsep Polymorfisme PBO

2. Materi:

 Abstraksi PBO: Abstract & Interface

 Polymorfisme

 Inheritance

 Pemodelan Abstraksi PBO menggunakan UML Class Diagram

3. Referensi:

 Grady Booch, et al., Object Oriented Analyze And Design With Applications,

Addyson Wesley 2007

 Brahmah Dathan, et al., Object Oriented Analyze And Design, Springer.

4. Tools:

 Netbeans 7

 Eclipse
5. Tugas Pendahuluan:

 Apa yang dimaksud dengan karakteristik abstraksi obyek…?

 Apa yang dimaksud dengan Interface…?

 Apa yang dimaksud dengan inheritance…?

 Apa yang dimaksud dengan polymorfisme…?

6. Teori

“Abstraction is the concept of representing something at high level, without

going into too much details”. (Greedy Booch - Jacobson)

Abstraksi, merupakan pengenalan secara umum, ringkasan atau high level

terhadap sebuah obyek, tanpa memerlukan pengetahuan secara detail. Contoh

obyek yang bersifat abstrak : Hewan mengabstraksi beragam jenis hewan seperti

ayam, anjing, kucing, dll. Sehingga kita bisa menyebut ketiga obyek tersebut adalah

hewan, dikarenakan memiliki kelakuan sebagai hewan, seperti: bisa berjalan, bisa

berbunyi. Ataupun kita bisa menyebut Mobil dimana ada beragam jenis mobil

Sedan, Truk, Bus, dimana ketiga obyek tersebut adalah mobil dikarenakan

mempunyai mesin, bisa berjalan, bisa mengangkut orang atau barang, dll.
Dalam pemodelan UML Class diagram abstraksi obyek dapat digambarkan sebagai

berikut:

class System

Car

- coupling: boolean
- engine: boolean
- persneling: int
- speed: int
- started: boolean

+ accelerate() : int
+ breakDown() : int
+ start() : boolean
+ stop() : boolean

Manual Matic

+ accelerate() : int + accelerate() : int


+ breakDown() : int + breakDown() : int
+ start() : boolean + start() : boolean
+ stop() : boolean + stop() : boolean
Dari model Class diagram diatas dapat diuraikan Car sebagai Superclass

memiliki berbagai atribut yang dapat diwariskan kepada obyek Subclass dari

berbagai jenis Car seperti halnya mobil Manual dan Matic. Selain mewarisi atribut,

mobil Manual dan Matic harus memiliki fungsional dasar yang harus ada untuk

dikatakan sebagai Car yaitu bisa start, stop, accelerate dan breakdown. Namun

dikarenakan tiap obyek turunan Subclass memiliki ciri dan kerja yang spesifik dan

berbeda antara satu dengan yang lainnya maka kedua obyek Manual dan Matic bisa

menentukan bagaimana cara kerjanya masing-masing.

Karena itu dalam konsep OOP, karakteristik abstraksi obyek didukung

melalui penerapan konsep utama OOP yaitu inheritance dan polimorfisme. Melalui

inheritance digunakan untuk mewariskan berbagai atribut dan fungsional dasar,

sedangkan melalui polimorfisme digunakan untuk dapat melakukan modifikasi

dan pengembangan dari fungsional yang sudah ditetapkan.

Inheritance

Abstraction

Polymorfisme

Untuk realisasi dari abstraksi obyek sendiri, dapat digunakan dua metode

yaitu:

1. Abstrak

2. Interface.
Obyek abstract terdiri atas methode abstract sebagai jalur pengaksesan yang

akan diimplementasikan oleh berbagai obyek turunannya, selain itu obyek abstract

dapat dibekali dengan beragam konten properti atribut dan method yang dapat

diwariskan, dikembangkan dan dimodifikasi oleh obyek turunannya. Dengan

konsep tersebut obyek abstract didukung secara penuh melalui implementasi

konsep Inheritance dan Polymorfisme obyek.

Berikut aturan dari obyek Abstract:

1. Dapat memiliki keseluruhan property dan mewariskannya kepada

obyek turunannya

2. Abstract methode merupakan kontrak yang harus dipenuhi oleh obyek

turunan

3. Tidak dapat dibangun instance dari Superclass, sehingga Superclass

hanya sebagai prototype. Implementasi melalui instance hanya bisa

dilakukan pada subclass.

4. Obyek turunan subclass ditujukan sebagai obyek implementator untuk

melakukan perubahan cara kerja dan pengembangan fungsional obyek.

Sistematika penulisan kelas Superclass abstract :

<modifier> abstract class <Class_name>

Sedangkan obyek turunan subclass :

<modifier> class <Class_name> extends <Superclass>

Bentuk yang lain dari abstraksi adalah Interface, dimana Interface merupakan

abstraksi dengan bentuk yang lebih sederhana. Berikut ketentuan Interface:


1. Interface hanya digunakan sebagai pengantar atau penghubung sebuah

obyek, sehingga bukan obyek itu sendiri. Karena itu interface tidak

memiliki properti lengkap namun hanya kontrak methode.

2. Interface diimplementasikan melalui berbagai kelas implementator, yang

terikat yang harus memiliki kontrak method sebagaimana telah

ditentukan interface.

Sistematika penulisan kelas Superclass abstract :

<modifier> interface class <Class_name>

Sedangkan obyek turunan subclass :

<modifier> class <Class_name> extends <Superclass>

Contoh Interface:

Sedangkan pada kelas implementator:


public class Mycar implements Otocar{
private boolean engine=false;
private boolean start=false;
private int speed;
private int persneling;
private boolean coupling;

@Override
public boolean start() {

}

@Override
public boolean stop() {

}

@Override
public int accelerate() {

}

@Override
public int breakdown() {

}
//…

6.1. Inheritance

Inheritance merupakan pewarisan atribut dan method pada sebuah class yang

diperoleh dari class yang telah terdefinisi tersebut. Setiap subclass akan mewarisi state

(variabel-variabel) dan behaviour (method-method) dari superclass-nya. Subclass

kemudian dapat menambahkan state dan behaviour baru yang spesifik dan dapat pula

memodifikasi (override) state dan behaviour yang diturunkan oleh superclass-nya.

Keuntungan dari inheritance adalah :

1. Subclass mewarisi semua property yang terdapat didalam Superclass


2. Subclass menyediakan state/behaviour yang spesifik yang membedakannya

dengan superclass, hal ini akan memungkinkan programmer Java untuk

menggunakan ulang source code dari superclass yang telah ada.

3. Pewarisan yang mengikat sesuai kontrak menggunakan abstract class.

Keywords inheritance yang perlu diperhatikan :

Extends : Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass

yang menunjukkan sebagai obyek pewaris.

Super : Keyword ini digunakan oleh subclass untuk mengakses properti yang telah

disediakan oleh superclass.

Sistematika penulisan kelas Subclass abstract :

<modifier> class <Class_name> extends <Superclass>

6.2. Polymorfisme

Polymorfisme merupakan konsep OOP yang ditujukan untuk melakukan

perubahan pada methode implementator di subclass terhadap methode yang telah

diwariskan dari superclass. Melalui konsep ini maka polymorfisme juga terkait dengan

inheritance, dimana pengembangan obyek dapat dilakukan dengan dinamis dengan

tetap dapat menggunakan ulang properti yang telah diwariskan. Kata kunci dari

polymorfisme adalah @override, yang menggunakan notifikasi @ sebagai penanda

bahwa methode yang dituliskan setelahnya adalah sebuah methode warisan yang

dilakukan perubahan fungsi kerjanya.

Sistematika penulisan kelas Superclass abstract :

@override

<modifier> <methode_name>
6.3. Impelementasi Abstract Class

Berikut contoh penerapan abstract class sebagai superclass, class Car:

Sedangkan subclass turunan yang menerapkan inheritance dan polymorfisme:

class Manual

class Matic
7. Instruksi Praktikum

1. Gunakan editor IDE Netbeans untuk membuat abstract superclass Car dan

tuliskan semua properti sebagai prototype class.

2. Dari source code yang telah disediakan:

Buatlah subclass yang terdiri atas Manual dan Matic, kembangkan metode

Car untuk bisa bekerja dengan mode Manual dan matic

3. Buat instance kelas Car dengan mode Manual dan Matic, simulasikan

bagaimana Car dapat seolah-olah bisa bekerja dengan dua mode Manual dan

Matic.

8. Tugas

1. Dari ilustrasi berikut buatlah konsep abstraksinya:

Dalam kehidupan kampus terdapat obyek-obyek Civitas yang berinteraksi

yaitu diantaranya: Dosen, Mahasiswa dan Staff.

Civitas memiliki atribut umum:


 Nama

 Nid

 Prodi

Sedangkan mereka memiliki fungsi dan perilaku yang berbeda:

 Pekerjaan

 Jam masuk

Dimana sesuai dengan class diagram berikut:


class Class Model

Civitas

- Name: String
- Nid: String
- Prodi: String

+ masukKerja() : void
+ pekerjaan() : void

Dosen Mahasisw a Staff


- bidangMinat: String - bidangMinat: String - fungsional: String
- riset: String
+ masukKerja() : void + masukKerja() : void
+ masukKerja() : void + pekerjaan() : void + pekerjaan() : void
+ pekerjaan() : void

2. Jelaskan bagaimana proses penggunaan dari abstraksi obyek dari program

yang anda kembangkan!


Modul 4: Object Generic
1. Tujuan Instruksi Khusus:

 Mahasiswa dapat memahami konsep adaptif object java generic

 Mahasiswa dapat memahami pengolahan data secara object

2. Materi:

 Collection object data type

 Comparator

3. Referensi:

 Java Head First

 Data Structures and Algoritma in Java

4. Tools:

 Netbeans 7

5. Java Generic Object

Java generic merupakan salah satu konsep penting untuk mengoptimalkan


kemampuan pemrograman pada pengolahan struktur data tingkat lanjut.
Impelementasi struktur data tersebut diimplementasikan melalui Framework
Collection didalam Java, yang terdiri atas:

 List
 LinkedList
 Map
 Hashmap
 Set
 Hashset
 TreeSet
Semua tipe dari collection tersebut adalah object sehingga dapat digunakan
untuk mengelolah semua jenis tipe data serta object. Dimana untuk pembatasannya
digunakan operator diamond ‘<>’, jika menggunkan operator ini maka collection hanya
memiliki satu tipe data atau object.

5.1. Object Type


Tipe data object dasar yang disediakan java adalah ‘object’ yang menyediakan
kemampuan adaptif untuk dapat ditempati (Casting) berbagai macam tipe data, object ataupun
collection.
Sistematika penulisan Object type,
<Object> var = new Object()
Contoh:
public class MyObject {
public static void main(String[] args) {
int[] ari = { 1,2,3,4,5,6,7,8,9};
Object aku = new Object();
aku = 1;
aku = "mahasiswa";
aku = ari;
System.out.println(aku);
for(Object i : ari) {
System.out.println(i);
}
}
}

5.2. List
5.3. Map
5.4. Set
5.5. Comparator
Modul 5: GUI 1 Dan Event Handler

1. Tujuan Instruksi Khusus:

 Mahasiswa dapat memahami penggunaan GUI dengan implementasi konsep-

konsep PBO

 Mahasiswa dapat memahami penggunaan Event-Handler

2. Materi:

 GUI : AWT & Swing

 Desain Layout GUI

 Event-Handler

3. Referensi:

 Brahmah Dathan, et al., Object Oriented Analyze And Design, Springer.

 Java For Dummies edition 4.

4. Tools:

 Netbeans 7

 Eclipse
5. Tugas Pendahuluan:

 Apa yang dimaksud dengan GUI…?

 Apa yang dimaksud dengan Event Handler…?

 Apa Kegunaan dari komponen Frame…?

6. Teori

6.1 GUI
Graphical User Interface (GUI), merupakan interface grafis fungsional yang

diperuntukkan untuk memudahkan operasional sebuah aplikasi bagi penggunanya

dengan pendekatan WYSWYG. Pemrograman interface GUI di Java diawali dengan

pengembangan container Java AWT, yang berkembang sampai versi 2. AWT terdiri

atas komponen-komponen grafis dasar sehingga sangat sesuai untuk

pengembangan multi platform namun ketersediaan komponen terbatas. Hirarki

komponen AWT ditunjukkan pada Gambar …berikut:

Saat ini untuk pengembangan container GUI lebih dititik beratkan pada

platform Swing atau Jswing atau Java Frame Container (JFC). Java Swing
merupakan perkakas GUI turunan AWT yang sangat lengkap dan siap pakai

dengan kelengkapan berbagai fitur komponen yang mudah penggunaannya.

Komponen utama yang digunakan sebagai kontainer peletakan komponen

adalah Frame sebagai windows dan Panel sebagai pemaket komponen. Diantara

komponen yang tersedia didalam container Swing:

 Borders  Menus
 Buttons  Popup Menus
 Checkboxes  Radio Buttons
 ComboBoxes  Progress Bars
 Image Icons  Scrolling Support
 Labels  Scrollbars
 Layered Panes and Internal  Splitter Control
Frames (MDI)
 Lists and List Boxes  Tabbed Panes
 Borders  Menus
 Buttons  Popup Menus
 Checkboxes  Radio Buttons
 ComboBoxes  Progress Bars
 Image Icons  Scrolling Support
 Labels  Scrollbars
 Layered Panes and Internal  Splitter Control
Frames (MDI)
 Lists and List Boxes  Tabbed Panes

Penyusunan pemrograman GUI ditentukan secara hirarki sesuai dengan

peletakan komponen GUI Java sebagaimana ditunjukkan pada Gambar


Contoh Program:

public static void main(String[] args) {


JFrame f = new JFrame("layout manager");
f.setLayout(new BorderLayout());
Panel pane = new Panel(new FlowLayout(10));
pane.setBackground(Color.WHITE);
Label label = new Label("Name");
TextField teks = new TextField();
teks.setColumns(20);
pane.add(label);
pane.add(teks);
f.add(pane);
f.setVisible(true);
f.setSize(300, 400);
f.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}

Sesuai dengan hirarki tersebut, semua aplikasi GUI JSwing menggunakan Jframe

sebagai komponen dasar window tampilan GUI serta container komponen lainnya.
Sedangkan untuk penempatan komponen didalam Jframe digunakan panel-panel dari

komponen Jpanel sehingga komponen mudah untuk diatur sesuai dengan layout

dengan menggunakan pemanggilan content pane.

Pada tiap komponen GUI terdapat properti untuk mengkonfigurasikan tampilan

dan bentuk komponen seperti untuk frame memiliki berbagai properti sebagai berikut:

 Mengatur warna : frame.setBackground(Color.yellow);

 Mengatur ukuran : frame.setSize(300, 400);

 Mengatur kursor : frame.setCursor(teks.getCursor());

 Mengatur tampilan : frame.setVisible(true);

 Menentukan kondisi ketika close :

f.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

 Dan berbagai properti lainnya.

Selain mengatur dan menentukan properti yang dimiliki oleh setiap komponen,

pengaturan posisi komponen juga sangat penting untuk menjaga kualitas tampilan

GUI. Pengaturan tampilan dilakukan menggunakan aturan layout pada container

frame, dimana terdapat beragam jenis layout sebagai pilihan, diantaranya:

 Flowlayout: bentuk layout yang paling sederhana, dimana setiap komponen

akan mengalir secara dinamis mengikuti line horizontal.

C1 C2

 BorderLayout: bentuk layout mengikuti garis mata angin yang terdiri atas:

center, North, South, West dan East.

North

West Center East

South
Contoh:

 panel.add(aComponent, BorderLayout.CENTER);

 panel.add(anotherComponent, BorderLayout.SOUTH);

 GridLayout: bentuk layout jumlah mengikuti dimensi baris-kolom, dan

pengembangannya terdapat beberapa tipe layout seperti: GridBagLayout

serta BoxLayout. Contoh apabila ditentukan baris kolom 2x2 maka peletakan

komponen akan diatur sesuai dimensi baris kolom sebagaimana Gambar

berikut:
C1 C2

C3 C4

Contoh:

 Panel p = new Panel(new GridLayout(2, 2));

6.2 Event Handler


Komponen-komponen hanyalah sebuah tampilan grafis apabila tidak memiliki

event-handler, dimana event-handler berfungsi untuk memberikan event kejadian pada

komponen seperti: click,exit,dll. dan dibagian lainnya terdapat listener untuk

mendengarkan setiap event serta kemudian memberikan action.

Pemberian event-handler dapat dilakukan secara global melalui implementasi

interface event-handler, sebagaimana contoh berikut:


public class Aplikasiku extends JFrame implements ActionListener{
button = new Button("ok");
button.addActionListener(this); // memasang listener
...
public void actionPerformed(ActionEvent e){
if(e.getSource()==button){ //menguji adanya event pada komponen
result.setText(“aku button telah di click”); // aksi
}
Sedangkan secara local yang biasa disediakan oleh IDE GUI seperti

NetBeans:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {


Object msg = JOptionPane.showConfirmDialog(rootPane, "Are you sure", "add
new data", JOptionPane.OK_CANCEL_OPTION);
if(msg.equals(JOptionPane.OK_OPTION)){
JOptionPane.showConfirmDialog(rootPane, "data is saved");
}
else{
JOptionPane.showConfirmDialog(null, "cancel");
}
}

Sedangan cara lainnya, Event-Handler juga terdapat pada berbagai

interface default seperti halnya event-handler untuk mouse atau keyboard. Contoh

event-handler untk mouse:

import java.awt.event.MouseEvent;
public interface MouseListener {
public void mousePressed(MouseEvent evt);
public void mouseReleased(MouseEvent evt);
public void mouseClicked(MouseEvent evt);
public void mouseEntered(MouseEvent evt);
public void mouseExited(MouseEvent evt);
\

5. Tugas Pendahuluan

1. Jelaskan apa yang dimaksud dengan GUI?

2. Jelaskan secara hirarki pemrograman GUI, dan mengapa diperlukan tahapan


hirarkinya?

3. Apa yang dimaksud dengan event-handler, dan jelaskan bagaimana cara


kerjanya?

7. Instruksi Praktikum

1. Buatlah desain-desain sederhana GUI dengan menggunakan flow-layout, dan

berikan event handler sederhana dengan aksi pesan sederhana.


public class Layout {
public static void main(String[] args) {
JFrame f = new JFrame("layout manager");
f.setLayout(new BorderLayout());
Panel pane = new Panel(new FlowLayout(10));
pane.setBackground(Color.WHITE);
Label label = new Label("Name");
TextField teks = new TextField();
teks.setColumns(20);
pane.add(label);
pane.add(teks);
f.getContentPane().add(pane);
f.setVisible(true);
f.setSize(300, 400);
f.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
f.setBackground(Color.yellow);
f.setCursor(teks.getCursor());
}
}
2. Terapkan layout sederhana dengan menggunakan GridLayout, sebagaimana

code program berikut ini:

public class MyFrame extends JFrame implements ActionListener{


TextField input1, input2, hasil;
Button tambah,kurang;
public MyFrame() throws HeadlessException {
super("MyFrame");
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 2));
input1 = new TextField();
input1.addActionListener(this);
tambah = new Button("tambah");
tambah.addActionListener(this);
input2 = new TextField();
input2.addActionListener(this);
kurang = new Button("kurang");
kurang.addActionListener(this);
hasil = new TextField();
this.add(panel);
panel.add(input1);
panel.add(input2);
panel.add(tambah);
panel.add(kurang);
panel.add(hasil);
pack();
setVisible(true);
setSize(100,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==tambah){
double a = Double.parseDouble(input1.getText());
double b = Double.parseDouble(input2.getText());
double result = a+b;
hasil.setText(Double.toString(result));
}
if(e.getSource()==kurang){
double a = Double.parseDouble(input1.getText());
double b = Double.parseDouble(input2.getText());
double result = a-b;
hasil.setText(Double.toString(result));
}
}

public static void main(String[] args){


MyFrame m = new MyFrame();
}
}

3. Dari hasil aplikasi GUI yang dihasilkan source code tersebut lakukanlah

modifikasi untuk memperbaiki tampilan dan tambahan fungsionalnya sesuai

yang anda inginkan.

8. Tugas

1. Buatlah kalkulator untuk operasional dasar

penjumlahan,pengurangan,pembagian dan perkalian dengan menggunakan

scratch code.
Modul 6: GUI Component & Data Binding

1. Tujuan Instruksi Khusus:


 Mahasiswa dapat memahami penggunaan GUI dengan implementasi konsep-

konsep PBO

 Mahasiswa dapat memahami penggunaan Data Binding

2. Materi:

 GUI : Visual JSwing

 Desain Layout GUI Visual

 Binding Data

 Database

3. Referensi:

 Brahmah Dathan, et al., Object Oriented Analyze And Design, Springer.

 Java For Dummies edition 4.

4. Tools:

 Netbeans 7

 Eclipse
5. Tugas Pendahuluan:

 Apa yang dimaksud dengan data binding…?

 Sebutkan contoh komponen yang dapat diberikan data binding dalam

bentuk koleksi?

6. Teori

Untuk memberikan kemudahan desain aplikasi java desktop, berbagai


IDE Java memberikan editor desktop melalui visualisasi komponen designer.
Seperti halnya pada modul ini akan dibahas bagaimana melakukan desain
yang hanya menggunakan drag and drop tiap komponen sekaligus
melakukan pengolahan data. Berikut gambaran desainer visual yang
disediakan oleh IDE Netbeans, sebagaimana ditunjukkan pada Gambar 5.1.

Melalui visual desainer kita bisa menempatkan komponen secara Drag &
Drop dimana Ide akan melakukan penyesuaian antara peletakan komponen
visual dengan code program. Berikut adalah mekanisme binding kedalam
beberapa komponen GUI.
6.1 TextField
Contoh sederhana untuk binding komponen dan data adalah untuk
melakukan sinkronisasi nilai antara komponen slider dengan nilai integer
yang tertera didalam TextField.

Langkah-langkah untuk binding data antara kedua komponen tersebut


adalah sebagai berikut:
1. Klik kanan komponen JtextField, pilih Bind – text.
2. Maka akan muncul pengaturan pemilihan Binding, dimana untuk contoh
ini dipilih sumber Binding adalah nilai dari jSlider sehingga nilai
TextField akan berubah sesuai dengan nilai pergeseran jSlider.
6.2 ComboBox
Untuk melakukan data binding pada komponen yang memiliki koleksi
data seperti ComboBox maka diperlukan untuk membentuk model sebagai
sumber data. Komponen-komponen data binding pada Java menggunakan
standar koleksi array[].
Contoh berikut adalah untuk binding data pada comboBox seperti hanya
ditunjukkan pada Gambar berikut:

Untuk pengaturan desain, letakkan komponen JcomboBox dan JtextField pada


Jframe sebagaimana ditunjukkan pada Gambar berikut:
Untuk mengisikan data model, pilih properties model dan isikan data list
yan dibutuhkan. Dan kemudian berikan action untuk perubahan item yang
dipilih untuk ditampilkan pada textfield.
public class SetUpCombo extends DefaultComboBoxModel<Object>{
public SetUpCombo(Object[] items) {
super(items);
}
@Override
public Object getSelectedItem(){
Object selectedObject = (Object) super.getSelectedItem();
return selectedObject;
}
}

Untuk implementasinya, sebagaimana ditunjukkan pada aplikasi binding


comboBox sebagai berikut:

6.3 Table
Komponen Table merupakan komponen visual yang paling komplek
untuk pembentukan binding datanya, karena dimensi table yang terdiri atas data
grid. Untuk sumber data binding Table dapat menggunakan sumberdata
persistance data, dimana untuk fasilitas yang diberikan Netbeans dengan
menyediakan model dari JPA Bean sesuai dengan nama Table dari Database.
Contoh dengan service database dan schema table data menggunakan
database embedded Derby yang menjadi fasilitas Netbeans, dapat dilakukan
binding sebagaimana ditunjukkan pada Gambar berikut:
Dimana setelah koneksi sukses dan data telah dibinding akan ditampilkan
pengaturan Field table sebagai berikut,

Sehingga setelah pengaturan selesai maka dapat dihasilkan Gambar tampilan


Table sebagai berikut,
7. Instruksi Praktikum

Sesuai dengan ketiga contoh data binding lakukan praktek pengaturan


komponen pada IDE sesuai dengan tahapannya sampai dihasilkan tampilan yang
dikehendaki.

8. Tugas

 Buatlah tampilan aplikasi data binding lengkap sebgaimana ditunjukkan pada


Gambar berikut:
Modul 6: GUI dan Manajemen Transaksi Data

1. Tujuan Instruksi Khusus:


 Mahasiswa dapat memahami penggunaan GUI untuk manajemen transaksi data

 Mahasiswa dapat memahami penggunaan SQL Query

 Mahasiswa dapat membangun Model Data Table

 Mahasiswa dapat mengatur Manajemen Transaksi data dengan database.

2. Tujuan Instruksi Khusus:


 GUI : Visual JSwing

 Desain Layout GUI Visual

 Binding Data

 Database

3. Tujuan Instruksi Khusus:


 Brahmah Dathan, et al., Object Oriented Analyze And Design, Springer.

 Java For Dummies edition 4.

4. Tujuan Instruksi Khusus:


 Netbeans 7

 Eclipse
5. Tujuan Instruksi Khusus:

 Apa yang dimaksud dengan data binding…?

 Sebutkan contoh komponen yang dapat diberikan data binding dalam

bentuk koleksi?

6. Tujuan Instruksi Khusus:


Untuk memberikan kemudahan desain aplikasi java desktop, berbagai
IDE Java memberikan editor desktop melalui visualisasi komponen designer.
Seperti halnya pada modul ini akan dibahas bagaimana melakukan desain
yang hanya menggunakan drag and drop tiap komponen sekaligus
melakukan pengolahan data. Berikut gambaran desainer visual yang
disediakan oleh IDE Netbeans, sebagaimana ditunjukkan pada Gambar 5.1.

7. Tujuan Instruksi Khusus:

8. Tujuan Instruksi Khusus:

9. Tujuan Instruksi Khusus:

10. Tujuan Instruksi Khusus:

11.

Anda mungkin juga menyukai