praktikum pbo 1-6 v2015

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

Upload: anonymous-cy5hyw

Post on 20-Feb-2016

106 views

Category:

Documents


8 download

DESCRIPTION

Praktikum PBO 1-6 v2015

TRANSCRIPT

Page 1: Praktikum PBO 1-6 v2015

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

Page 2: Praktikum PBO 1-6 v2015

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.

Page 3: Praktikum PBO 1-6 v2015

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

Page 4: Praktikum PBO 1-6 v2015

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

Page 5: Praktikum PBO 1-6 v2015

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.

Page 6: Praktikum PBO 1-6 v2015

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

Page 7: Praktikum PBO 1-6 v2015

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:

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

Manusia

private kepala:String

private kaki:String

private tinggi:float

+ public menengok(derajat:int)

+ public berjalan(jarak:float)

Page 8: Praktikum PBO 1-6 v2015

{

…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;

}

}

Page 9: Praktikum PBO 1-6 v2015

Standar elemen POJO lainnya,

Contoh implementasi POJO:

Setter

Utilitas Fungsi Standar Penulisan

Setter Mengisikan nilai kedalam

atribut

<modifier> void <methode>

([parameter]){

this.<attribut> = parameter

}

Getter Membaca nilai kedalam atribut <modifier> <return type>

<methode> ( ){

return this.<attribut>

}

Constructor Pembangunan obyek default di

memori saat pembentukan

instance

<modifier> <class name>

([parameters,…]){

this.<attribut> = parameter

}

toString Default pencetakan nilai-nilai

atribut

modifier String toString(){

return [attributs,…]

}

Main Eksekusi pengujian internal

class

public static void

main(String[] args) {

// instance

}

public void setKepala(String kepala){

this.kepala =kepala; }

Page 10: Praktikum PBO 1-6 v2015

Getter

Constructor

Main

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.

public static void main(String[] args) { Manusia adi = new Manusia("tegak", "lurus",”lurus”);

System.out.println(adi); }

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”);

public String getKepala(){ return kepala;

}

Page 11: Praktikum PBO 1-6 v2015

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.

Page 12: Praktikum PBO 1-6 v2015

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

Page 13: Praktikum PBO 1-6 v2015

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,

Page 14: Praktikum PBO 1-6 v2015

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; }

}

Page 15: Praktikum PBO 1-6 v2015

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

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; }

}

Page 16: Praktikum PBO 1-6 v2015

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.

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

class Systen

Matic

- coupling: boolean

- engine: boolean

- persneling: int

- speed: int

- started: boolean

+ accelerate() : void

+ breakDown() : void

+ start() : void

Motor

+ accelerate() : void

+ breakDown() : void

+ start() : void

Accessor

Mutator

Page 17: Praktikum PBO 1-6 v2015

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.

Page 18: Praktikum PBO 1-6 v2015

Untuk implementasi dari enkapsulasi sebagaimana contoh skrip program Java

berikut:

sd System

MaticMotor

start()

setEngine(true)

engine is started()

accelerate()

setCoupling(true)

setUpPersneling(+1)

setCoupling(false)

speed is up()

breakDown()

setCoupling(true)

setDownPersneling(-1)

setCoupling(false)

speed is down()

Page 19: Praktikum PBO 1-6 v2015

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);

}

}

Page 20: Praktikum PBO 1-6 v2015

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

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

}

Page 21: Praktikum PBO 1-6 v2015

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.

Page 22: Praktikum PBO 1-6 v2015

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

Page 23: Praktikum PBO 1-6 v2015

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.

Page 24: Praktikum PBO 1-6 v2015

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

Matic

+ accelerate() : int

+ breakDown() : int

+ start() : boolean

+ stop() : boolean

Manual

+ accelerate() : int

+ breakDown() : int

+ start() : boolean

+ stop() : boolean

Page 25: Praktikum PBO 1-6 v2015

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.

Untuk realisasi dari abstraksi obyek sendiri, dapat digunakan dua metode

yaitu:

1. Abstrak

2. Interface.

