ETS PBO

Muhammad Izzuddin Al Islami

05111740000035

PBO B


Pertanyaan :

  1. Perhatikan video di atas, tuliskan skenario fungsionalitas aplikasi berdasarkan tayangan tersebut
  2. Definisikan Class dan gambarkan Diagram Class untuk membangun aplikasi tersebut.
  3. Implementasikan rancangan Class dengan menggunakan bahasa pemrograman Java.
  4. Buat video demo yang menjelaskan pembuatan aplikasi tersebut beserta dengan hasil eksekusinya.

 ----------------------------------------------------------------------------------------------------------------------------

Jawaban:

  1. Skenario fungsionalitas mesin ATM pada video diatas adalah:
    1. Untuk dapat menggunakan mesin ATM, pengguna harus melakukan autentikasi dengan cara memasukkan PIN.
    2. Pengguna dapat memilih menu-menu transaksi pada mesin ATM.
    3. Pengguna dapat melakukan setor tunai ke dalam mesin ATM.
  2. Dekomposisi Kelas yang dibutuhkan:
    1. Class ATM (Kelas utama program, memiliki fungsi menjalankan kelas MachineInterface
    2. Class MachineInterface (Kelas yang menghandle input pengguna, memproses transaksi dan menampilkan user interface)
    3. Class Account (berisi deskripsi tentang akun pegguna bank, seperti nomor rekening, saldo dan pin) 
    4. Diagram Kelas:
  3. Implementasi

    1. ATM.java 
    2.  import java.util.ArrayList;  
       /**  
        * Kelas utama program, memiliki fungsi menjalankan kelas MachineInterface  
        *  
        * @author Izzud  
        * @version 24/11/2020  
        */  
       public class ATM {  
         public static void main(String args[]){  
           // mockup db accounts  
           ArrayList<Account> accountList = new ArrayList<Account>();  
           accountList.add(new Account("Agus", 100400007, 123456));  
           accountList.add(new Account("Budi", 100400008, 666666));  
           accountList.add(new Account("Chandra", 100400009, 555666));  
           accountList.add(new Account("Dedi", 100400010, 123098));  
           accountList.add(new Account("Elang", 100400011, 140450));  
           MachineInterface machine = new MachineInterface(accountList);  
           machine.serve();  
         }  
       }  
      
    3. MachineInterface.java 
    4.  import java.util.ArrayList;  
       import java.util.Iterator;  
       import java.util.Scanner;  
       /**  
        * (Kelas yang menghandle input pengguna,   
        * memproses transaksi dan menampilkan user interface  
        *  
        * @author Izzud  
        * @version 24/11/2020  
        */  
       public class MachineInterface {  
         private Account activeUser;  
         private ArrayList<Account> accountList;  
         /**  
          * Constructor  
          */  
         public MachineInterface(ArrayList<Account> accountList){  
           this.accountList = accountList;  
           activeUser = null;  
         }  
         public void serve(){  
           // clear screen  
           System.out.print('\u000C');  
           System.out.flush();  
           //print welcome screen  
           System.out.println("=========================================================\n");  
           System.out.println("\t\tSELAMAT DATANG DI ATM BCA \n");  
           System.out.println("=========================================================\n");  
           System.out.println(" TEKAN TOMBOL ENTER UNTUK MEMULAI TRANSAKSI");  
           Scanner scanner = new Scanner(System.in);  
           try {  
             System.in.read();  
           }   
           catch(Exception e){}  
           //login  
           boolean auth = false;  
           while(!auth){  
             System.out.print('\u000C');  
             System.out.flush();  
             System.out.println("\n\n\tSILAHKAN MEMASUKKAN KODE PIN ANDA");  
             int pin = scanner.nextInt();  
             auth = login(pin);  
             if(!auth) {  
               System.out.println("\nKODE PIN ANDA SALAH!");  
               System.out.println("TEKAN TOMBOL ENTER UNTUK MEMULAI KEMBALI");  
               try {  
                 System.in.read();  
               }   
               catch(Exception e){}  
             }  
           }  
           //print menu  
           boolean active = true;  
           while(active){  
             System.out.print('\u000C');  
             System.out.flush();  
             System.out.println("\t\tSILAHKAN MEMILIH TRANSAKSI");  
             System.out.println("\t  UNTUK MEMBATALKAN TRANSAKSI TEKAN 0");  
             System.out.println("\n1. SETORAN TUNAI");  
             System.out.println("2. PENARIKAN TUNAI/TRANSAKSI LAINNYA (GANGGUAN)");  
             int choice = scanner.nextInt();  
             switch(choice){  
               case 0:  
                 active = false;  
                 break;  
               case 1:  
                 System.out.print('\u000C');  
                 System.out.flush();  
                 System.out.println("\n\n\t\tSILAHKAN MEMASUKKAN NOMINAL \n\t\t\tUANG ANDA.");  
                 int amount = scanner.nextInt();  
                 try {  
                   System.out.print('\u000C');  
                   System.out.flush();  
                   System.out.println("\n\n\t\tUANG ANDA SEDANG DIPROSES");  
                   Thread.sleep(3000);  
                 } catch (InterruptedException e) {}  
                 System.out.print('\u000C');  
                 System.out.flush();  
                 System.out.println("\n\n\t JUMLAH NOMINAL UANG: Rp. " + amount + ",00");  
                 System.out.println("\n1. SETOR");  
                 System.out.println("2. BATAL");  
                 int key = scanner.nextInt();  
                 if (key == 1){  
                   System.out.print('\u000C');  
                   System.out.flush();  
                   System.out.println("\n\n\t JUMLAH NOMINAL UANG: Rp. " + amount + ",00");  
                   System.out.println("\n\nSETORAN KE:");  
                   System.out.println("1. REKENING ANDA");  
                   System.out.println("2. REKENING LAIN");  
                   int ch = scanner.nextInt();  
                   if(ch == 1) setorTunai(amount);  
                   else {  
                     System.out.print('\u000C');  
                     System.out.flush();  
                     System.out.println("\n\n\tSILAHKAN MEMASUKKAN NOMOR REKENING TUJUAN.");  
                     int norek = scanner.nextInt();  
                   }  
                   try {  
                     System.out.print('\u000C');  
                     System.out.flush();  
                     System.out.println("\n\n\t\tTRANSAKSI ANDA SEDANG DIPROSES");  
                     Thread.sleep(3000);  
                   } catch (InterruptedException e) {}  
                   System.out.print('\u000C');  
                   System.out.flush();  
                   System.out.println("\n\n\t\tTRANSAKSI ANDA TELAH SELESAI");  
                   System.out.println("\tAPAKAH ANDA INGIN MELAKUKAN TRANSAKSI LAIN?");  
                   System.out.println("\n1. YA");  
                   System.out.println("2. TIDAK");  
                   ch = scanner.nextInt();  
                   if (ch == 2) active = false;  
                 }  
                 break;  
               case 2:  
                 System.out.print('\u000C');  
                 System.out.flush();  
                 System.out.println("\n\n MAAF, UNTUK SAAT INI PENARIKAN TUNAI BELUM TERSEDIA.");  
                 System.out.println("\n\tTEKAN TOMBOL ENTER UNTUK MEMULAI KEMBALI");  
                 try {  
                   System.in.read();  
                 }   
                 catch(Exception e){}  
                 break;  
               default:  
                 System.out.println("\n\n MAAF, PILIHAN ANDA TIDAK TERSEDIA.");  
                 System.out.println("\n\tTEKAN TOMBOL ENTER UNTUK MEMULAI KEMBALI");  
                 try {  
                   System.in.read();  
                 }   
                 catch(Exception e){}  
             }  
             System.out.print('\u000C');  
             System.out.flush();  
             System.out.println("\n\n\t\tSILAHKAN AMBIL KARTU ATM ANDA");  
           }  
         }  
         public void setorTunai(int amount){  
           int newBalance = activeUser.getSaldo() + amount;  
           activeUser.setSaldo(newBalance);  
         }  
         public boolean login(int pin){  
           Iterator<Account> itr = accountList.iterator();  
           while(itr.hasNext()) {  
             Account element = itr.next();  
             if (element.auth(pin)) {  
               activeUser = element;  
               return true;  
             }  
           }  
           return false;  
         }  
       }  
      
    5. Account.java 
    6.  /**  
        * Kelas berisi deskripsi tentang akun pegguna bank,   
        * seperti nomor rekening, saldo dan pin  
        *  
        * @author Izzud  
        * @version 24/11/2020  
        */  
       public class Account {  
         private String nama;  
         private int pin;  
         private int saldo;  
         private int norek;  
         public Account(String nama, int norek, int pin){  
           this.nama = nama;  
           this.norek = norek;  
           this.pin = pin;  
           this.saldo = 0;  
         }  
         /**  
          * Fungsi untuk mendapatkan saldo pengguna  
          * @return saldo  
          */  
         public int getSaldo(){  
           return saldo;  
         }  
         /**  
          * Fungsi untuk mngeset saldo terbaru  
          * @param newBalance nominal saldo terbaru  
          */  
         public void setSaldo(int newBalance){  
           saldo = newBalance;  
         }  
         /**  
          * Fungsi login  
          * @return true jika pin sama, false jika tidak  
          */  
         public Boolean auth(int pin){  
           return (this.pin == pin);  
         }  
       }  
      
  4. Video


Comments

Popular posts from this blog

Tugas 4 PBO - Aplikasi Ticket Machine

Tugas 2 PBO - Aplikasi Traffic Light