Sabtu, 17 Desember 2016

EAS PPL Kelas C. Implementasi Memento Pattern : Undo Redo System

Kelompok:
- Rivaldo Alif Rachmansyah 5114100010
- Ivaldy Putra Lifiari            5114100105
- Wida Dwitiayasa               5114100155

MEMENTO DESIGN PATTERN


Memento Design Pattern adalah sebuah pattern yang digunakan untuk menyimpan suatu kondisi sebelumnya dari sebuah objek. 

Memento Pattern biasanya terdiri dari 3 class utama:

  1. Class Memento: Object yang akan disimpan dan memiliki isi yang berbeda-beda (bisa string, angka, status, boolean, dll)
  2. Class Originator: Class yang digunakan untuk melakukan set and get dari sebuah objek memento. Originator juga digunakan untuk membuat objek memento baru dan memasukkan value kedalam objek tersebut
  3. Class Caretaker: Memiliki sebuah  ArrayList yang berisi semua memento yang pernah tersimpan. Caretaker juga berfungsi untuk store and retrieve objek-objek memento yang tersimpan didalamnya

Berikut adalah Use Case Diagram dari Memento Design Pattern kali ini:


Berikut adalah Sequence Diagram dari Memento Design Pattern kali ini:






Berikut adalah Class Diagram dari Memento Design Pattern kali ini:


- Class Memento untuk menyimpan objek yang dijadikan sebagai memento
- Class Originator untuk membuat sebuah objek memento baru dan memberi objek tersebut sebuah value atau untuk mengambil objek memento yang sudah tersimpan 
- Class Caretaker untuk membuat array yang diisi semua memento yang telah dibuat 

Berikut adalah CRC dari Memento Design Pattern kami:

Berikut adalah Component dan Deployment diagram dari Memento Design Pattern kami:




Implementasi Design Pattern : Undo & Redo Pada Notepad
Terdapat 4 Class pada contoh implementasi kali ini, yaitu

Class Memento

1:  //Menyimpan objek sebagai memento  
2:    
3:  public class Memento {  
4:         
5:       // article adalah variabel yang akan disimpan didalam memento  
6:         
7:       private String article;  
8:    
9:      // Menyimpan article baru kedalam Object Memento  
10:         
11:       public Memento(String articleSave) { article = articleSave; }  
12:         
13:       // Mengembalikan value didalam variabel artikel  
14:         
15:       public String getSavedArticle() { return article; }  
16:         
17:  }  

Penjelasan:
- fungsi Memento() digunakan untuk menyimpan value / input baru kedalam Memento
- fungsi getSavedArticle() digunakan untuk return value Memento kedalam variabel article

Class Originator

1:  // Membuat object Memento baru
2:  
3:  public class Originator{  
4:         
5:       private String article;  
6:    
7:       // memasukkan input pada variabel article yang baru
8:         
9:       public void set(String newArticle) {   
10:            System.out.println("From Originator: Current Version of Article\n"+newArticle+ "\n");  
11:         this.article = newArticle;   
12:       }  
13:    
14:       // Menciptakan Memento baru yang berisi variabel article
15:         
16:       public Memento storeInMemento() {   
17:         System.out.println("From Originator: Saving to Memento");  
18:         return new Memento(article);   
19:       }  
20:           
21:       // Mengambil variabel article yang sekarang sedang disimpan didalam Memento
22:         
23:       public String restoreFromMemento(Memento memento) {  
24:                
25:            article = memento.getSavedArticle();   
26:             
27:            System.out.println("From Originator: Previous Article Saved in Memento\n"+article + "\n");  
28:              
29:            return article;  
30:           
31:       }  
32:         
33:  }  

Penjelasan:
fungsi set() digunakan untuk memasukan input pada variabel article yang baru
- fungsi storeInMemento() digunakan untuk menciptakan Memento baru untuk menyimpan variabel article
- fungsi restoreFromMemento() digunakan untuk mengambil variabel article yang disimpan didalam Memento

Class Caretaker