Inheritance

Polymorfisme

Abstraction

Page 26: Praktikum PBO 1-6 v2015

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:

Page 27: Praktikum PBO 1-6 v2015

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:

Page 28: Praktikum PBO 1-6 v2015

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

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() {

}

//…

Page 29: Praktikum PBO 1-6 v2015

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>

Page 30: Praktikum PBO 1-6 v2015

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

Page 31: Praktikum PBO 1-6 v2015

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:

Page 32: Praktikum PBO 1-6 v2015

Nama

Nid

Prodi

Sedangkan mereka memiliki fungsi dan perilaku yang berbeda:

Pekerjaan

Jam masuk

Dimana sesuai dengan class diagram berikut:

2. Jelaskan bagaimana proses penggunaan dari abstraksi obyek dari program

yang anda kembangkan!

class Class Model

Civitas

- Name: String

- Nid: String

- Prodi: String

+ masukKerja() : void

+ pekerjaan() : void

Dosen

- bidangMinat: String

- riset: String

+ masukKerja() : void

+ pekerjaan() : void

Mahasiswa

- bidangMinat: String

+ masukKerja() : void

+ pekerjaan() : void

Staff

- fungsional: String

+ masukKerja() : void

+ pekerjaan() : void

Page 33: Praktikum PBO 1-6 v2015
Page 34: Praktikum PBO 1-6 v2015

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

Page 35: Praktikum PBO 1-6 v2015

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

Page 36: Praktikum PBO 1-6 v2015

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

Page 37: Praktikum PBO 1-6 v2015

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

Page 38: Praktikum PBO 1-6 v2015

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

Frames (MDI)

Splitter Control

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

Frames (MDI)

Splitter Control

Lists and List Boxes Tabbed Panes

Penyusunan pemrograman GUI ditentukan secara hirarki sesuai dengan

peletakan komponen GUI Java sebagaimana ditunjukkan pada Gambar

Page 39: Praktikum PBO 1-6 v2015

Contoh Program:

Sesuai dengan hirarki tersebut, semua aplikasi GUI JSwing menggunakan Jframe

sebagai komponen dasar window tampilan GUI serta container komponen lainnya.

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);

}

Page 40: Praktikum PBO 1-6 v2015

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.

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

center, North, South, West dan East.

C1 C2

North

South

Center West East

Page 41: Praktikum PBO 1-6 v2015

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

}

}

Page 42: Praktikum PBO 1-6 v2015

Sedangkan secara local yang biasa disediakan oleh IDE GUI seperti

NetBeans:

Sedangan cara lainnya, Event-Handler juga terdapat pada berbagai

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

event-handler untk mouse:

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");

}

}

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);

}

Page 43: Praktikum PBO 1-6 v2015

\

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.

Page 44: Praktikum PBO 1-6 v2015

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());

}

}

Page 45: Praktikum PBO 1-6 v2015

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);

}

Page 46: Praktikum PBO 1-6 v2015

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.

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();

}

}

Page 47: Praktikum PBO 1-6 v2015
Page 48: Praktikum PBO 1-6 v2015

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

Page 49: Praktikum PBO 1-6 v2015

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.

Page 50: Praktikum PBO 1-6 v2015

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.

Page 51: Praktikum PBO 1-6 v2015

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.

Page 52: Praktikum PBO 1-6 v2015

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:

Page 53: Praktikum PBO 1-6 v2015

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.

Page 54: Praktikum PBO 1-6 v2015

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:

public class SetUpCombo extends DefaultComboBoxModel<Object>{

public SetUpCombo(Object[] items) {

super(items);

}

@Override

public Object getSelectedItem(){

Object selectedObject = (Object) super.getSelectedItem();

return selectedObject;

}

}

Page 55: Praktikum PBO 1-6 v2015

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,

Page 56: Praktikum PBO 1-6 v2015

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:

Page 57: Praktikum PBO 1-6 v2015
Page 58: Praktikum PBO 1-6 v2015

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

Page 59: Praktikum PBO 1-6 v2015

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.