Senin, 28 November 2016

Design Pattern - Observer

Kali ini saya akan membahas tentang Desain Pattern yang ada pada Object Oriented Programming (OOP), ada berbagai macam jenis Design pattern yang ada namun kali ini saya akan lebih membahas tentang observer design pattern.

Sebelum masuk ke observer, mari kita ketahui apa itu design pattern. Design Pattern adalah sebuah solusi atas sebuah problem yang seringkali muncul dan berulang ulang. Bentuknya bukan sebuah source code melainkan sebuah desain/konsep yang langsung dapat ditransformasikan ke dalam sebuah bahasa pemrograman. Design Pattern seperti sebuah panutan terbaik untuk programmer dalam menyelesaikan masalah2 yang ada dalam software developing.

Lanjut pada Design Pattern Observer, seperti namanya observer merupakan sebuah desain dimana si observer ini akan selalu melihat kepada Subject nya, dimana jika sang subject terdapat perubahan maka observer akan membroadcast perubahannya kepada anak2nya jadi hubungan observer dan subjectnya adalah one-to-many.

Observer scheme

ALGORITMA OBSERVER DESIGN PATTERN
  1. Modelkan fungsi yang "independent/berdiri sendiri" dengan abstraksi "subject" 
  2. Modelkan fungsi yang "dependent/bergantung" dengan hirarki "observer"
  3. Subject hanya dipasangkan dengan base class dari observer
  4. Observers menghubungkan diri dengan class subject
  5. Subject akan membroadcast update kepada observer yang telah terhubung
  6. Observer menarik/mencari informasi pada subject
  7. Programmer menentukan banyak dan tipe observer

DEMO
Pada demo kali ini, saya akan membuat sebuah observer pada operasi matematika.
1. Modelkan Subject
class Subject {
    vector < class Observer * > views; // 3. Subject hanya dipasangkan dengan base class observer
    int value;
  public:
    void attach(Observer *obs) {
        views.push_back(obs);
    }
    void setVal(int val) {
        value = val;
        notify();
    }
    int getVal() {
        return value;
    }
    void notify();
};     

2. Modelkan Observer
class Observer {
    Subject *model;
    int denom;
  public:
    Observer(Subject *mod, int div) {
        model = mod;
        denom = div;
        // 4. Observers menghubungkan diri dengan Subject
        model->attach(this);
    }
    virtual void update() = 0;
  protected:
    Subject *getSubject() {
        return model;
    }
    int getDivisor() {
        return denom;
    }
};

3. Membuat Broadcaster
void Subject::notify() {
  for (int i = 0; i < views.size(); i++)
    views[i]->update();
} 

4. Membuat Observer Turunan untuk Menarik Suatu Informasi
class DivObserver: public Observer {
  public:
    DivObserver(Subject *mod, int div): Observer(mod, div){}
    void update() {
        int v = getSubject()->getVal(), d = getDivisor();
        cout << v << " div " << d << " is " << v / d << '\n';
    }
};

class ModObserver: public Observer {
  public:
    ModObserver(Subject *mod, int div): Observer(mod, div){}
    void update() {
        int v = getSubject()->getVal(), d = getDivisor();
        cout << v << " mod " << d << " is " << v % d << '\n';
    }
};

5. Fungsi Main dimana kita bisa mengatur berapa dan tipe observer
int main() {
  Subject subj;
  DivObserver divObs1(&subj, 2); 
  DivObserver divObs2(&subj, 3); 
  ModObserver modObs3(&subj, 2);
  subj.setVal(17);
}

6. Hasil Program

Sekian pembahasan kali ini semoga bermanfaat terimakasih

REFERENSI
https://sourcemaking.com/design_patterns/observer
https://en.wikipedia.org/wiki/Software_design_pattern

Trastian Satria Wibowo
5114100016
PPL - E

Senin, 24 Oktober 2016

Prototype Aplikasi Pemesanan Makanan di Restoran - PPL E

Ketika kita di sebuah restoran sering kali kita menunggu untuk dilayani dan pegawainya harus berjalan kesana kemari, maka dari itu saya membuat prototype aplikasi pemesanan makanan di restoran.

Use Case Diagram

Sequence Diagram (Registrasi Form / Form nama pemesan serta nomor meja)



Sequence Diagram (Form Pemesanan Makanan)


Sequence Diagram (Pembayaran)



Screenshot Prototype Aplikasi
1. Form Pendaftaran Meja



2. Form Pemesanan Makanan



Potongan Source Code:



Referensi:
http://juristr.com/blog/2009/03/uml-use-case-extend-and-include/

Ditulis Oleh:
Trastian Satria Wibowo
5114100016
PPL-E

Senin, 26 September 2016

Use Case Diagram ATM Mandiri

Pada kesempatan kali ini saya akan membahas tentang Use Case Diagram pada Mesin ATM bank Mandiri. Tampilan yang ada pada mesin ATM Mandiri kurang lebih seperti dibawah ini :
Menu Utama ATM Mandiri