1:  // Membuat array untuk menyimpan Memento 
2:    
3:  import java.util.ArrayList;  
4:    
5:  class Caretaker {  
6:      
7:       // ArrayList tempat tersimpannya Memento
8:         
9:       ArrayList<Memento> savedArticles = new ArrayList<Memento>();  
10:    
11:       // Menambah Memento baru kedalam ArrayList
12:         
13:       public void addMemento(Memento m) { savedArticles.add(m); }  
14:      
15:       // Memanggil Memento yang diminta dari dalam ArrayList
16:         
17:       public Memento getMemento(int index) { return savedArticles.get(index); }  
18:  }   

Penjelasan:
- Variabel SavedArticles adalah variabel bertipe ArrayList tempat tersimpannya Memento
- Fungsi addMemento() digunakan untuk memasukkan Memento baru kedalam ArrayList
- Fungsi getMemento() digunakan untuk memanggil Memento yang diminta dari dalam ArrayList

Class TestMemento

1:  // Tampilan Implementasi Memento
2:  // import Java  
3:  import java.awt.event.ActionEvent;  
4:  import java.awt.event.ActionListener;  
5:    
6:  import javax.swing.*;  
7:    
8:  public class TestMemento extends JFrame{  
9:    public static void main(String[] args) {  
10:         // Constructor Class TestMemento
11:         new TestMemento();  
12:        
13:    }  
14:      
15:    private JButton saveBut, undoBut, redoBut;  
16:      
17:    // JTextArea(rows, columns)  
18:      
19:    private JTextArea theArticle = new JTextArea(40,60);  
20:      
21:    // ---------------------------------------------  
22:      
23:    // Menciptakan variabel caretaker yang berisi ArrayList     
24:    // dapat digunakan untuk add and retrieve article
25:    // dari dalam ArrayList  
26:      
27:    Caretaker caretaker = new Caretaker();  
28:    
29:    // Variabel originator digunakan untuk memasukkan nilai
30:    // input kedalam article, menciptakan Memento baru, dan 
31:    // mengambil article yang disimpan didalam Memento
32:      
33:    Originator originator = new Originator();  
34:    // saveFile = total isi array; currentArticle = lokasi sekararang didalam array  
35:    int saveFiles = 0, currentArticle = 0;  
36:      
37:    // ---------------------------------------------  
38:      
39:    public TestMemento(){  
40:           
41:   
42:         // Memunculkan GUI  
43:           
44:         this.setSize(750,780); //size windows GUI 
45:         this.setTitle("Memento Design Pattern");  //judul GUI
46:         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
47:           
48:         JPanel panel1 = new JPanel();  
49:           
50:         // memberi label berjudul "Article" untuk ditampilkan  
51:           
52:         panel1.add(new JLabel("Article"));  
53:           
54:         // memberi JTextArea untuk article
55:           
56:         panel1.add(theArticle);  
57:           
58:         // Menambah 3 tombol pada tampilan & ButtonListener  
59:           
60:         ButtonListener saveListener = new ButtonListener();  
61:         ButtonListener undoListener = new ButtonListener();  
62:         ButtonListener redoListener = new ButtonListener();  
63:           
64:         saveBut = new JButton("Save"); //tombol save 
65:         saveBut.addActionListener(saveListener);  
66:           
67:         undoBut = new JButton("Undo"); //tombol undo
68:         undoBut.addActionListener(undoListener);  
69:           
70:         redoBut = new JButton("Redo"); //tombol redo
71:         redoBut.addActionListener(redoListener);  
72:           
73:         panel1.add(saveBut);  //menampilkan tombol save
74:         panel1.add(undoBut);  //menampilkan tombol undo
75:         panel1.add(redoBut);  //menampilkan tombol redo
76:           
77:         // Menampilkan panel1 pada layar  
78:           
79:         this.add(panel1);  
80:           
81:         this.setVisible(true);  
82:           
83:    }  
84:      
85:    class ButtonListener implements ActionListener {  
86:    
87:            public void actionPerformed(ActionEvent e) {  
88:                 // Jika user menekan tombol SAVE  
89:                 if(e.getSource() == saveBut){  
90:                        
91:                      // Mendapatkan text telah ditulis
92:                        
93:                      String textInTextArea = theArticle.getText();  
94:                        
95:                      // Memasukkan text sebagai value dari objek Memento  
96:                        
97:                      originator.set(textInTextArea);  
98:                        
99:                      // Memasukkan article baru kedalam ArrayList
100:                        
101:                      caretaker.addMemento( originator.storeInMemento() );  
102:                        
103:                      // saveFiles menunjukan berapa article yang telah disimpan  
104:                      // currentArticle menunjukan nomor article sekarang
105:                        
106:                      saveFiles++;  
107:                      currentArticle++;  
108:                        
109:                      System.out.println("Save Files " + saveFiles);  
110:                        
111:                      // Membuat tombol UNDO dapat ditekan 
112:                        
113:                      undoBut.setEnabled(true);  
114:                        
115:                 } else   
116:                      // Jika user menekan tombol UNDO
117:                      if(e.getSource() == undoBut){  
118:                             
119:                           if(currentArticle >= 1){  
120:                                  
121:                                // variabel currentArticle dikurangi agar dapat di undo  
122:                                  
123:                                currentArticle--;  
124:                                  
125:                                // Memanggil article dengan index yang sama dengan variable currentArticle
126:                             
127:                                String textBoxString = originator.restoreFromMemento( caretaker.getMemento(currentArticle) );  
128:                                  
129:                                theArticle.setText(textBoxString);  
130:                                  
131:                                // Membuat tombol REDO dapat ditekan 
132:                                  
133:                                redoBut.setEnabled(true);  
134:                             
135:                           } else {  
136:                                  
137:                                // Tombol UNDO menjadi tidak dapat ditekan 
138:                                  
139:                                undoBut.setEnabled(false);  
140:                                  
141:                           }  
142:                             
143:                      } else  
144:                           // Jika user menekan tombol REDO
145:                           if(e.getSource() == redoBut){  
146:                             
147:                           if((saveFiles - 1) > currentArticle){  
148:                                  
149:                                // variabel currentArticle ditambah agar dapat di undo  
150:                                  
151:                                currentArticle++;  
152:                                  
153:                                // Memanggil article dengan index yang sama dengan variable currentArticle  
154:                             
155:                                String textBoxString = originator.restoreFromMemento( caretaker.getMemento(currentArticle) );  
156:                                  
157:                                theArticle.setText(textBoxString);  
158:                                  
159:                                // Membuat tombol UNDO dapat ditekan   
160:                                  
161:                                undoBut.setEnabled(true);  
162:                             
163:                           } else {  
164:                                  
165:                                // Tombol REDO menjadi tidak dapat ditekan 
166:                                  
167:                                redoBut.setEnabled(false);  
168:                                  
169:                           }  
170:                             
171:                      }  
172:                   
173:            }  
174:              
175:       }  
176:      
177:  }


