Jumat, 29 Agustus 2008

use case Tampilan Satu Gambar

diagram interaksi tampilan satu gambar



Bagian memodelkan user, bagian kanan memodelkan komputer.

Sabtu, 23 Agustus 2008

konsep oop


Class = data + methods. Data dan methods dalam dimasukkan dalam kelas-kelas. Dengan pendekatan lama (prosedural), biasanya pembuatan kelas dengan java hanya berisi method static (algoritma program). Dengan method cara lama ini, seringkali membutuhkan tempat data (variabel) yang akan diolah, biasanya menggunakan variabel lokal. Sebenarnya, konsep local variabel inilah yang mendasari dibentuknya atribut pada kelas dengan visibilitas private atau protected, agar hubungan antar (modul) objek satu dengan objek lain mencapai tingkat data coupling.

Sejarah pembuatan (kelas). Kelas juga dapat digunakan untuk menyimpan data (sementara) sebagai pengganti variabel memori, array atau variabel pointer (ini kalau pakai paradigma prosedural). Kelas juga berarti sebagai suatu tempat data kelompok atau koleksi, yang dulu biasa diperankan oleh structur rekaman (struct or records). Oleh karena itu dapat dikatakan bahwa perilaku program objek dari suatu kelas merupakan kombinasi antara pemanfaatan tempat data (atribut) dan pemanfaatan methods (services atau layanan) untuk melakukan pengolahan data.

Penggunaan kelas (diharapkan) mengurangi kompleksitas (suatu sistem perangkat lunak). Seperti diketahui, kompleksitas akan membatasi ukuran dan keandalan dari suatu program (perangkat lunak). Kompleksitas dapat direduksi dengan meningkatkan kohesi (putting things together that belong together, maksudnya data dan program yang relevan disatukan dalam satu modul objek) dan mereduksi coupling (interconnections), terutama dengan menerapkan konsep enkapsulasi atribut.

Class, object, OOP. Kelas merupakan spesifikasi yang (umumnya) mengandung kombinasi dari data dan methods, objek disebut sebagai instant dari kelas yang perlu dikonstruksi dulu sebelum digunakan, dan praktek untuk membangun pemrograman yang berdasarkan sifat dari idea kelas dan objek ini disebut Pemrograman Berorientasi Objek (Object-Oriented Programming - OOP).

Suatu kelas bisa saja tanpa atribut, hanya mempunyai method. Namun di sisi lain, kelas yang hanya mempunyai atribut dan tidak mempunyai method, tidak mungkin. Alasannya, karena, pertama, kelas harus punya method khusus yang disebut konstruktor, dan biasanya nama method khusus ini sama dengan nama kelas. Yang kedua, bagaimana kita bisa mengakses atribut dari suatu kelas, jika dienkapsulasi. Sementara, jika visibilitas atribut ingin kita set public, tentunya ini tidak memenuhi sifat dari pemrograman berorientasi objek.

Loh, dengan java bisa loh, kita membuat program dengan visibilitas atribut yang public. Iya lah, tapi itu namanya program java prosedural, bukan oop. ... :-)

(Terjemahan bebas dari konsepnya Fred Swartz, dan diberi tambahan penjelasan secukupnya)

pustaka :
JavaBasics : OOP - Introduction to Classes and Objects

Kamis, 21 Agustus 2008

diagram kelas rantai gambar



Untuk mengimplementasikan aplikasi rantai gambar, yang terlihat sederhana, dibutuhkan beberapa kelas, yaitu :
kelas bikinan : kelas rantai1, untuk membentuk array ImageIcon sebagai penangkap gambar dari empat file gambar. kelas rantai2, untuk membentuk array dummy dari 8 (delapan) objek lnk dari kelas ImageIcon, sebagai pemberi efek gambar hilang jika gambar dari objek dari kelas rantai1 diletakkan pada indeks dengan angka besar [4] sampai [7]. Sementara jika gambar (pointernya) digeser ke indeks dengan angka kecil [0] sampai [3] akan dimunculkan oleh gbLabel dari kelas JLabel.

sementara jenis kelas yang disediakan oleh java, tak berbeda jauh dengan kelas yang digunakan pada aplikasi duaGbr.java (aplikasi tukar gambar)

diagram komponen rantai gambar



Dalam model dapat dibaca bahwa aplikasi rantaiGbr, yang diwakili oleh Rantai.jar, (terdapat pada rantai.zip) dapat mengakses empat file gambar : grapes.jpg, carrot.jpg, ayam.jpg dan burung.jpg.

