Minggu, 27 November 2016

Design Pattern - Singleton Pattern

Definisi

Singleton pattern adalah salah satu pola desain sederhana di Java. Jenis pola desain ini berada di bawah pola penciptaan sebagai pola yang memberikan salah satu cara terbaik untuk membuat sebuah objek.

Pola ini melibatkan satu kelas yang bertanggung jawab untuk membuat sebuah objek sambil memastikan bahwa hanya objek tunggal yang akan dibuat. Kelas ini menyediakan cara untuk mengakses hanya objeknya yang dapat diakses langsung tanpa perlu instantiate objek dari kelas.

Singleton pattern diimplementasikan dengan membuat class dengan method yang membuat instance class yang baru jika instance belum ada. Jika instance sudah ada maka akan diarahkan object yang telah ada. Untuk mencegah object tidak instankan berkali-kali maka constructor dirubah menjadi private atau protected, protected constructor bisa dipanggil oleh subclass dan class yang berada dalam satu package, jika private constructor maka hanya bisa dipanggil oleh class itu sendiri tetapi itu berarti class tersebut tidak bisa di subclass-kan



Implementation

Kita akan membuat kelas SingleObject. Kelas SingleObject memiliki konstruktor private dan memiliki static instance itu sendiri.

Kelas SingleObject menyediakan metode statis untuk mendapatkan static instance untuk outside world. SingletonPatternDemo, kelas demo akan menggunakan kelas SingleObject untuk mendapatkan objek SingleObject.



Step 1

Buat Singleton Class
public class SingleObject {

   //create an object of SingleObject
   private static SingleObject instance = new SingleObject();

   //make the constructor private so that this class cannot be
   //instantiated
   private SingleObject(){}

   //Get the only object available
   public static SingleObject getInstance(){
      return instance;
   }

   public void showMessage(){
      System.out.println("Hello World!");
   }
}

Step 2
Dapatkan satu-satunya obyek dari singleton class
public class SingletonPatternDemo {
   public static void main(String[] args) {

      //illegal construct
      //Compile Time Error: The constructor SingleObject() is not visible
      //SingleObject object = new SingleObject();

      //Get the only object available
      SingleObject object = SingleObject.getInstance();

      //show the message
      object.showMessage();
   }
}

Step 3
Cetak output


Penggunaan

Contoh penggunaan singleton pattern adalah pada kasus aplikasi yang menggunakan MDI (multiple document interface).

Pada aplikasi MDI ketika kita tidak menerapkan singleton maka ketika membuka sebuah form child dengan menekan sebuah menu, yang terjadi adalah penciptaan sebuah objek dari form child yang bersangkutan setiap kali tombol ditekan. Jika kita menekan menu sebanyak 5 kali maka akan ada 5 form yang sama. Tentunya yang diinginkan hanya ada 1 form.


Referensi : 
  1. https://www.tutorialspoint.com/design_pattern/singleton_pattern.html
  2. http://www.vincehuston.org/dp/singleton.html
  3. http://www.newthinktank.com/videos/design-patterns-tutorial/
  4. http://agung-setiawan.com/implementasi-nyata-singleton-pattern/

Senin, 24 Oktober 2016

Perancangan Perangkat Lunak – Sistem Perpustakaan

Use Case Diagram

Sequence Diagram Peminjaman Buku 



Sequence Diagram Pengembalian Buku


Class Diagram 


Code Implementasi


#include<iostream>
#include<stdlib.h>

using namespace std;

int n,n1;
int i;
int inc=0;
int inc1=0;

class book
{
public:
 int bookcode;
 char bookname[20];
 char authorname[20];
 int bookprice;
 int status;
public:
 void addbook()
 {
  status=1;
  cout<<"\t\t\t TAMBAH BUKU"<<endl<<endl;
  inc++;
  bookcode=100+inc;
  cout<<"\n\tKode Buku                :"<<bookcode<<endl;
  cout<<"\n\tNama Buku          :";
  cin>>bookname;
  cout<<"\n\tPenulis        :";
  cin>>authorname;
  cout<<"\n\tHarga         :";
  cin>>bookprice;
 }