Hasil Output 
Ketika menekan tombol Save, input pertama (tes awal) langsung disimpan kedalam memento sebagai memento 1 

Ketika menekan tombol Save lagi, input kedua (tes akhir) langsung disimpan kedalam memento sebagai memento 2

Ketika menekan tombol Undo, user yang sedang berada di array kedua, dipindah ke array pertama dan memuncul kan memento pertama (tes awal)

Ketika menekan tombol Redo, user yang sedang berada di array pertama, dipindah ke array kedua dan memuncul kan memento kedua (tes akhir)

Senin, 21 November 2016

Design Pattern: Memento Pattern

DESIGN PATTERN merupakan solusi umum yang dapat digunakan secara berulang kali untuk menyelesaikan masalah umum yang ditemukan dalam desain perangkat lunak.

Terdapat total 23 macam design pattern yang dikelompokkan menjadi 3 macam:

  1. Creational (menyangkut pembuatan objek):
  2. Structural (menyangkut struktur program):
  3. Behavioral (menyangkut kelakuan program):
Berikut adalah contoh gambar pembagian 23 pattern diatas



Kali ini kita akan membahas lebih dalam tentang:
MEMENTO PATTERN

Definisi:
Sebuah pattern yang digunakan untuk mengembalikan kondisi sebuah objek ke kondisi sebelumnya, seperti "undo" atau "redo".

