praktikum pbo 1-6 v2015
DESCRIPTION
Praktikum PBO 1-6 v2015TRANSCRIPT
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:
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)
{
…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,
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; }
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;
}
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; }
}
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; }
}
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
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.
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()
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);
}
}
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
}
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
Matic
+ accelerate() : int
+ breakDown() : int
+ start() : boolean
+ stop() : boolean
Manual
+ accelerate() : int
+ breakDown() : int
+ start() : 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.
Untuk realisasi dari abstraksi obyek sendiri, dapat digunakan dua metode
yaitu:
1. Abstrak
2. Interface.
Inheritance
Polymorfisme
Abstraction
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:
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() {
…
}
//…
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:
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
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
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
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);
}
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
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:
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);
}
\
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);
}
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();
}
}
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.
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;
}
}
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.