 void display_book()
 {
  cout<<bookcode<<"\t\t"<<bookname<<"\t\t"<<authorname<<"\t\t"<<"\t\t"<<bookprice<<endl;
 }

 void book_status()
 {
  if(status==1)
  {
   cout<<"\t\tID Buku:"<<bookcode<<"\t\tStatus:Available"<<endl;
  }
  else
  {
   cout<<"\t\tID Buku:"<<bookcode<<"\t\tStatus:Issued"<<endl;
  }
 }
}; book b[10];

class member
{
public:
 int borrower_id;
 char studname[20];
 int bookcount;
public:
 void addstud()
 {
  cout<<"\t\tTambah Peminjam"<<endl;
  cout<<endl;
  inc1++;
  borrower_id=100+inc1;
  cout<<"\t\tID Peminjam            :"<<borrower_id<<endl;
  cout<<"\t\tNama   :";
  cin>>studname;
  cout<<endl;
  bookcount=2;
  cout<<"\t\tMaximum Buku:"<<bookcount<<endl<<endl;
 }
 
 void dispstud()
 {
  cout<<"\t"<<borrower_id<<"\t\t"<<studname<<endl;
 }
};member s[10];

class transaksi
{
public:
 int day,month,year;
 int day2,month2,year2;
 int iday,imon,iyear;
 int rday,rmon,ryear;
 int eday,emon,eyear;
 int yr1,yr2,m1,m2,d1,d2,mons1,mons2,mons,days,yrs,sum,j;
 int  loop;
 int fine;

public:
 void isdatecalc()
 {
  cout<<"\t\thari:";
  cin>>day;
  cout<<"\t\tbulan:";
  cin>>month;
  cout<<"\t\ttahun:";
  cin>>year;
  day2=day;
  month2=month;
  year2=year;
  day2=day2+20;

  if(((month2==1)||(month2==3)||(month2==5)||(month2==7)||(month2==8)||(month2==10)||(month2==12))&&((day2>31)))
  {
   day2=day2-31;
   month2=month2+1;
   if(month2==13)
   {
    year2++;
    month2=1;
   }
  }
  else if(((month2==4)||(month2==6)||(month2==9)||(month2==11))&&((day2>30)))
  {
   day2-=30;
   month2++;
  }
  else if(((year2%4==0)||(year2%400==0))&&(day2>29)&&(month==2))
  {
   day2-=29;
   month2++;
  }
  else if(((year2%4!=0)||(year2%100!=0)||(year2%400!=0))&&(day2>28)&&(month2==2))
  {
   day2-=28;
   month2++;
  }
  cout<<endl;
 }
 
 void isdate()
 {
  iday=day;
  imon=month;
  iyear=year;

  cout<<"\t\tTanggal pinjam:"<<iday<<"/"<<imon<<"/"<<iyear;
  cout<<endl;
 }
 
 void retdate()
 {
  rday=day2;
  rmon=month2;
  ryear=year2;
  cout<<"\t\tTanggal kembali:"<<rday<<"/"<<rmon<<"/"<<ryear<<endl;
  cout<<endl;
 }
 