Struktur:
Memento Pattern UML Diagram
Terdiri dari 3 actor class utama, yaitu:

    1. Originator: Menciptakan semacam checkpoint untuk melakukan memento
    2. Memento: Berisi object yang akan di restore kembali menjadi originator
    3. Caretaker: Bertugas mengembalikan object didalam memento menjadi originator
Contoh Penggunaan:
Memento example
Contoh penggunaan adalah pada mekanik yang akan mereparasi kedua piringan rem sebuah mobil. Hanya satu piringan yang dicopot dalam satu waktu sementara sisi lainnya digunakan sebagai memento atau contoh untuk mengembalikan kondisi piringan rem seperti semula.

Contoh Code dalam JAVA:
Langkah 1:

Buat Class Memento
Memento.java
 public class Memento {  
   private String state;  
   public Memento(String state){  
    this.state = state;  
   }  
   public String getState(){  
    return state;  
   }       
 }  


Langkah 2:

Buat Class Originator
Originator.java


 public class Originator {  
   private String state;  
   public void setState(String state){  
    this.state = state;  
   }  
   public String getState(){  
    return state;  
   }  
   public Memento saveStateToMemento(){  
    return new Memento(state);  
   }  
   public void getStateFromMemento(Memento Memento){  
    state = Memento.getState();  
   }  
 }  

Langkah 3:

Buat Class CareTaker
CareTaker.java


 import java.util.ArrayList;  
 import java.util.List;  
 public class CareTaker {  
   private List<Memento> mementoList = new ArrayList<Memento>();  
   public void add(Memento state){  
    mementoList.add(state);  
   }  
   public Memento get(int index){  
    return mementoList.get(index);  
   }  
 }  

Langkah 4:

Gunakan Class CareTaker dan Originator dalam Class MementoPatternDemo

MementoPatternDemo.java


 public class MementoPatternDemo {  
   public static void main(String[] args) {  
    Originator originator = new Originator();  
    CareTaker careTaker = new CareTaker();  
    originator.setState("State #1");  
    originator.setState("State #2");  
    careTaker.add(originator.saveStateToMemento());  
    originator.setState("State #3");  
    careTaker.add(originator.saveStateToMemento());  
    originator.setState("State #4");  
    System.out.println("Current State: " + originator.getState());            
    originator.getStateFromMemento(careTaker.get(0));  
    System.out.println("First saved State: " + originator.getState());  
    originator.getStateFromMemento(careTaker.get(1));  
    System.out.println("Second saved State: " + originator.getState());  
   }  
 }  

Langkah Terakhir:

Periksa outputnya


 Current State: State #4  
 First saved State: State #2  
 Second saved State: State #3  

Selasa, 01 November 2016

Component Diagram dan Deployment Diagram untuk Sensor Pada AC

Component diagram: adalah diagram UML yang menampilkan komponen dalam sistem dan hubungan antara mereka

Berikut adalah Component Diagram untuk sistem Sensor pada AC



Deployment diagram: adalah diagram UML yang digunakan untuk memvisualisasikan topologi dari komponen-komponen fisik dari sistem ketika komponen software nya dijalankan

Berikut adalah Deployment Diagram untuk sistem sensor pada AC

Minggu, 16 Oktober 2016

Program, Sequence Diagram, Activity Diagram, Use Case, Class Diagramm dan CRC untuk Sensor pada AC

1. Use Case
Berikut adalah Use Case untuk sistem sensor pada AC

2. Activity Diagram
Berikut adalah Activity Diagram untuk sistem sensor pada AC

a. cek jumlah orang

b. cek kelembaban

c. sistem fan

d. sistem swing

e. sistem temperatur


3. Class Diagram
Berikut adalah Class Diagram untuk sistem sensor pada AC