File gambar dapat dianggap sebagai dokumen. Baik Rantai.jar dan file gambar dapat dimodelkan sebagai komponen dalam notasi UML.

membuat diagram kelas

Cukup mudah membuat diagram kelas. Saat ini cukup banyak tools untuk membuatnya dari suatu source-code. Tools ada yang commercial, ada yang shareware, ada yang free. Sebaiknya diteliti dulu sebelum menggunakannya, sebelum nantinya mengundang masalah.

Tools yang menarik, di antara tools yang tersedia dari seluruh dunia adalah sebagai berikut :Contoh penggunaan tools untuk menghasilkan diagram kelas dapat dilihat berikut ini:

Kelas untuk aplikasi satuGbr


Kita lihat di situ, bahwa kelas utama untuk aplikasi satuGbr. Kelas boundary : SatuGbr dan kelas control : drvSatuGbr. Kelas boundary digunakan untuk interaksi antara user dengan aplikasi. Sedangkan kelas drvSatuGbr digunakan sebagai kontrol, di antaranya untuk membentuk objek panel yang dibentuk dari kelas SatuGbr. Baca source di : drvSatuGbr.java sebagai refetrensi pembahasan.

Gambar bisa dibaca pada saat pembentukan objek panel (kelas SatuGbr). Untuk menangkap hasil pembacaan itu, digunakan objek gbr dari kelas ImageIcon.

Di sini terlihat, ada kelas yang dibentuk : SatuGbr dan drvSatuGbr, juga ada beberapa kelas yang disediakan oleh engine java, di antaranya kelas JPanel, ImageIcon, JTable, JLabel dan JFrame.

Untuk keperluan interaksi melalui tombol yang dibentuk oleh objek tmb01, tmb02 dan tmb03 dari kelas JButton, maka kelas SatuGbr perlu mengimplementasikan interface yang bernama ActionListener, dan merupakan turunan dari interface EventListener.

Perhatikan simbol relasi antara kelas SatuGbr lalu ada garis putus, yang berujung model segitiga, yang "menunjuk" pada gambar interface ActionListener.

Referensi ActionListener dan EventListener dapat dilihat pada situs berikut :


Di situs itu Anda juga bisa melihat spesifikasi kelas lain yang disediakan oleh engine java. Misal :

dan banyak kelas lainnya lagi.

Saran saya, jangan hafalkan semua syntax itu. Coba bikin suatu aplikasi yang sederhana, dan kemudian menuju ke kompleks. Setiap aplikasi pahami baik-baik objeknya dari kelas apa. Apakah itu kelas bikinan sendiri atau merujuk pada kelas yang disediakan java, atau kelas turunan, seperti SatuGbr itu dirancang sebagai turunan dari kelas JPanel (perhatikan simbol asosiasinya). Lalu sebelum semuanya menjadi lebih rumit dan kompleks, pelajari juga cara membuat peta arsitektur programnya dengan menggunakan sifat-sifat dari model UML. Sehingga kelak ketika Anda sudah mampu membuat aplikasi yang lebih rumit, Anda masih bisa mengendalikannya, karena bisa bikin "peta"-nya dengan UML.

Coba dua gambar berikut Anda pahami seperti pendekatan pembahasan di atas. Sengaja yang satu disediakan source code-nya, sedang yang berikutnya hanya diberikan kompilasinya untuk menguji apakah untuk membaca suatu peta gambar UML Anda masih tergantung pada suatu source code, atau justru dengan adanya peta UML Anda bisa menyusun sendiri bagaimana source codenya.... :-)

Referensi source code : drvDuaGbr.java
code rar dalam zip : rantai.zip

Kelas untuk aplikasi duaGbr


Kelas untuk aplikasi rantaiGbr



Selasa, 19 Agustus 2008

rantai gambar

Problem:
1. Buat rantai atau rangkaian gambar yang bisa bergeser ke kiri, satu per satu.

solusi:
rantai.zip

2. Buat analisis diagram state-nya

solusi: Tabel Analisis State


  • state dimulai oleh state0000, artinya, ke-empat label menunjuk null (kosong).
  • ketika dilakukan klik pertama (geser t(0)), akan tampil satu gambar dari arah kanan. state ini disebut state0001
  • Demikian seterusnya, ketika muncul keempat gambar, setelah klik geser t(2), maka state ini disebut state1111