 void edatecalc()
 {
  eday=rday;
  emon=rmon;
  eyear=ryear;
  eday=eday+20;
  if(((emon==1)||(emon==3)||(emon==5)||(emon==7)||(emon==8)||(emon==10)||(emon==12))&&((eday>31)))
  {
   eday=eday-31;
   emon=emon+1;
   if(emon==13)
   {
    eyear++;
    emon=1;
   }
  }
  else if(((emon==4)||(emon==6)||(emon==9)||(emon==11))&&((eday>30)))
  {
   eday-=30;
   emon++;
  }
  else if(((eyear%4==0)||(eyear%100==0)||(eyear%400==0))&&(eday>29)&&(emon==2))
  {
   eday-=29;
   emon++;
  }
  else if(((eyear%4!=0)||(eyear%100!=0)||(eyear%400!=0))&&(eday>28)&&(emon==2))
  {
   eday-=28;
   emon++;
  }
  cout<<endl;
  cout<<endl;

  cout<<"\t\tperpanjang tanggal kembali:"<<eday<<"/"<<emon<<"/"<<eyear<<endl;
 }
 void finecalc(){
  int mon[]={31,28,31,30,31,30,31,31,30,31,30,31};
  loop=365;
  sum=0;
  d1=rday;
  m1=rmon;
  yr1=ryear;
  cout<<endl;
  cout<<"\t\ttanggal kembali: "<<d1<<"/"<<m1<<"/"<<yr1<<endl;
  cout<<endl;
  cout<<"\t\tmasukkan tanggak kembali.."<<endl;
  cout<<endl;
  cout<<"\t\thari:";
  cin>>d2;
  cout<<endl;
  cout<<"\t\tbulan:";
  cin>>m2;
  cout<<endl;
  cout<<"\t\ttahun:";
  cin>>yr2;
  cout<<endl;
  days=d2-d1;
 
  yrs=yr2-yr1;
  if(m2>=m1)
  {
   mons=m1-m2;
   mons2=abs(mons);
  }
  else
  {
   mons=m2-m1;
   mons2=abs(mons);
  }
  sum=yrs*loop+mons+days+mons2;
  if(m2>m1)
  {
   j=m1;
  }
  else
  {
   j=m2;
  }
  if(mons2!=0)
  {
 
 
   for(i=0;i<mons2;i++)
   {
    sum=sum+mon[j];
    j++;
   }
  }
  cout<<endl;
  cout<<"\t\ttanggal kembali:"<<d2<<"/"<<m2<<"/"<<yr2<<endl;
  cout<<endl;
  fine=(sum+mons)*1;
 
  if((yr1%4==0)||(yr1%400==0)&&(m1==2))
  {
   fine=fine+1;
  }
       cout<<"\t\t\tJumlah denda"<<fine<<endl;
 }
}; transaksi is;


