Penanganan Kejadian (event handling)

Penanganan Kejadian (event handling)

12/07/2017
Penanganan Kejadian

package :
java.awt.event dan javax.swing.event

agar komponen dapat menangani kejadian, kompnen tsb harus :
1. didaftarkan menjadi pendengar (listener), contoh :

JButton tombolSelesai = new JButton("Selesai");
tombolSelesai.addActionListener(this);

secara umum bentuk metode nya :
    addxxxListener()

2. Harus mengimplementasikan suatu interface listener
3. Membuat object suatu kelas yang merupakan kelas adapter
4. Menulis kode pada metode penanganan kejadian

kelas adapter adalah kelas bawaan java yang mengandung nama adapter dibagian belakang dan merupakan kelas abstrak yang merupakan implementasi dari suatu interface listener.
contoh :
windowAdapter = kelas abstrak yang mengimplementasi interface WindowListener
MouseAdapter = ----" ---- MouseListener

contoh program :

bSubmit.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent e) 
            {
                oNama.setText(tNama.getText());
            }
        } );
kelas dan interface pada java :

kejadian dan interface  |    metode --> listener     |     Komponen
------------------------------- |-----------------------------------------    |-------------------------------------
ActionEvent       |    addActionListener     |     JButton, JList dll
ActionListener      |            |    
--------------------------------|-------------------------------------------|--------------------------------------
 AdjusmentEvent      |              |
AdjustmentListener      |     addAdjusmentListener |     JScrollBar
------------------------------- | -------------------------------------------| ------------------------------------
 dll.

Listener dan metode penanganan kejadian :

Listener / Adapter      |     Metode 
--------------------------    | -------------------------------------------------------
ActionListener     |     actionPerformed(ActionEvent)
--------------------------    | -------------------------------------------------------
AdjusmentListener     |     adjustmentValueChanged (AdjustmentEvent)
--------------------------    | -------------------------------------------------------
dll.


Listener         Interface             Listener Methods 

ActionEvent     ActionListener         actionPerformed(ActionEvent) 
ItemEvent     ItemListener         itemStateChanged(ItemEvent) 
MouseEvent     MouseListener         mousePressed(MouseEvent) 
                        mouseReleased

(MouseEvent) 
                        mouseEntered(MouseEvent) 
                        mouseExited(MouseEvent) 
                        mouseClicked(MouseEvent) 
                      MouseMotionListener 

mouseDragged(MouseEvent) 


konsep lain :
Dalam event handling pada Java ada empat bagian penting yang harus diketahui:

1.Event Object merupakan object yang mendiskripsikan sebuah event yang ditrigger oleh event source.

2.Event Handler merupakan method yang menerima event object dan melakukan respond yang sesuai dengan event object tersebut.

3.Event Listener merupakan interface yang akan meng-handle event yang terjadi. setiap type event mempunyai interface yang bersesuaian. Listener tersebut harus di implementasikan oleh class yang akan meng-handle event

4.Event Source merupakan pembangkit / trigger sebuah event objects setiap event object mempunyai  type event yang berbdea beda. sehingga kita harus menentukan type event sebelum menentukan jenis interface listener. karena setiap type event mempunyai jenis interface listener yang bersesuaian.

Berikut ini type-type event yang ada di Java :

  1. ActionEvent
  2. ItemEvent
  3. WindowEvent
  4. ContainerEvent
  5. ComponentEvent
  6. FocusEvent
  7. TextEvent
  8. KeyEvent
  9. MouseEvent
  10. AdjustmentEvent


Berikut ini Interface Listener

  1. ActionListener
  2. ItemListener
  3. WindowListener
  4. ContainerListener
  5. ComponentListener
  6. FocusListener
  7. TextListener
  8. KeyListener
  9. MouseListener
  10. MouseMotionListener
  11. AdjustmentListener


Berdasarkan tulisan diatas, setiap type event mempunyai satu jenis interface listener 

kecuali MouseEvent yang mempunyai dua jenis interface listener. dan setiap 

interface mempunyai method abstract yang harus di override class yang mengimpletasikan interface. event listener dan event handler terdapat pada package java.awt.event

Bagaimana event handling dalam Java? ada tiga langkah penting dalam event 