3. Bagaimana bentuk tampilannya ?

solusi:
Gambar tampilan pada state1111 adalah sebagai berikut:



Penjelasan interaksi user dengan aplikasi (pengoperasian) :

  • tombol start untuk memulai memuncukan satu gambar dari kiri
  • tombol geser untuk menggeser satu gambar ke kiri, diikuti oleh kemunculan gambar berikutnya
  • tombol bersihkan untuk menghapus semua gambar

Senin, 18 Agustus 2008

diagram state RantaiGbr



diagram state tersebut disusun berdasarkan analisis state sebagai berikut :



nama aplikasi : RantaiGbr
program : rantai.zip

tampilan state0000, state0001 dan state1111 :

diagram state SatuGbr



state 0 = adalah state pada saat eksekusi. Gambar belum tampil (hidden).
state 1 = merupakan state gambar tampil.

event untuk menjadi state 1 adalah dengan klik tombol tampilkan.
event untuk menjadi state 0 adalah dengan klik tombol hapus.

nama aplikasi SatuGbr
source code : drvSatuGbr.java

Kamis, 14 Agustus 2008

diagram UML


Diagram Use Case


Diagram Kelas



Diagram Objek



Diagram Sekuen



Diagram State



Diagram Komponen



Rabu, 13 Agustus 2008

Tukar dua gambar

Interaksi user dengan komputer dapat dikembangkan untuk aplikasi tukar dua gambar.
gambar dua01
gambar dua02
gambar dua03

Tahapan interaksi:
  1. Klik tombol Tampil akan menampilkan dua gambar...[gambar dua01] menjadi [gambar dua02]

  2. Klik tombol Hapus akan menghilangkan gambar yang tampil...[gambar dua02] kembali menjadi [gambar dua01]

  3. Klik tombol Tukar akan menukar gambar di sebelah kiri dengan gambar kanan dalam satu window [gambar dua03]

  4. Klik tombol Keluar, aplikasi akan dihentikan.

Source code dapat dilihat di sintesis: drvDuaGbr.java


use case untuk interaksi tukar dua gambar


Tampilan Satu Gambar

Interaksi user dengan komputer dapat dilakukan terhadap aplikasi tampilan satu gambar.

gambar satu01
gambar satu02

Tahapan interaksi:
  1. Klik tombol Tampil akan menampilkan satu gambar...[gambar satu01] menjadi [gambar satu02]

  2. Klik tombol Hapus akan menghilangkan gambar yang tampil...[gambar satu02] kembali menjadi [gambar satu01]

  3. Klik tombol Keluar, aplikasi akan dihentikan.

Source code dapat dilihat di sintesis: drvSatuGbr.java

Diagram use case satu gambar


Minggu, 10 Agustus 2008

diagram sekuen objek barang [2]

Selain berdasarkan penulisan source code pembentukan objek br01, juga dapat dibuat model diagram sekuen, tentang instansiasi (set) atribut dari objek br01, meupun akses (get) -nya

Model objek br01, br02 dan brg009 dari kelas barang :



Source code yang relevan untuk pembentukan objek dari kelas barang :



  public class drvBrg04 {
public static void main (String args[]) {
System.out.println ("Test drvBrg03");
barang br01 = new barang();
barang br02 = new barang();
barang brg009 = new barang();

//setting attribut
br01.setKd("1001");
br01.setNm("Kursi");

// getting the atribut value
System.out.println(br01.getNm() + " " + br01.getKd());
}
}




Sabtu, 09 Agustus 2008

diagram sekuen objek barang

Berdasarkan penulisan source code pembentukan objek br01, br02 dan brg09 dapat dibuat model diagram sekuennya.

Model objek br01, br02 dan brg009 dari kelas barang :



Source code yang relevan untuk pembentukan objek dari kelas barang :



  public class drvBrg03 {
public static void main (String args[]) {
System.out.println ("Test drvBrg03");
barang br01 = new barang();
barang br02 = new barang();

barang brg009 = new barang();
}
}




Senin, 04 Agustus 2008

contoh objek dari kelas barang

Berdasarkan spesifikasi kelas barang, dapat dibuat satu atau beberapa objek barang.

Model objek br01, br02 dan brg009 dari kelas barang :



Source code yang relevan untuk pembentukan objek dari kelas barang :



  public class drvBrg03 {
public static void main (String args[]) {
System.out.println ("Test drvBrg03");
barang br01 = new barang();
barang br02 = new barang();

barang brg009 = new barang();
}
}