int main()
{
 int option,i;
 char ch2,ch3,ch4;
 int sbookcode,sstudid;
 int flag,flag1,pos,spos,ipos;
 int sflag,stpos;
 int book_id,borrower_id;
 int rbookcode,rstudid;
 int rflag1,rflag2;
 int rpos1,rpos2,l;
 do
 {
  cout<<"\t\t\tLIBRARY MANAGEMENT SYSTEM"<<endl<<endl;
  cout<<"\t\t\t\tMAINMENU"<<endl<<endl;
  cout<<"\t\t  ##############################################"<<endl<<endl;
  cout<<"\t\t \t1. TAMBAH BUKU            "<<endl;
  cout<<"\t\t \t2. LIHAT SEMUA BUKU       "<<endl;
  cout<<"\t\t \t3. TAMBAH DATA PEMINJAM   "<<endl;
  cout<<"\t\t \t4. LIHAT DATA PEMINJAM  "<<endl;
  cout<<"\t\t \t5. PINJAM BUKU            "<<endl;
  cout<<"\t\t \t6. KEMBALIKAN BUKU        "<<endl;
  cout<<"\t\t \t0. EXIT                   "<<endl<<endl;
  cout<<"\t\t  ##############################################"<<endl;
  cout<<endl;
  cout<<"\t\t\t\tPilih opsi:";
  cin>>option;
  switch(option)
  {
   case 1:
    cout<<"\t\tTambah Buku"<<endl<<endl;
    cout<<"\t\tMasukkan jumlah buku :";
    cin>>n;
    for(i=1;i<=n;i++)
    {
     cout<<"Kode buku:"<<100+i;
     b[i].addbook();
    }

    cout<<endl;
    cout<<endl;
    cout<<"\t\t<<-----Kembali ke Main Menu-----"<<endl;
    main();
    break;

   case 2:
    cout<<"\t\t\tDAFTAR BUKU"<<endl<<endl;
    cout<<"KODE BUKU\tJUDUL\tPENULIS \tHARGA"<<endl<<endl;
    for(i=1;i<=n;i++)
    {
     b[i].display_book();
    }
    cout<<endl;
    for(i=1;i<=n;i++)
    {
     b[i].book_status();
    }
    cout<<endl;
    cout<<"\t\t<<-----Kembali ke Main Menu-----"<<endl;
    main();
    break;

   case 3:
    cout<<"\t\tTAMBAH PEMINJAM"<<endl<<endl;
    cout<<"\t\tJumlah : ";
    cin>>n1;
    for(i=1;i<=n1;i++)
    {
     s[i].addstud();
    }
    cout<<endl;
    cout<<"\t\t<<-----Kembali ke Main Menu-----"<<endl;
    main();
    break;

   case 4:
    cout<<"\t\tLIST OF ALL ADDED STUDENTS"<<endl;
           cout<<"\t\t^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;
    cout<<endl;
    cout<<"\t******************************************"<<endl;
    cout<<"\tSTUDENT ID\tSTUDENT NAME\tDEPT NAME"<<endl;
    cout<<"\t******************************************"<<endl;
   
     for(i=1;i<=n1;i++)
    {
       s[i].dispstud();
   
    }
    cout<<endl;
   
    cout<<"\t<<-----Back To Main Menu-----"<<endl;
    main();
    break;
    break;

   case 5:
    cout<<"\t\t PEMINJAMAN BUKU"<<endl<<endl;
    cout<<"\t\tID Peminjam:";
    cin>>borrower_id;
    for(i=1;i<=n1;i++)
    {
     if(borrower_id==s[i].borrower_id)
     {
      flag=1;
      spos=i;
     }
    }
    if(flag==1)
    {
     cout<<"\t\tKode Buku:";
     cin>>book_id;
     for(i=1;i<=n;i++)
     {
      if(book_id==b[i].bookcode)
      {
       flag1=1;
       ipos=i;
      }
     }
    }
    cout<<endl;

    if(flag==1)
    {
     if(flag1==1)
     {
      if(s[spos].bookcount!=0)
      {
       if(b[ipos].status==1)
       {
        s[spos].bookcount--;
        b[ipos].status=0;
        cout<<"\t\tTanggal Peminjaman"<<endl<<endl;
        is.isdatecalc();
        is.isdate();
        is.retdate();
        cout<<"\t\tBuku berhasil dipinjam"<<endl;
        cout<<endl;
        cout<<"\t\tBooks allowed now:"<<s[spos].bookcount<<endl;
        cout<<endl;
        cout<<"\t ID Peminjam\t Nama\t Kode Buku"<<endl;
        cout<<"\t ----------\t ------------\t --------"<<endl;
        cout<<"\t "<<s[spos].borrower_id<<"\t\t "<<s[spos].studname<<"\t\t "<<b[ipos].bookcode<<endl;
       }
       else
       {
        cout<<"\t\tMohon maaf, buku sudah dipinjam"<<endl;
       }
      }
      else
      {
       cout<<"\t\tMohon maaf, tidak dapat meminjam lebih dari dua buku"<<endl;
      }

     }
     else
     {
      cout<<"\t\tMohon maaf, buku tidak ditemukan dengan ID : "<<book_id<<endl;
     }
    }
    else

    {
     cout<<"\t\tMohon maaf, ID peminjam tidak ditemukan:"<<borrower_id<<endl;
    }

    cout<<endl;
    cout<<"\t\t<<-----Kembali ke Main Menu-----"<<endl;
    main();
    break;

   case 6:
    cout<<"\t\tPengembalian Buku"<<endl<<endl;
    cout<<"\t\tID Peminjam";
    cin>>rstudid;
    cout<<endl;
    for(i=1;i<=n1;i++)
    {
     if(rstudid==s[i].borrower_id)
     {
      rflag1=1;
      rpos1=i;
     }
    }

    if(rflag1==1)
    {

     cout<<"\t\tID Buku :";
     cin>>rbookcode;
     cout<<endl;
     for(i=1;i<=n;i++)
     {
      if(rbookcode==b[i].bookcode)
      {
       rflag2=1;
       rpos2=i;
      }
     }
    }
    if(rflag1==1)
    {
     if(rflag2==1)
     {
      cout<<"\tID Buku:"<<b[rpos2].bookcode<<" ID Peminjam:"<<s[rpos1].borrower_id<<" ?y/n:";
      cin>>ch4;
      if(ch4=='y')
      {
       if(b[rpos2].status==0)
       {
        cout<<endl;
        cout<<"\t\tBuku yang dapat dikembalikan..."<<endl;
        cout<<endl;
        is.retdate();
        cout<<"\t\tApakah kamu yakin mengembalikan buku ini ?y/n:";
        cin>>ch2;
        cout<<endl;
        if(ch2=='y')
        {
         cout<<"\t\t Buku belum lewat batas waktu ?y/n:";
         cin>>ch3;
         cout<<endl;
         if(ch3=='y')
         {
       //   is.retdate();
         //cout<<endl;
         // cout<<"\t\tBook returned before due date"<<endl;
         // cout<<endl;
          cout<<"\t\t\tFine - NIL"<<endl;
          cout<<endl;
          cout<<"\t\t\t THANK YOU"<<endl;
          b[rpos2].status=1;
          s[rpos1].bookcount++;
          cout<<endl;
          cout<<"\t\t<<-----Kembali ke Main Menu-----"<<endl;
          main();
         }
         else
         {
          cout<<endl;
          cout<<"\t\tAnda harus membayar tagihan !!!"<<endl;

          is.finecalc();
          cout<<endl;
          b[rpos2].status=1;
          s[rpos1].bookcount++;
          cout<<"\t\t<<-----Kembali ke Main Menu-----"<<endl;

          main();
         }
        }

        else
        {
         is.retdate();
         cout<<endl;
         cout<<"\t\tYou can extend the book for another twenty days.."<<endl;
         is.edatecalc();

        }

       }
       else
       {
        cout<<endl;
        cout<<"\t\tThis Book is not yet issued from library.. "<<endl;
       }
      }
      else
      {
       cout<<endl;
       cout<<"\t\t This book is not issued to you..Sorry!!!"<<endl;
      }
     }
     else
     {
      cout<<endl;
      cout<<"\t\tSorry!..No Book Exists With Code:"<<rbookcode<<endl;
     }

    }

    else
    {
     cout<<endl;
     cout<<"\t\tMohon maaf, ID peminjam tidak ditemukan:"<<rstudid<<endl;
    }

    cout<<endl;
    cout<<"\t\t<<-----Kembali ke Main Menu-----"<<endl;

    main();
    break;

   case 0:exit(0);
    default: 
    cout<<"\t\tPilihan salah.."<<endl;
    cout<<"\t\tMasukkan ulang pilihan...."<<endl;
    cout<<endl;
    cout<<"\t\t\t<<---Kembali---"<<endl;
    main();
    break;
  }
 }while(option==0);
}


