• Tidak ada hasil yang ditemukan

Pertama tama akan kita hubungkan Sequence diagram Mencatat transaksi peminjaman dengan Class Diagram Perpustakaan. Klik kanan pada tempat kosong kemudian open

Dalam dokumen UML dan Java Application (Halaman 48-77)

specification

Java Bootcamp 2011 49 10. Pada Diagrams pilih Class Diagram kemudian beri tanda check pada Class Diagram

Perpustakaan lalu OK

11.

Java Bootcamp 2011 50 LifeLine

12. Kemudian silahkan anda tambahkan Class Transaksi Peminjaman dari Class Diagram ke sequence diagram yang sedang anda buat, apabila diminta memilih lifeline atau class pilih life line, dengan cara Drag Transaksi Peminjaman dari Class Diagram Perpustakaan ke Squence Diagram Mencatat transaksi peminjaman

Java Bootcamp 2011 51 Pada toolbox silahkan anda ganti message dengan call message

14. Buat call message dari tombol proses ke lifeline TransaksiPeminjaman

Java Bootcamp 2011 52 Message dan Parameter

16. Maka akan muncul window berikut

Java Bootcamp 2011 53 17. Kemudian pilih tab Parameters, tambahkan parameter dengan menekan tombol add

Pada name isikan nim, type isikan string, direction pilih in kemudian OK 18. Maka akan terdapat 1 buah parameter baru, pilih OK

Java Bootcamp 2011 54 19. Maka akan tampak seperti berikut

Untuk menampilkan info lengkap dari method bolehPinjam maka klik kanan pada tempat kosong kemudian ikuti gambar berikut

Java Bootcamp 2011 55 20. Coba anda perhatikan lagi gambar yang barusan dihasilkan

Return Message

Java Bootcamp 2011 56 22. Maka akan menghasilkan gambar berikut

23. Tambahkan message dari Tombol Proses ke Form Peminjaman, kemudian beri nama “munculkan pesan proses peminjaman tidak bisa dilanjutkan”

Fragment

24. Klik kanan pada message yang anda buat di nomor 2.3, kemudian pilih Create Combinet Fragment  Alt

Java Bootcamp 2011 57 25. Maka hasilnya akan seperti gambar berikut ini

Operand didalam Fragment

26. Silahkan anda klik kanan pada fragment kemudian Operand  Add Operand, lalu tambahkan 1 buah message lagi dari tombol proses ke form peminjaman, beri nama pesannya “aktifkan input peminjaman koleksi ” , pastikan bahwa pesan ini terletak di operand yang bawah

Java Bootcamp 2011 58 27. Klik kanan pada Fragment kemudian Open Spesification, pilih Iteraction Operand

Pilih Operand, kemudian Open Specification  Guard. Pada Constraint isikan bolehPinjam=false.

Untuk Operand2 klik Open Specification  Guard. Pada Constraint isikan bolehPinjam=true

Pada Operand, apabila hasil dari pemanggilan method bolehPinjam adalah false maka akan memunculkan pesan di form peminjaman yang berisi “Peminjaman tidak bisa dilanjutkan”, bila true maka akan mengaktifkan input peminjaman koleksi

Java Bootcamp 2011 59 28. Buat message dari Petugas Perpus ke Form Peminjaman, kemudian beri nama “input kode

koleksi”

Java Bootcamp 2011 60 30. Buat message dari Petugas Perpus ke Tombol Simpan Peminjaman dengan nama

31. Tambahkan 1 buah message dari Tombol Simpan Peminjaman ke LifeLine TransaksiPeminjaman

Type message

Java Bootcamp 2011 61 33. Klik kanan pada pesan 4.1 kemudian Select Operation Create Operation

34. Berinama operation ini dengan nama simpanPeminjaman, return type boolean

35. Pada parameter buat 2 buah parameter yaitu kodeKoleksi dan npm, kedua parameter bertipe string, untuk parameter kodeKoleksi multiplicitynya beri nila 1..* dan

Java Bootcamp 2011 62 36. Hasil akhirnya seperti berikut

Java Bootcamp 2011 63 Sequence Login