4. CRC
Berikut adalah CRC untuk sistem sensor pada AC




5. Sequence Diagram
Berikut adalah Sequence Diagram untuk sistem sensor pada AC

a.  Cek Jumlah Orang

 b. Cek Kelembaban Ruangan

c. Mengatur Fan

d. Mengatur Swing


e. Mengatur Temperatur


6. Program sensor pada AC. Terdapat 3 bagian untuk program ini


Sistem.cpp
#include<iostream>
#include<math.h>
#include<string>
#include<stdlib.h>
#include "AC.h"
#include "Sensor.h"

using namespace std;

int checkJumlahOrang(int jumlahOrang){
    int hasil;
    if(jumlahOrang>=0 && jumlahOrang<=14)
        hasil=0;
    else if(jumlahOrang>=15 && jumlahOrang<=25)
        hasil=1;
    else
        hasil=2;

return hasil;
}
int checkKelembaban(float kelembaban){
    int hasil;
    if(kelembaban>=20 && kelembaban<=25)
        hasil=0;
    else if(kelembaban>=26 && kelembaban<=69)
        hasil=1;
    else
        hasil=2;

return hasil;
}

void setAturan(AC *objekAC, Sensor *objekSensor, string tableAturan[3][3], int rangeSuhu[3][2]){
    cout << "\nmasuk setAturan\n" << endl;
    string aturan = tableAturan[objekSensor->getTingkatJumlahOrang()][objekSensor->getTingkatKelembaban()];

    int koma[2], ubahTemperatur, indeksRangeSuhu, ubahFanSpeed;

    koma[0] = aturan.find_first_of(",");
    koma[1] = aturan.find_last_of(",");

    //ganti temperatur
    ubahTemperatur = atoi(aturan.substr(0,koma[0]).c_str());
    cout << "ubah temperatur : " << ubahTemperatur << endl;
    indeksRangeSuhu = objekSensor->getTingkatJumlahOrang();
    if(objekAC->getTemperatur()+ubahTemperatur>=rangeSuhu[indeksRangeSuhu][0] && objekAC->getTemperatur()+ubahTemperatur<=rangeSuhu[indeksRangeSuhu][1])
        objekAC->setTemperatur(objekAC->getTemperatur()+ubahTemperatur);

    //cout << "temperatur in setAturan : " << objekAC->getTemperatur() << endl;
    //set swing
    if(aturan.substr(koma[1]+1,1).compare("0")==0)
        objekAC->setSwing(false);
    else
        objekAC->setSwing(true);

    //set fan speen
    ubahFanSpeed = atoi(aturan.substr(koma[0]+1,koma[1]-koma[0]-1).c_str());
    objekAC->setFanSpeend(ubahFanSpeed);

    return;

    //cout << aturan << endl;
    //cout << aturan.substr(0,koma[0]) << endl;
    //cout << aturan.substr(koma[0]+1,koma[1]-koma[0]-1) << endl;
    //cout << aturan.substr(koma[1]+1,1) << endl;

    //cout << atoi(aturan.substr(0,1).c_str())+atoi(aturan.substr(2,1).c_str()) << endl;
}