by : Andreas Galang A (5114100153)

Senin, 17 Oktober 2016

Prototipe Program ATM

Setelah membuat UseCase Diagram coba kita buat prototype dari mesin ATM. Untuk melihat use case diagram serta sequence diagramnya dapat dilihat pada http://exodblog.blogspot.sg/2016/09/use-case-dan-interaction-diagram-untuk.html

#include
#include
#include
#include
using namespace std;

class account
{
	int acno;
	char name[50];
	int deposit;
public:
	void create_account();	
	void show_account() const;
	void dep(int);
	void draw(int);
	void report() const;
	int retacno() const;
	int retdeposit() const;	
};        

void account::create_account()
{
	cout<<"\nMasukkan no rekening. :";
	cin>>acno;
	cout<=500 ) : ";
	cin>>deposit;
	cout<<"\n\n\nAkun berhasil dibuat..\n";
}

void account::show_account() const
{
	cout<<"\nNo. rekening : "<>ch;
		system("cls");
		switch(ch)
		{
		case '1':
			write_account();
			break;
		case '2':
			cout<<"\n\n\tNo. rekening : "; cin>>num;
			deposit_withdraw(num, 1);
			break;
		case '3':
			cout<<"\n\n\tNo. rekening : "; cin>>num;
			deposit_withdraw(num, 2);
			break;
		case '4': 
			cout<<"\n\n\tNo. rekening : "; cin>>num;
			display_sp(num);
			break;
		case '5':
			display_all();
			break;
		 case '6':
			cout<<"\n\n\tBye ...";
			break;
		 default :cout<<"\a";
		}
		cin.ignore();
		cin.get();
	}while(ch!='6');
	return 0;
}