Java Bootcamp 2011 64 Squence Peminjaman oleh Karyawan

Java Bootcamp 2011 65 Sequence Diagram Pengembalian oleh Karyawan

Java Bootcamp 2011 66 Sequence Diagram Peminjaman oleh Mahasiswa

Java Bootcamp 2011 67 Sequence Diagram Pengembalian oleh mahasiswa

Java Bootcamp 2011 68 Sequence Diagram Penambahan Data Mahasiswa

Java Bootcamp 2011 69 Sequence Diagram Load Data Mahasiswa

Java Bootcamp 2011 70 Diagram Database

Java Bootcamp 2011 71

Object Oriented Programming

Object

Pada dunia perangkat lunak, sebuah obyek adalah sebuah komponen perangkat lunak yang stukturnya mirip dengan obyek pada dunia nyata. Disekeliling kita ada banyak contoh dari objek, seperti meja, pena, kursi, televisi dan masih banyak lagi. Yang dimiliki oleh objek antar lain

◦ state

Pada implementasinya berupa field dari kelas ◦ behaviour

Implementasinya menjadi method dari kelas

Class

Kelas adalah keluarga dari Objek. Apabila beberapa objek memiliki struktur yang sama, perilaku dan arti secara umum, maka bisa dikelompokkan menjadi sebuah kelas. Yang kemudian dapat digunakan untuk menciptakan sebuah objek yang memiliki keseragaman. Setiap kelas memberikan skema yang umum untuk satu atau lebih objek, dimana kelas dapat menjadi template dari satu atau banyak objek.

package entity;

import java.util.Date; public class Anggota { private int id; private String nama; private String tmpLahir; private Date tglLahir; public Anggota(){ }

public int getId() { return id; }

public void setId(int id) { this.id = id;

}

public String getNama() { return nama;

}

public void setNama(String nama) { this.nama = nama;

}

public String getTmpLahir() { return tmpLahir;

}

public void setTmpLahir(String tmpLahir) { this.tmpLahir = tmpLahir;

}

public Date getTglLahir() { return tglLahir; }

public void setTglLahir(Date tglLahir) { this.tglLahir = tglLahir;

} }

Deklarasi paket Import kelas Date Nama kelas Attribut atau Field

Constructor

Salah satu setter dan getter

Java Bootcamp 2011 72

Enkapsulasi

Ini adalah salah satu fitur penting di OOP. Enkapsulation atau enkapsulasi adalah suatu cara untuk menyembunyikan detail dari suatu proses atau cara untuk memberikan akses tidak langsung ke data. Dengan enkapsulasi, data yang ada dalam sistem lebih aman dan konsisten. Enkapsulasi juga akan membuat detail proses yang rumit tersembunyi sehingga para pengguna suatu Class atau obyek akan menemukan suatu kemudahan dimana. Kemudahan itu didapat karena mereka tidak perlu menyetahui detail suatu proses untuk dapat melakukan suatu proses, cukup dengan nama Method yang dibutuhkan.

Contohnya diketahui bahwa kelas Database memiliki 4 buah method yaitu 1. connect

2. dml

3. getGeneratedKey 4. getRS

Ketika anda hendak melakukan Query ke database misalnya untuk mengambil data Mahasiswa yang menjadi anggota perpus maka cukup dengan perintah seperti dibahwa ini

Coba anda perhatikan kode program yang dilingkari, disana tampak bahwa untuk mengirimkan query ke database kita cukup memanggil method dml dari objek database dengan parameter ss yang @Override

public Mahasiswa[] findAll() {

// TODO Auto-generated method stub

ss="select a.idAnggota,nim,nama,tmplahir,tgllahir,tahunmasuk "; ss+="from mahasiswa m ";

ss+="inner join anggota a on m.idanggota=a.idanggota"; if(database.dml(ss, true)){

rs=database.getRs();

List<Mahasiswa> lstMahasiswa=new ArrayList<Mahasiswa>();

try {

while(rs.next()){

Mahasiswa mahasiswa=new Mahasiswa(); mahasiswa.setId(rs.getInt("idAnggota")); mahasiswa.setNim(rs.getString("nim")); mahasiswa.setNama(rs.getString("nama"));

mahasiswa.setTmpLahir(rs.getString("tmplahir")); mahasiswa.setTglLahir(rs.getDate("tgllahir")); mahasiswa.setTahunMasuk(rs.getInt("tahunmasuk")); lstMahasiswa.add(mahasiswa); } rs.close(); return lstMahasiswa.toArray( new Mahasiswa[lstMahasiswa.size()]); } catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace(); return null; } } return null; }