handling

1.Deklarasikan class yang akan meng-handle event yang terjadi dan tuliskan code 

yang menyatakan class tersebut meng-implement interface listener
2.Event source mendaftarkan sebuah listener melalui method add<type>Listener
3.Kode yang mengimplementasikan method pada interface listener pada class yang 


akan meng-handle event. [ Override ]


Contoh program sederhana :

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Penjumlahan2Field extends JFrame
{
    JLabel labelData1,labelData2,labelHasil;
    JTextField field1,field2,field3;
    JButton button;
    
    public Penjumlahan2Field()
    {
        setLayout(null);
        labelData1=new JLabel("Data 1 = ");
        field1=new JTextField(8);
        labelData2=new JLabel("Data 2 = ");
        field2=new JTextField(8);
        labelHasil=new JLabel("Hasil = ");
        field3=new JTextField(8);        
        button=new JButton("+");
        
        labelData1.setBounds(10,10,80,25);
        field1.setBounds(65,10,80,25);
        labelData2.setBounds(10,40,80,25);
        field2.setBounds(65,40,80,25);
        labelHasil.setBounds(10,70,80,25);
        field3.setBounds(65,70,80,25);
        button.setBounds(65,120,50,25);
        
        add(labelData1);
        add(field1);
        add(labelData2);
        add(field2);
        add(labelHasil);
        add(field3);
        add(button);
        
        ActionListener listener = new Penjumlahan2Field.Handler();
        button.addActionListener(listener);    
    }
    
    class Handler implements ActionListener{
        public void actionPerformed(ActionEvent e){
            String s = e.getActionCommand();
            
            if(s.equals("+")){
                String data1=field1.getText();
                String data2=field2.getText();
                
                int a=Integer.parseInt(data1);
                int b=Integer.parseInt(data2);        

        
                int hasil=a+b;
                field3.setText(Integer.toString(hasil));
            }
        }
    }
    
    public static void main(String [] args)
    {
        Penjumlahan2Field frame=new Penjumlahan2Field();
        frame.setTitle("Penjumlahan");
        frame.setSize(200,200);
        //frame.setLocationRelationTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

Link: http://mahmudtajinan.blogspot.co.id/2011/12/penanganan-kejadian-event-handling.html

Komponen Delegation Event Model

12/07/2017
Delegasi event model menguraikan bagaimana program Anda dapat merespon interaksi dari user. Untuk memahami model, pertama-tama mari kita pelajari melalui tiga komponen utamanya.
Event Source
  • Event source mengacu pada komponen GUI yang meng-generate event. Sebagai contoh, jika user menekan tombol, event source dalam hal ini adalah tombol.

Event Listener/Handler
  • Event listener menerima berita dari event-event dan proses-proses interaksi user. Ketika tombol ditekan, listener akan mengendalikan dengan menampilkan sebuah informasi yang berguna untuk user.
Event Object
  • Ketika sebuah event terjadi (misal, ketika user berinteraksi dengan komponen GUI), sebuah object event diciptakan. Object berisi semua informasi yang perlu tentang event yang telah terjadi. Informasi meliputi tipe dari event yang telah terjadi, seperti ketika mouse telah di-klik. Ada beberapa class event untuk kategori yang berbeda dari user action. Sebuah event object mempunyai tipe data mengenai salah satu dari class ini.


Pada awalnya, sebuah listener seharusnya diregistrasikan dengan sebuah source sehingga dapat menerima informasi tentang event-event yang terjadi pada source tersebut. Hanya listener yang sudah teregistrasi yang dapat menerima pemberitahuan event-event. Ketika telah teregistrasi, sebuah listener hanya tinggal menunggu sampai event terjadi.
Ketika sesuatu terjadi dengan event source, sebuah event object akan menguraikan event yang diciptakan. Event kemudian ditembak oleh source pada listener yang teregistrasi.
Saat listener menerima sebuah event object (pemberitahuan) dari source, dia akan bekerja. Menerjemahkan pemberitahuan dan memproses event yang terjadi.
Registrasi Listeners
Event source mendaftarkan sebuah listener melalui method add<Type>Listener.
void add<Type>Listener(<Type>Listener listenerObj)
<Type> tergantung pada tipe dari event source. Dapat berupa Key, Mouse, Focus, Component, Action dan lainnya. Beberapa listeners dapat diregistrasi dengan satu event source untuk menerima pemberitahuan event.
Listener yang telah teregistrasi dapat juga tidak diregistrasikan lagi menggunakan method remove<Type>Listener.
void remove<Type>Listener(<Type>Listener listenerObj)
Class-Class Event
Sebuah event object mempunyai sebuah class event sebagai tipe data acuannya. Akar dari hirarki class event adalah class EventObject, yang dapat ditemukan pada paket java.util. Immediate subclass dari class EventObject adalah class AWTEvent. Class AWTEvent didefinisikan pada paket java.awt. Itu merupakan akar dari semua AWT-based events.
Berikut ini beberapa dari class-class AWT event.


Event Listeners
Event listeners adalah class yang mengimplementasikan interfaces <Type>Listener.
Tabel di bawah menunjukkan beberapa listener interfaces yang biasanya digunakan.

Method ActionListener
Interface ActionListener hanya terdiri dari satu method.

Method MouseListener

Method-Method MouseMotionListener
MouseMotionListener mempunyai dua method untuk diimplementasikan.

Method-Method WindowsListener
Di bawah ini method-method dari interface WindowListener.

Link : https://ratnokustiawan.wordpress.com/2011/01/22/gui-event-handling/
Komponen Dasar GUI

Komponen Dasar GUI

12/07/2017
Dalam perkembangannya java sudah menngembangkan berbagai macam komponen, dan yang terakhir di beri nama Java Swing, pertama java menggembangkan proyek yang di beri nama Java Foundation Classes (JVC), dalam JVC pertama java menggeluarkan AWT(Abstract Window Toolkit), setelah terus berkembang java mengeluarkan ersi yang lebih baru yang di beri nama Java Swing.

akan saya bahas satu2 tentang komponen2 yang sering di pakai dalam membuat program sederhana

Label
  • label berfungsi untuk menuliskan sesuatu di frame yang kita buat, nama default Jlabel.
Button
  • Button digunakan untuk mengeksekusi sebuah perintah, jika button di pencet maka proses akan berjalan, nama default Jbutton.
Text Field
  • Text Field marupakan salah satu cara untuk  mengisikan suatu inputan dalam program, nama default Jtextfield.
Text Area
  • Text Area biasanya digunakan untuk menampilkan hasil output dari program, nama default Jtextarea.

Combo Box
  • Combo Box merupakan salah satu cara inputan juga. jika combo box di pencet, maka akan keluar berbagai pilihan untuk di proses, nama default Jcombobox.

Radio Button
  • radio button juga salah satu cara inputan dalam program, tetapi dalam penggunaannya berbeda dengan combo box, radio button digunakan jika pilihan yang di sediakan sedikit, maka akan lebih efektif jika menggunakan radio button, berbeda dengan combo box yang hjerus click 2 kali untuk memilih, radio button cukup sekali pilihan, dan hanya boleh satu pilihan yang di pilih, maka digunakan radio button group agar hanya satu yang bisa di pilih, nama default Jradiobutton.

Check Box
  • Check box juga merupakan salah satu cara inputan, mirip dengan radio button, tetapi check box memperbolehkan user untuk memilih lebih dari satu pilihan, jadi check box di gunakan untuk menjawab petanyaan yang memperbolehkan lebih dari satu jawaban, nama defaultnya jCheckbox..


Link : http://scubyx.blogspot.co.id/2010/04/komponen-komponen-gui-java-swing-pada.html

Hirarki Class Graphical User Interface

12/07/2017
Seperti yang terlihat disamping, hirarki class exception dimulai dari class Object, kemudian ada class Throwable yang merupakan superclass dari semua jenis exception.
Ada 2 class turunan langsung dari superclass ini, yaitu Error dan Exception. Sedangkan untuk class Exception memiliki suatu turunan, yaitu Runtime Exception. Untuk lebih memahami, mari didiskusikan mengenai ketiga turunan dari class Error dan Exception tersebut, dimulai dari point yang pertama, yaitu:

Error
Error biasanya tidak disebabkan oleh kesalahan yang terjadi dalam aplikasi. Melainkan lebih karena keadaan JVM yang tidak normal, seperti kehabisan memory dan lain sebagainya. Error tidak perlu dihandle dengan try-catch, karena tidak ada cara untuk mengatasi keadaan error. Secara teknis, sebenarnya error bukanlah exception, karena bukan merupakan turunan dari class Exception.

Exception
Berbeda dengan error diatas, exception merepresentasikan keaslahan yang terjadi dalam aplikasi. Programmer dapat melakukan recovery untuk mengenal exception. JDK mempunyai banyak sekali class turunan dari exception, nama class-class ini sangat descritive sehingga hanya dengan melihat nama class exceptionya, sudah diketahui kesalahan apa yang terjadi dalam aplikasi.

RuntimeException
Terakhir, runtimeException merupakan class yang spesial karena disebut juga dengan uncheked exception. Dalam arti RuntimeException tidak wajib di catch. Class ini memiliki turunan, seperti NullPointerException, ClassCastException, IndexOutOfBoundException dan masih banyak lagi. Untuk lebih memahami, mari diimplementasikan ke dalam kode program, seperti berikut ini


package com.wordpress.bmadi.moreexception;
public class DemoRuntimeException{
    public static void main(String[] args){    
        int i = Integer.parseInt("Andi");
        System.out.println("kode setelah exception");
    }
}

Kode program diatas artinya : Mendeklarasikan class DemoRuntimeException yang mengimplementasi exception NumberFormatException. Bila kode program daitas dieksekusi, keluaran yang dihasilkan seperti berikut
Exception in thread "main" java.lang.NumberFormatException: For input string: "Andi"
  at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
  at java.lang.Integer.parseInt(Integer.java:580)
  at java.lang.Integer.parseInt(Integer.java:615)
  at DemoRuntimeException.main(DemoRuntimeException.java:14)

Karena kode program diatas berusaha mengubah string menjdi angka, maka akan mengalami RuntimeException. Karena RuntimeException tidak wajib adanya try-catch yang menghandle, maka bila terjadi exception kode program akan segera keluar dari method.

Dan, karena disini hanya terdapat method main saja, maka konsep call stack akan digunakan, dimana untuk string “kode setelah exception” tidak akan ditampilkan.
Bila belum merasa yakin apakah string berhasil atau tidak dirubah menjadi Integer, maka dapat diletakan try-catach untuk dapat mengetahui hasilnya, seperti kode prgoram berikut ini 


package com.wordpress.bmadi.moreexception;
public class DemoRuntimeException1 {
    public static void main(String[] args){    
      int i = 0;
      try{
        i = Integer.parseInt("Andi");
      }catch(NumberFormatException ex){
        ex.printStackTrace();
      }
      System.out.println("kode setelah exception");
    }
}
Kode program diatas artinya: Mendeklarasikan class DemoRuntimeException yang mengimplementasi try-catch untuk mengecheck apakah berhasil atau tidak Integer dirubah menjdi String.Bila kode program diatas dieksekusi, keluaran yang dihasilkan seperti beriku
java.lang.NumberFormatException: For input string: "Andi"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at DemoRuntimeException2.main(DemoRuntimeException2.java:17)
kode setelah exception

Melihat keluaran yang dihasilkan diatas, pada waktu mengeksekusi method parseInt, terjadi exception yang menyebabkan eksekusi akan loncat ke dalam kode block catch, setelah menampilkan stack trace ke console kemudian dilanjutkan eksekusi untuk mencetak string “kode setelah exception” ke console.



Link : https://bmadi.wordpress.com/2015/01/17/hirarki-class-exception/
Konsep Graphical User Interface

Konsep Graphical User Interface

12/07/2017
GUI (Graphical User Interface) adalah antarmuka pada sistem operasi atau komputer yang menggunakan menu grafis agar mempermudah para penggunanya untuk berinteraksi dengan komputer atau sistem operasi.

GUI merupakan antarmuka pada sistem operasi komputer yang menggunakan menu grafis.
Sejarah Singkat GUI
  • Pada awal diciptakan, komputer dijalankan dengan menggunakan perintah yang diketik pada layar monitor menggunakan keyboard.
  • Hanya orang2 tertentu sajalah yang bisa mengoperasikan komputer
  • Akhirnya para ahli terdorong untuk dapat menciptakan sesuatu yang dapat digunakan oleh orang kebanyakan dengan cara yang praktis dan mudah diingat
  • Kemudian lahirlah yang disebut GUI (yang seperangkat aplikasinya menampilkan semua menu, ikon dan alat penunjuk lain yang menggantikan perintah ketik di shell
  • Hal ini membuat pengguna komputer menjadi lebih mudah untuk mengoperasikan sebuah perangkat dari pada mengingat perintah yang menggunakan teks pada sebuah kotak command tertentu.
  • GUI pertama kali digunakan pada komputer yang diproduksi oleh APPLE yaitu Machintos dengan steve Jobs sebagai penggagasnya.

Keuntungan GUI
  • Menarik Minat Pengguna
  • Menggunakan ikon grafik dapat mempermudah dan mengurangi kobesanan pengguna pada waktu menggunakan komputer
  • Memudahkan pengguna
  • Pengguna lebih mudah memahami apa yang dipaparkan tanpa perlu banyak membaca
  • Memahirkan Pengguna Dengan Cepat
  • Cara memanipulasi objek pada screen adalah sama dalam setiap aplikasi yang berlainan masa latihan -Pengguna yang Singkat Karena pengguna GUI  telah memudahkan pengguna aplikasi maka pengguna dapat mengurangi masa latihan dan dapat belajar atau latihan dengan menggunakan aplikasi yang baru
  • Resolusi Gambar yang Tinggi
  • Dengan menggunakan GUI maka kita dapat menggunakan gambar atau tulisan yang bisa menghasilkan sampai dengan 256 warna 

Kekurangan GUI
  • memakan memori yang sangat besar
  • Bergantung pada perangkat keras
  • Membutuhkan banyak tempat pada layar komputer
  • Tidak fleksibel

Link : http://adistimk.blogspot.co.id/2015/12/konsep-gui.html
Sequence diagram

Sequence diagram

12/07/2017
SEQUENCE DIAGRAM

Pengertian Sequence Diagram

Sequence diagram adalah suatu diagram yang menggambarkan interaksi antar obyek dan mengindikasikan komunikasi diantara obyek-obyek tersebut. Diagram ini juga menunjukkan serangkaian pesan yang dipertukarkan oleh obyek – obyek yang melakukan suatu tugas atau aksi tertentu. Obyek – obyek tersebut kemudian diurutkan dari kiri ke kanan, aktor yang menginisiasi interaksi biasanya ditaruh di paling kiri dari diagram.Pada diagram ini, dimensi vertikal merepresentasikan waktu. 

Bagian paling atas dari diagram menjadi titik awal dan waktu berjalan ke bawah sampai dengan bagian dasar dari diagram. Garis Vertical, disebut  lifeline,  dilekatkan pada setiap obyek atau aktor. Kemudian, lifeline tersebut digambarkan menjadi kotak ketika obyek melakukan suatu operasi , kotak tersebut disebut activation box.

Obyek dikatakan mempunyai live activation pada saat tersebut.Pesan yang dipertukarkan antar obyek digambarkan sebagai sebuah anak panah antara activation box pengirim dan penerima. Kemudian diatasnya diberikan  label  pesan. 

Tujuan penggunaan sequence diagram :
  • Mengkomunikasikan requirement kepada tim teknis karena diagram ini dapat lebih mudah untuk dielaborasi menjadi model design.
  • Merupakan diagram yang paling cocok untuk mengembangkan model deskripsi use-case menjadi spesifikasi design.

Waktu Penggunaan sequence diagram :

  • Pada tahap discovery : Sequence diagram dari use case yang dipilih dibuat oleh Business Analyst.
  • Pada tahap construction : System analyst menggunakan use case dan sequence diagram yang dibuat oleh Business Analyst  sebagai input untuk pembuatan technical sequence diagram yang akan ditinjau kembali oleh Business Analyst
  • Pada tahap final verification and validation : sequence diagram digunakan untuk merancang test dari use-case scenario.

Elemen – elemen sequence diagram :

  1. Actor
  2. Lifeline
  3. Boundary
  4. Control
  5. Entity
  6. Fragment
  7. End point
  8. Diagram gate
  9. State 

Listing, Logika dan Output dari Program


Pada kesempatan kali ini, saya akan menjelaskan sedikit tentang pembuatan sequence diagram yang saya buat. Sequence diagram yang saya buat mengenai “ Prosedur Masuk Area Parkir “. Mengapa saya membuat sequence diagram prosedur masuk area parkir? Karena pada saat – saat ini banyak sekali di tempat – tempat umum yang sudah menggunakan mesin dengan otomatis. Pada mesin ini akan mengeluarkan sebuah karcis yang dimana karcis tersebut biasanya berisikan beberapa hal yang berada di kendaraan. Misalnya : nomor polisi kendaraan, waktu masuk, jenis kendaraan. Disinilah saya akan menjelaskannya. Agar lebih jelas saya akan memberikan contoh dengan nama “ Pengendara “. Pengendara ini merupakan seorang pengendara kendaraan bermotor. Disini pengendara akan memasuki parkiran, mengambil karcis, dan memakirkan kendaraannya di area parkir. 

Pertama – tama pengendara sudah jelas harus memasuki kendaraannya tersebut ke tempat parkir. Akan tetapi, sebelum memasuki parkiran petugas parkir akan mencatat nomor polisi, jenis kendaraan dan waktu masuk kendaraan tersebut. Petugas parkir akan membut database atas kendaraan yang masuk ke area parkir. Setelah database dibuat, petugas memerintahkan mesin karcis untuk mencetak dan petugas akan memberikan karcis yang sudah di cetak ke pengendara kendaraan tersebut. Setelah memberikan karcis maka petugas parkir membuka palang dan palang akan terbuka secara otomatis dan pengendara memasuki area parkir dan pengendara memakirkan kendaraannya di area parkir.

Diatas merupakan bagaimana prosedur masuk area parkir. Maka dibawah ini akan di tampilkan dengan menggunakan sequence diagram. Inilah hasilnya :
Setelah melihat gambar diatas. Saya akan menjelaskan elemen – elemen apa saja yang digunakan dalam pembuatan sequence diagram ini. 

Disini saya menggunakan elemen “ ACTOR “ yang berfungsi sebagai “ Pengendara “. Setelah itu, saya menggunakan 7 buah object. Dimana ketujuh buah object tersebut diisikan dengan “ KENDARAAN, KARCIS, MESIN KARCIS, PETUGAS, DATABASE, PALANG, AREA PARKIR “. Disini object berfungsi sebagai pemberitahu apa saja yang ada di sequence diagram. Setelah itu, yang terakhir adalah “ STIMULUS “. Stimulus ini merupakan sebuah tanda panah. Disini tanda panah dimulai di ACTOR atau di PENGENDARA. Dari actor / pengendara tersebut dihubungkan ke object – object yang sudah ada di sequence diagram yang tadi dibuat. Stimulus ini juga akan berakhir di kendaraan.

Link : http://gitadwisetiawati.blogspot.co.id/2013/01/sequence-diagram.html
Class Diagram

Class Diagram

12/07/2017
Class diagram adalah diagram yang menggambarkan struktur sistem dari segi pendefinisian kelas-kelas yang akan dibuat untuk membangun sistem. kelas memiliki 3 bagian utama yaitu attribute, operation, dan name.

kelas-kelas yang ada pada struktur sistem harus dapat melakukan fungsi-fungsi sesuai dengan kebutuhan sistem. Sususan struktur kelas ynag baik pada diagram kelas sebaiknya memiliki jenis-jenis kelas berikut :
  • Kelas Main. Yaitu kelas yang memiliki fungsi awal dieksekusi ketika sistem dijalankan.
  • Kelas Interface. Kelas yang mendefinisikan dan mengatur tampilan ke pemakai.
  • kelas boundaries. Kelas yang diambil dari pendefinisian usecase. Merupakan kelas yang menangani fungsi-fungsi yang harus ada dan diambil dari pendefinisian usecase.
  • Kelas Entitas. Merupakan kelas yang digunakan untuk memegang atau membungkus data menjadi sebuah kesatuan yang diambil maupun akan disimpan ke basis data.


Link : http://fatimahumi.blogspot.co.id/2014/03/uml-class-diagram.html