//    	write to file 

void write_account()
{
	account ac;
	ofstream outFile;
	outFile.open("account.txt",ios::binary|ios::app);
	ac.create_account();
	outFile.write(reinterpret_cast (&ac), sizeof(account));
	outFile.close();
}

//    	Menampilkan saldo akun spesifik

void display_sp(int n)
{
	account ac;
	bool flag=false;
	ifstream inFile;
	inFile.open("account.txt",ios::binary);
	if(!inFile)
	{
		cout<<"File error !";
		return;
	}
	cout<<"\nDETAIL SALDO\n";

    	while(inFile.read(reinterpret_cast (&ac), sizeof(account)))
	{
		if(ac.retacno()==n)
		{
			ac.show_account();
			flag=true;
		}
	}
	inFile.close();
	if(flag==false)
		cout<<"\n\nTidak ditemukan akun ..";
}

//    	Menampilkan saldo semua akun 

void display_all()
{
	account ac;
	ifstream inFile;
	inFile.open("account.txt",ios::binary);
	if(!inFile)
	{
		cout<<"File error !";
		return;
	}
	cout<<"\n\n\t\tDAFTAR AKUN\n\n";
	cout<<"====================================================\n";
	cout<<"A/c no.      NAME       Saldo\n";
	cout<<"====================================================\n";
	while(inFile.read(reinterpret_cast (&ac), sizeof(account)))
	{
		ac.report();
	}
	inFile.close();
}

//    	Fungsi deposit dan tarik uang 

void deposit_withdraw(int n, int option)
{
	int amt;
	bool found=false;
	account ac;
	fstream File;
	File.open("account.txt", ios::binary|ios::in|ios::out);
	if(!File)
	{
		cout<<"File error !";
		return;
	}
	while(!File.eof() && found==false)
	{
		File.read(reinterpret_cast (&ac), sizeof(account));
		if(ac.retacno()==n)
		{
			ac.show_account();
			if(option==1)
			{
				cout<<"\n\nMasukkan jumlah uang : ";
				cin>>amt;
				ac.dep(amt);
			}
			if(option==2)
			{
				cout<<"\n\nMasukkan jumlah uang : ";
				cin>>amt;
				int bal=ac.retdeposit()-amt;
				if(bal<500)
					cout<<"Saldo tidak cukup";
				else
					ac.draw(amt);
			}
			int pos=(-1)*static_cast(sizeof(ac));
			File.seekp(pos,ios::cur);
			File.write(reinterpret_cast (&ac), sizeof(account));
			cout<<"\n\n\t Data diperbarui";
			found=true;
	       }
         }
	File.close();
	if(found==false)
		cout<<"\n\n Data tidak ditemukan ";
}

void intro()
{
	cout<<"\n\n\n ATM BANK MANAGEMENT SYSTEM";
	cin.get();
}
by : Andreas Galang A (5114100153)

Senin, 26 September 2016

Use Case dan Interaction Diagram untuk Sistem ATM

CONTOH USE CASE DIAGRAM ATM BRI



System Startup Use Case

Sistem ini dimulai ketika operator menyalakan sistem. Operator akan diminta untuk memasukkan jumlah uang saat di ATM, dan koneksi ke bank akan dibentuk. Kemudian servis pelanggan dapat dimulai.




System Shutdown Use Case

sistem dimatikan ketika operator memastikan bahwa tidak ada pelanggan menggunakan mesin, dan kemudian mematikan mesin. Sambungan ke bank akan ditutup. Maka operator bebas untuk menghapus tanda terima deposit, mengisi kas dan kertas, dll


  1. Nasabah masuk pada ruangan ATM dan melakukan transaksi namun sebelumnya harus menggunakan kartu ATM dan Menginputkan no PIN. Sytem ATM akan melakukan autentifikasi kebenaran ATM dan no PIN yang di inputkan. Nasbah melakukan kegiatan memilih menu yang sudah di sediakan pada mesin ATM. Setelah melakukan pemilihan transaksi maka secara otomatis mesin ATM akan melakukan pengecekan dan penyimpanan transaksi yang dilakukan oleh nasabah dan mencetak pada fingerprint yang sudah tersedia pada mesin ATM dan melakukan action OUT-PUT sesuai dengan yang dilakukan nasabah