Java Bootcamp 2011 73 berisi query dan true yang berarti method tersebut akan mengirimkan select, padahal isi dari method tersebut cukup panjang yaitu

Disini dapat kita ambil kesimpulan bahwa untuk mengirimkan perintah query, kita tidak perlu memahami betul bagaimana perintahnya dari Java akan tetapi kita cukup memanggil method dml dan mengisi parameter yang dibutuhkan.

Inheritance

Inheritance atau pewarisan, di dalam OOP digunakan untuk mengklasifikasikan suatu obyek ke dalam suatu karakteristik dan fungsi yang umum. Maka ini akan membuat bekerja dengan obyek lebih mudah dan menguntungkan, karena hal ini memungkinkan kombinasi karakteristik umum pada obyek induk dengan obyek anak dengan cara mewariskan karakteristik pada obyek induk pada obyek anak. Misalnya suatu kelas Mahasiswa dan Karyawan adalah dua buah obyek yang memiliki karakteristik berbeda, namun kedua obyek tersebut dapat mewarisi obyek induk misalnya Anggota. Karena Mahasiswa dan Karyawan adalah dua obyek yang berbeda tapi keduanya adalah Anggota dari suatu perpustakaan. Dapat dilihat di kode program untuk kelas Mahasiswa Berikut :

public boolean dml(String query, boolean getRow, Object... objects) { try {

prep = con.prepareStatement(query); int i = 1;

for (Object obj : objects) { prep.setObject(i, obj); i++; } if (getRow) { rs = prep.executeQuery(); } else { prep.executeUpdate(); } } catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace(); return false; } return true; } package entity;

public class Mahasiswa extends Anggota { private String nim;

private int tahunMasuk; public String getNim() {

return nim; }

public void setNim(String nim) { this.nim = nim;

}

public int getTahunMasuk() { return tahunMasuk; }

public void setTahunMasuk(int tahunMasuk) { this.tahunMasuk = tahunMasuk;

} }

Java Bootcamp 2011 74 Dan untuk kelas Karyawan

Pada dua kelas diatas, yaitu kelas Mahasiswa dan Karyawan terdapat kode program yang dilingkari yaitu

1. Mahasiswa extends Anggota 2. Karyawan extends Anggota

Dapat dibaca bahwa kelas Mahasiswa adalah turunan dari kelas Anggota dan kelas Karyawan adalah turunan dari kelas Anggota. Apabila anda perhatikan lebih teliti misalnya pada kelas Karyawan maka tampak disana hanya terdapat 1 buah attribut atau field (dilingkari warna merah). Untuk attribut id, nama, tempat lahir dan tanggal lahir cukup dideklarasikan saja di kelas Anggota, sehingga tidak terjadi proses deklarasi variabel yang sama berulang – ulang, berikut ini kode program kelas Anggota

package entity;

public class Karyawan extends Anggota { private String nik;

public String getNik() { return nik;

}

public void setNik(String nik) { this.nik = nik;

} }

package entity;

import java.util.Date; public class Anggota { private int id; private String nama; private String tmpLahir; private Date tglLahir; public int getId() {

return id; }

public void setId(int id) { this.id = id;

}

/*---setter dan getter attribut yang lain---*/ }

Java Bootcamp 2011 75 Kode program yang dilingkari warna ungu menunjukkan attribut yang dimiliki kelas Anggota seperti id, nama, tmpLahir dan tglLahir. Attribut itu juga yang nantinya akan digunakan oleh kelas Mahasiswa, Karyawan dan PetugasPerpus. Inheritance apabila diterapkan di database tampak seperti gambar berikut

(Digambar dengan MySQL Workbench 5.2.31 CE)