int main(){

    string tableAturan[3][3] = { {"0,1,0","0,1,0","1,1,0"},
                        {"0,2,1","-1,2,1","-1,1,0"},
                        {"-2,3,1","-1,2,1","0,1,1"}};

    //rangeSuhu digunakan untuk membatasi perubahan suhu berdasarkan jumlah orang, rendah sedang tinggi
    int rangeSuhu[3][2] = { {24,27},
                            {19,23},
                            {15,18}};
    int indeksRangeSuhu, nilaiTengahRangeSuhu, tingkatJumlahOrangSebelum;

    Sensor objekSensor(-1);
    AC objekAC;

    int jumlahOrang, tingkatKelembaban, tingkatJumlahOrang;
    float kelembaban;
    while(true){
        cout << "Program akan berjalan terus, tekan CTRL+C untuk exit" << endl;
        cout << "Jumlah orang : " << endl;
        cin >> jumlahOrang;
        cout << "Kelembaban : " << endl;
        cin >> kelembaban;
        cout << endl;

        if(objekSensor.getTingkatJumlahOrang()==-1){
            objekAC.setPower(true, 0, false);
        }

        if(jumlahOrang==0){
            objekAC.setPower(false, 0, false);
            objekSensor.setTingkatJumlahOrangKelembaban(-1, -1);
            break;
        }


        objekSensor.setJumlahOrangKelembaban(jumlahOrang, kelembaban);
        tingkatJumlahOrangSebelum = objekSensor.getTingkatJumlahOrang();
        objekSensor.setTingkatJumlahOrangKelembaban(checkJumlahOrang(objekSensor.getJumlahOrang()), checkKelembaban(objekSensor.getKelembaban()));

        //objek baru terbentuk
        if(tingkatJumlahOrangSebelum == -1 || tingkatJumlahOrangSebelum!=objekSensor.getTingkatJumlahOrang()){
            indeksRangeSuhu = objekSensor.getTingkatJumlahOrang();
            cout << "indeks range suhu : " << indeksRangeSuhu << endl;
            nilaiTengahRangeSuhu = floor((rangeSuhu[indeksRangeSuhu][1]-rangeSuhu[indeksRangeSuhu][0])/2);
            cout << "nilai tengah range suhu : " << nilaiTengahRangeSuhu << endl;
            objekAC.setTemperatur(nilaiTengahRangeSuhu+rangeSuhu[indeksRangeSuhu][0]);
            cout << "temperatur kemungkinan : " << objekAC.getTemperatur() << endl;
        }
        setAturan(&objekAC, &objekSensor, tableAturan, rangeSuhu);

        cout << "\nTemperatur sekarang : " << objekAC.getTemperatur() << endl;
        cout << "Fan Speed sekarang : " << objekAC.getFanSpeen() << endl;
        cout << "Swing sekarang : " << objekAC.getSwing() << endl;
        cout << endl << endl;
    }

return 0;

}

Sensor.h
#ifndef Sensor_H_
#define Sensor_H_

class Sensor{
    int jumlahOrang, tingkatJumlahOrang, tingkatKelembaban;
    float kelembaban;

    public:
        Sensor(int);
        void setTingkatJumlahOrangKelembaban(int,int);
        void setJumlahOrangKelembaban(int, float);
        int getJumlahOrang(){ return jumlahOrang; };
        float getKelembaban(){ return kelembaban; };
        int getTingkatJumlahOrang(){ return tingkatJumlahOrang;};
        int getTingkatKelembaban(){ return tingkatKelembaban;};
};

void Sensor::setJumlahOrangKelembaban(int jumlahOrang, float kelembaban){
    this->jumlahOrang = jumlahOrang;
    this->kelembaban = kelembaban;
}

void Sensor::setTingkatJumlahOrangKelembaban(int tingkatJumlahOrang, int tingkatKelembaban){
    this->tingkatJumlahOrang = tingkatJumlahOrang;
    this->tingkatKelembaban = tingkatKelembaban;
}

Sensor::Sensor(int tingkatJumlahOrang){
    this->tingkatJumlahOrang = tingkatJumlahOrang;
}


#endif

AC.h
#ifndef AC_H_
#define AC_H_

class AC{
    int temperatur, fanSpeed;
    bool swing, power;

    public:
        void setTemperatur(int);
        void setSwing(bool);
        void setPower(bool, int, bool);
        void setFanSpeend(int);
        int getTemperatur(){ return temperatur; };
        int getFanSpeen(){ return fanSpeed; };
        int getSwing(){ return swing; };
};

void AC::setTemperatur(int temperatur){
    this->temperatur = temperatur;
}

void AC::setSwing(bool swing){
    this->swing = swing;
}

void AC::setFanSpeend(int fanSpeed){
    this->fanSpeed = fanSpeed;
}

void AC::setPower(bool power, int fanSpeed, bool swing){
    this->power = power;
    this->fanSpeed = fanSpeed;
    this->swing = swing;
}


#endif