Menu Transaksi Lainnya ATM Mandiri

Dari gambar diatas maka saya membuat Use Case Diagram seperti gambar dibawah ini

Operator
1. Sistem Nyala
Hal yang pertama kali dilakukan adalah operator menyalakan mesin ATM sehingga bisa digunakan oleh banyak orang. Ketika mesin menyala pertama kali, mesin akan meminta data ke operator berapakah uang yang ada pada atm tersebut. Setelah mendapat data dari operator, maka mesin atm mengirim data tersebut ke jaringan pusat bank. Setelah itu mesin ATM siap digunakan.


2. Sistem Mati
Ketika operator menjalankan perintah mati/ shutdown maka mesin akan melakukan proses shutdown serta mematikan koneksi ke jaringan bank pusat.


Customer
1. Masukan PIN
Ketika kartu dimasukan ke mesin ATM maka pertama kali yang muncul dilayar adalah verifikasi PIN customer. Setelah memasukkan PIN maka customer/nasabah akan mendapat session pada mesin ATM.


2. Session - Transaction
Ketika session telah berhasil dibuat, maka proses selanjutnya adalah pemilihan transaksi. Halaman yang muncul pada mesin atm adalah seperti gambar menu utama diatas. Pilihan transaksi sesuai kebutuhan nasabah.

3. Penarikan
Penarikan uang pada atm bisa menginputkan sesuai keinginan, namun harus dengan kelipatan pecahan uang yang ada dalam atm. Setelah memasukan jumlah penarikan dan dinyatakan valid untuk penarikan, maka selanjutnya mesin atm melihat saldo yang dimiliki nasabah pada jaringan bank. Jika sampai tahap pengecekan saldo dinyatakan valid, maka mesin ATM akan mengeluarkan uang sesuai jumlah yang sudah diinputkan tadi.


4. Bayar/ Beli
Menu bayar/beli disini adalah untuk membeli voucher pulsa ataupun membayar tagihan listrik misalnya. Tidak hanya 2 diatas, namun banyak sekali hal yang bisa dibayar pada menu Bayar/Beli ini. Sebagai contoh pembelian pulsa, pertama anda akan diminta nominal yang akan dibeli, lalu anda juga diminta nomor tujuan pengiriman pulsa. Setelah itu bank akan memproses pembelian, jika saldo cukup maka pembelian akan dilakukan dan pulsa akan masuk pada nomor tujuan.

5. Mandiri Prabayar
Mandiri prabayar disini adalah menu untuk nasabah dimana pada menu ini nasabah bisa membeli/mengisi ulang kartu prabayar dari mandiri seperti e-toll card. E-toll card ini digunakan untuk membayar toll fee secara otomatis tanpa mengeluarkan uang fisik.

6. Informasi Saldo
Nasabah bisa mendapatkan informasi saldo mereka pada ATM. Prosesnya, ketika nasabah masuk ke menu ini maka ATM akan meminta data pada jaringan bank pusat, setelah mendapatkan informasi nasabah tersebut maka ATM akan langsung memunculkannya di layar mesin.


7. Pendaftaran e-Banking
Proses pendaftarang e-banking pada atm mandiri adalah mesin akan meminta nasabah untuk membuat kode unik. Setelah memasukan kode unik maka mesin atm akan mengirim data ke jaringan bank pusat untuk didaftarkan e-banking. Setelah sukses maka mesin akan mengeluarkan receipt pendaftaran e-banking yang digunakan untuk proses selanjutnya.

8. Transfer
Transfer dapat dilakukan pada mesin atm. Pada proses ini awalnya nasabah akan diminta untuk memasukan nomor rekening tujuan transfer. Selanjutnya akan diminta jumlah uang yang ingin ditransfer. Setelah kedua proses ini, maka atm akan memverifikasi jumlah saldo, jika saldo memenuhi maka uang akan ditransfer dan saldo nasabah pengirim dikurangi dan saldo penerima akan ditambah.


Referensi :
http://math-cs.gordon.edu/courses/cs211/ATMExample/UseCases.html

Trastian Satria Wibowo
5114100016
PPL E

Selasa, 13 September 2016

Air Conditioning Use Case UML

Salah satu contoh dari UML (Unified Modelling Language)  adalah Use Case UML. Use Case UML ini seperti fungsi - fungsi dari perangkat lunak. 

Dibawah ini adalah contoh Use Case UML dari Air Conditioner yang ada di rumah kita. Lebih tepatnya software yang ada di Remote AC nya.


Pada UML diatas terdapat 6 Use Case yaitu :
1. Set Temperature : untuk mengatur suhu saat akan menyalakan AC/ AC telah menyala
2. Start AC : untuk menyalakan AC
3. Stop AC : untuk mematikan AC
4. Set Swing : untuk mengatur katup gerak AC
5. Set Fan Speed: untuk mengatur kecepatan kipas
6. Control Mode : untuk mengatur mode yang tersedia pada AC

Trastian Satria Wibowo
5114100016
PPL E