Pada gambar diatas tampak bahwa

1. tabel Anggota memiliki 4 buah kolom yaitu idAnggota, nama, tmpLahir dan tglLahir dimana idAnggota sebagai PrimaryKey.

2.

tabel Mahasiswa memiliki 3 buah kolom yaitu idAnggota, nim dan tahunMasuk dimana idAnggota sebagai foreign key yang mereferensikan kolom idAnggota di tabel Anggota.

3.

tabel Karyawan memiliki 2 buah kolom yaitu nik dan idAnggota dimana idAnggota sebagai

foreign key yang mereferensikan kolom idAnggota di tabel Anggota.

Di UML tampak seperti gambar berikut (tanpa menunjukkan method setter dan getter)

Dari pola diatas dapat diambil suatu keuntungan bahwa yang dicatat di dalam transaksi

pengembalian buku dan peminjaman buku cukup idAnggota, tidak perlu nim, nik karena mahasiswa, karyawan, petugas perpus memiliki primary key yang sama yaitu idAnggota.

Java Bootcamp 2011 76 Berikut ini contoh sederhana untuk keuntungan yang bisa kita ambil dari menerapkan konsep inheritance

Keluaran dari program diatas adalah

Prinsip diatas sesuai dengan aturan Substitusi Liskov yang berbunyi seperti berikut “Since a subclass inherits the behaviour of its superclass, you can substitue objects whenever a superclass object is expected” (dikutip dari Object Oriented Design and Pattern second edition, Bab The Concept of Inheritace, bagian The Substitution Principle halaman 219 karangan Cay Horstmann).

package example;

import entity.Anggota;

import entity.Mahasiswa;

import entity.PetugasPerpus;

public class TestingInheritance {

/**

* @param args */

public static void main(String[] args) {

/* TODO deklarasi objek anggota dengan Type Anggota * menggunakan Contructor Anggota()

*/

Anggota anggota=new Anggota(); anggota.setNama("Ratno Kustiawan"); anggota.setTmpLahir("Purworejo");

/* TODO decklarasi objek anggota2 dengan Type Anggota dengan * menggunakan Contructor Mahasiswa()

*/

Anggota anggota2=new Mahasiswa(); anggota2.setNama("Afif Syaifullah"); anggota2.setTmpLahir("Indonesia");

/* TODO deklarasi objek anggota3 dengan Type Anggota dengan * menggunakan Contructor PetugasPerpus()

*/

Anggota anggota3=new PetugasPerpus(); anggota3.setNama("Afif");

anggota3.setTmpLahir("Indonesia");

/* TODO deklarasi objek karyawan dengan Type Karyawan dengan * menggunakan Contructor PetugasPerpus() */

Anggota karyawan=new PetugasPerpus(); karyawan.setNama("Kustiawan"); karyawan.setTmpLahir("Indonesia");

/* TODO munculkan data dari objek yang sudah dibuat */

System.out.println("anggota =>" + anggota.getNama() + " =>" + anggota.getTmpLahir()); System.out.println("anggota2 =>" + anggota2.getNama() + " =>" + anggota2.getTmpLahir()); System.out.println("anggota3 =>" + anggota3.getNama() + " =>" + anggota3.getTmpLahir()); System.out.println("karyawan =>" + karyawan.getNama() + " =>" + karyawan.getTmpLahir()); }

}

anggota =>Ratno Kustiawan =>Purworejo anggota2 =>Afif Syaifullah =>Indonesia anggota3 =>Afif =>Indonesia

Java Bootcamp 2011 77

Interface

Merupakan sebuah keyword untuk mendefinisikan sekumpulan method dan konstanta. Interface bisa digunakan apabila sudah dilakukan implementasi pada sebuah kelas non abstract. Interface dapat digunakan untuk

1. Mewakili suatu tingkah laku yang bisa dimiliki oleh suatu kelas tanpa memaksakan relasi antar kelas tersebut.

2. Menangani event atau action yang terjadi pada suatu kelas 3. Memudahkan penanganan objek dalam parameter

4. Multiple inheritace

Polymorphism

Dalam dokumen UML dan Java Application (Halaman 48-77)

Dokumen terkait