Transaksi (withdraw Money)
Nasabah memasukkan jumlah uang tunai yang ingin diambil. Kemudian ATM melakukan validasi dengan sistem bank. Jika respons dari sistem bank OK, maka ATM akan mengeluarkan uang tunai. Setiap transaksi direkam dalam Log Transaksi.
Payment
Nasabah dapat melakukan pembayaran berupa:
1. Pembayaran Tagihan
    Kartu Kredit BRI
    Kartu Kredit dan KTA RBS
    Kartu Kredit dan Personal Loan HSBC
    Kartu Kredit ANZ
    Kartu Kredit dan KTA SCB
    Personal Loan
    Ready Cash dan Eazy Pay Citibank
    Citifinansial
    FIF, BAF, SOF
    Finansia, Verena
    PLN
    Telkom
    Kartu Halo
    Matrix
    Flexi
    Speedy
    Indovision/Top TV/Oke Vision.
2. Pembayaran Universitas
4. Pembayaran Zakat dan Infaq
5. Pembayaran Tiket Pesawat dan Kereta Api
   Garuda
   Sriwijaya Air
   Lion

Transfer
Transaksi Transfer meminta pelanggan untuk memilih jenis akun untuk mentransfer dari menu account, untuk memilih akun yang berbeda untuk ditransfer, dan memasukkan uang dalam jumlah rupiah pada keyboard. Tidak ada tindakan lebih lanjut diperlukan setelah transaksi disetujui oleh bank sebelum mencetak tanda terima.Sebuah transaksi transfer dapat dibatalkan oleh pelanggan dengan menekan tombol batal setiap saat sebelum memasukkan jumlah uang.


Pembelian Pulsa (Credit Purchase)
Nasabah dapat melakukan pembelian pulsa:
1.  Simpati
2.  AS
3.  IM3
4.  Mentari,
5.  XL
6.  StarOne
7.  Flexi
8.  Esia
9.  Mobile8
10.Smart
11. Fren

12.Axis
Pengecekan Akun Nasabah (Account Info)
Nasabah dapat melakukan melihat info akun nasabah melalui ATM berupa jumlah saldo dan nomor rekening nasabah. ATM melakukan request saldo kepada sistem bank. Kemudian ATM mencetak sebuah struk yang berisi informasi saldo nasabah. Setiap transaksi direkam dalam Log Transaksi.



Referensi : 
  1. http://localtechno.blogspot.co.id/2013/11/use-case-dan-class-diagram-system-atm.html#.V-jee-afd_5
  2. http://www.math-cs.gordon.edu/courses/cs211/ATMExample/UseCases.html#Transaction

Andreas Galang 
5114100153

Selasa, 13 September 2016

Use Case Diagram


  1. Diagram use case merupakan pemodelan untuk menggambarkan kelakuan (behavior) sistem yang akan dibuat. 
  2. Diagram use case mendeskripsikan sebuah interaksi antara satu atau lebih aktor dengan sistem yang akan dibuat. 
  3. Diagram use case digunakan untuk mengetahui fungsi apa saja yang ada di dalam sebuah sistem dan siapa saja yang berhak menggunakan fungsi-fungsi tersebut. Yang ditekankan pada diagram ini adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. 
  4. Sebuah use case merepresentasikan sebuah interaksi antara aktor (user atau sistem lainya) dengan sistem.
  5. Use case menjelaskan secara sederhana fungsi sistem dari sudut pandang user.

Contoh Use Case Diagram Air Conditioner :



Referensi :
  •  http://www.eso.org/~tcsmgr/vlti/atcsdoc/Model/Rose/doc/atcs_uc.html
  •  https://pccontrol.wordpress.com/2012/08/23/pengetahuan-dasardiagram-use-case/





luvne.com resepkuekeringku.com desainrumahnya.com yayasanbabysitterku.com