source code: pelajaranc.blogspot.com

Minggu, 02 Oktober 2016

CRC Modelling dan Class DIagram dari Online Shopping Information System

Class Diagram


Class adalah kumpulan objek-objek yang mempunyai struktur umum, relasi umum, dan kata yang umum. Class ditentukan dengan cara memeriksa objek-objek dalam sequence dan collaboration diagram. Class sebaiknya diberi nama menggunakan kata benda sesuai dengan domain / bagian / kelompoknya.

Class Diagram adalah diagram yang digunakan untuk menampilkan beberapa kelas serta paket-paket dalam sistem / perangkat lunak yang kita gunakan. Class diagram menunjukkan semua class yang ada dari sebuah sistem dan hubungannya secara logika. Class diagram dianggap sebagai tulang punggung dari hampir setiap metode berorientasi objek termasuk UML karena menggambarkan struktur statis sebuah sistem. 

Berikut adalah class diagram dari Online Shopping Information System



CRC (Class Responsibility Collabolator)

CRC adalah kartu indeks yang terdiri dari 3 hal yaitu class, responsibility, dan collabolator. 

Berikut adalah format cari CRC:

Berikut adalah CRC dari Online Shopping Information System:










Use Case dan Realisasi Class

Berikut adalah hubungan antara use case dengan realisasi class:


---------------------------------------------------------------------------------
Sekian sedikit bahasan dari saya tentang CRC dan Class Diagram Online Shopping Information System
Semoga ilmu nya bermanfaat 
Sekian dan terima kasih 

Kamis, 22 September 2016

Use Case Diagram Online Shopping Information System


Use Case Diagram adalah representasi dari interaksi user dengan sistem yang menunjukkan hubungan user dengan use case yang berbeda-beda dimana user terlibat. Sebuah use case diagram dapat mengidentifikasi tipe-tipe user dan macam-macam use case yang berbeda dalam sebuah sistem.

Saya mengambil use case diagram sistem Online Shopping dikarenakan pasti sebagian besar dari kita sudah berpengalaman atau minimal pernah mendengar atau mengetahui apa itu Online Shopping

Berikut adalah Use Case Diagram Online Shopping secara lengkap





Terdapat 6 proses yang terjadi pada sistem ini:


1. Maintain Account


Pada proses ini user dapat membuat akun baru. User juga dapat mengubah data-data pribadinya atau menghapus akun nya, tetapi dua hal tersebut hanya dapat dilakukan setelah user melakukan login

2. Process Help Request 
Pada proses ini, user akan mengirimkan permintaan bantuan atau Help Request. Help Request tersebut nanti nya akan direspon oleh Customer Support. Lalu, balasan dari Customer Support tersebut akan dikirim lagi kepada user tadi.

3. Explore Catalog
Pada proses ini, user dapat melakukan pencarian barang-barang yang ingin dibeli dengan menelusuri catalog

4. Maintain Shopping Cart

Pada proses ini, user dapat memilih, mengatur, dan memodifikasi barang yang sudah ia pilih dan sudah masuk kedalam Shopping Cart nya. 

5. Manage Financing



Pada proses ini, user dapat mendaftar untuk melakukan pembayaran secara online, melakukan pembayaran, atau hanya melihat informasi pembayaran seperti history pembayaran user tersebut. Mendaftar dan melakukan pembayaran secara online dikatakan berhasil apabila telah diurus dan disetujui oleh Financing Department. Semua hal diatas dapat dilakukan setelah user melakukan login

6. Process Returns

Pada proses ini, user akan mengirimkan request untuk pengembalian barang kepada toko online shopping tersebut. Lalu, apabila pegawai Costumer Support memvalidasi permintaan tersebut, maka proses pengembalian barang berhasil dilakukan. Credit Institution perlu dilibatkan apabila user melakukan pembayaran menggunakan kartu kredit

---------------------------------------------------------------------------------
Sekian sedikit bahasan dari saya tentang Use Case Diagram Online Shopping Information System
Semoga ilmu nya bermanfaat 
Sekian dan terima kasih