contoh kelas turunan

Spesifikasi kelasnya :
Kelas brgJual merupakan turunan dari kelas barang.

Objek yang dibentuk dari kelas brgJual, akan memiliki atribut kode, nama dan hrgSat. Atribut kode dan nama diperoleh dari atribut kelas barang ortu(ancestor)-nya. Atribut hrgSat merupakan atribut milik kelas brgJual

Visibilitas dari atribut pada kelas barang diubah dari private menjadi protected, agar bisa digunakan oleh objek yang dibentuk kelas turunannya: brgJual
  • (-) kode ---> menjadi (#) kode
  • (-) nama ---> menjadi (#) nama


Dalam perkembangan perancangannya, sebaiknya merujuk kepada user requirement atau kebutuhan user. Dalam dunia nyata, jika ada catatan tentang barang yang dijual biasanya akan ada barang yang dibeli. Biasanya, dalam sistem niaga seperti toko atau supermarket, harga jual berbeda dengan harga beli. Adakalanya toko tersebut selain mencatat harga beli, juga mencatat darimana belinya, atau disebut supplier atau vendor.

Kita tidak perlu mengubah kelas barang atau pun kelas brgJual. Namun bisa menambah kelas baru, katakanlah disebut kelas brgBeli, yang juga merupakan turunan dari kelas barang.



Model kelas brgJual :

Source code yang relevan untuk kelas barang dan kelas brgJual :



   class barang {
protected String kode;
protected String nama;
public barang() {
}
public void setNm(String X) {
nama = X;
}
public void setKd(String X) {
kode = X;
}
public String getNm() {
return nama;
}
public String getKd() {
return kode;
}
}

class brgJual extends barang {
private float hrgSat;
public brgJual() {
}
public void setHs(float X) {
hrgSat = X;
}
public float getHs() {
return hrgSat;
}
}

public class drvBrg02 {
public static void main (String args[]) {
System.out.println ("Test drvBrg02");
}
}


Model kelas brgBeli :
Source code yang relevan untuk kelas brgBeli :



   class brgBeli extends barang {
private float hrgBeli;
private String supplier;

public brgBeli() {
}
public void setHb(float X) {
hrgBeli = X;
}
public void setSp(String X) {
supplier = X;
}
public float getHb() {
return hrgBeli;
}
public String getSp() {
return supplier;
}
}






Lalu timbul pertanyaan yang cukup menggoda :

1. Bagaimana caranya membuat aplikasi yang dapat menampilkan daftar barang Terjual ?

2. Bagaimana caranya membuat aplikasi yang dapat menampilkan daftar barang Dibeli ?

3. Dapatkah dibuat daftar perbandingan antara daftar barang Terjual dan Dibeli ?

Apakah perkembangan ini membutuhkan peran objek dari kelas lain lagi ?

to be continued.....

:-)

contoh kelas sederhana

Barang merupakan material yang dapat diperdagangkan. Pencatatan tentang barang dibutuhkan pada sistem usaha seperti supermarket, distributor maupun pabrik.

Bagi sistem usaha lain, seperti perkantoran, umumnya barang yang menjadi milik perusahaan atau instansi perlu dicatat sebagai barang inventaris maupun barang habis (consumable material).

Jika data hasil pencatatan barang itu perlu diolah dengan pemrograman berorientasi objek, maka barang dapat dijadikan objek, dengan cara, mula-mula dibuat spesifikasi kelasnya.


Model kelas barang :

Perhatikan cara penulisan pada model kelas. Terdapat tiga bagian kotak di dalam model kelas: kotak atas, tengah dan bawah.
  • Pada kotak paling atas, ditulis nama kelas.
  • Pada kotak di tengah, ditulis nama atribut. Tanda (-) menyatakan bahwa atribut tersebut di-enkapsulasi. Perintah dalam source code-nya menggunakan statemen private.
  • Pada kotak paling bawah, ditulis nama method. Tanda (+) menyatakan bahwa method tersebut publik, atau dapat diakses dari objek lain.

Source code yang relevan untuk kelas barang :



   class barang {
private String kode;
private String nama;
public barang() {
}
public void setNm(String X) {
nama = X;
}
public void setKd(String X) {
kode = X;
}
public String getNm() {
return nama;
}
public String getKd() {
return kode;
}
}

public class drvBrg01 {
public static void main (String args[]) {
System.out.println ("Test drvBrg01");
}
}