Senin, 12 Juni 2017

Program Struk SPBU

Untuk menyelesaikan evaluasi PBO semester ini, kelompok kami membuat program simulasi struk pada SPBU, Berikut class-class ya

Class Pertamina

public class pertamina {
        private String jenisBBM;
        private double hargaBBM;
        private double totalliter;
        private double hargatotal;
        private double uangbayar;
        private double kembalian;
 
    public void setBBM(String jenisBBM, double hargaBBM){
        this.jenisBBM = jenisBBM;
        this.hargaBBM = hargaBBM;
    }
    public void setTotalliter(double totalliter, double uangbayar){
        this.totalliter = totalliter;
        this.uangbayar = uangbayar;
        this.hargatotal =  totalliter*hargaBBM;
    }
    public void setKembalian(){
        if(uangbayar < hargatotal){
              System.out.println("Maaf uang anda tidak cukup");
        }
        else{
              this.kembalian = uangbayar - hargatotal;
        }
    }
    public void cetak(){
        System.out.println("--------------------Nota Transaksi-------------------");
              System.out.println("Jenis BBM yang dibeli adalah  : "+jenisBBM);
              System.out.println("Harga perliternya adalah        Rp."+hargaBBM+".00");
              System.out.println("Total liter yang anda beli    : "+totalliter+" liter");
              System.out.println("Harga total pembayaran        : Rp."+hargatotal+".00");
              System.out.println("Uang Pembayaran               : Rp."+uangbayar+".00");
              System.out.println("Uang Kembali                  : Rp."+kembalian+".00");
        System.out.println("--------------------Terima Kasih--------------------");    
    }
}



Class Main

import java.io.*;
 
public class tespertamina {
 
    public static void main(String []args){
            BufferedReader data = new BufferedReader (new InputStreamReader(System.in));
            pertamina jalankan = new pertamina();
        try{
              System.out.println("Masukkan jenis BBM yang dibeli:");
              System.out.println("1. Premium    = 7300");
              System.out.println("2. Pertamax   = 8600");
              System.out.println("3. Pertalite  = 8400");
              System.out.println("4. Solar      = 6900");
              System.out.println("Masukkan Pilihan(1/2/3/4):");
              String jawaban = data.readLine();
              int pilihan = Integer.parseInt(jawaban);
              if (pilihan == 1){
                     jalankan.setBBM("Premium",7300);
                     System.out.println("Berapa liter yang dibeli? ");
                     String datamasuk = data.readLine();
                     double totalliter = Integer.parseInt(datamasuk);
                     System.out.println("Uang bayar ");
                     String databayar = data.readLine();
                     double uangbayar = Integer.parseInt(databayar);
                     jalankan.setTotalliter(totalliter, uangbayar);
                     jalankan.setKembalian();
                     jalankan.cetak();
              }
              else if(pilihan ==2){
                     jalankan.setBBM("Pertamax",8600);
                     System.out.println("Berapa liter yang dibeli? ");
                     String datamasuk = data.readLine();
                     double totalliter = Integer.parseInt(datamasuk);
                     System.out.println("Uang bayar ");
                     String databayar = data.readLine();
                     double uangbayar = Integer.parseInt(databayar);
                     jalankan.setTotalliter(totalliter, uangbayar);
                     jalankan.setKembalian();
                     jalankan.cetak();
                   
              }
              else if(pilihan ==3){
                     jalankan.setBBM("Partalite",8400);
                     System.out.println("Berapa liter yang dibeli? ");
                     String datamasuk = data.readLine();
                     double totalliter = Integer.parseInt(datamasuk);
                     System.out.println("Uang bayar ");
                     String databayar = data.readLine();
                     double uangbayar = Integer.parseInt(databayar);
                     jalankan.setTotalliter(totalliter, uangbayar);
                     jalankan.setKembalian();
                     jalankan.cetak();
              }
              else if(pilihan ==4){
                     jalankan.setBBM("Solar",6900);
                     System.out.println("Berapa liter yang dibeli? ");
                     String datamasuk = data.readLine();
                     double totalliter = Integer.parseInt(datamasuk);
                     System.out.println("Uang bayar ");
                     String databayar = data.readLine();
                     double uangbayar = Integer.parseInt(databayar);
                     jalankan.setTotalliter(totalliter, uangbayar);
                     jalankan.setKembalian();
                     jalankan.cetak();
              }
             
              }
              catch(Exception e){
                     System.out.println("Error");
              }
    }  
 
}



Hasil Screen Shoot




Senin, 15 Mei 2017

OOP PADA MESIN ATM

ATM menurut Ellen Florian (2004) adalah ”alat telekomunikasi berbasis komputer yang menyediakan tempat bagi nasabah dalam melakukan transaksi keuangan tanpa membutuhkan seorang teller bank.”. ATM dalam bahasa asing Automated Teller Machine dan dalam bahasa Indonesia Anjungan Tunai Mandiri.


Untuk mengakses ATM digunakan kartu plastik ATM yang diterbitkan oleh lembaga keuangan (bank) yang disebut dengan Kartu ATM. Kartu ATM yang dikeluarkan oleh pihak bank biasanya sudah menetapkan batas jumlah penarikan atau transasksi tunai maksimum perhari. Batas penarikan ATM ditetapkan untuk mengantisipasi kemungkinan adanya kerusakan pada perangkat ATM, selain itu batas jumlah penarikan diterapkan untuk mengantisipasi kelebihan penyediaan uang tunai dalam ATM.


Secara umum fungsi ATM adalah agar dapat melakukan penarikan uang tunai, namun selain itu masih banyak fungsi ATM yang dapat mempermudah kepentingan kita sebagai nasabah dalam melakukan aktivitas perbankan, seperti:


  1. Informasi Saldo
  2. Pembayaran Umum: tagihan telepon, kartu kredit, listrik, air, handphone, dan uang kuliah
  3. Pembelian: tiket penerbangan, isi ulang pulsa
  4. Pemindah bukuan (open transfer)
  5. Pengubahan PIN, dll

Saya akan membagikan Source Code dari buku "Java - How To Program - Ninth Edition (2012)" Bab 13 tentang OOP pada Mesin ATM

berikut table class dan relasinya







berikut adalah kelas - kelasnya
  • class study_case atau Main
 public class Study_Case  
 {  
   public static void main( String[] args )  
   {  
     ATM theATM = new ATM();  
     theATM.run();  
   }  
 }  
  • class ATM
 public class ATM  
 {  
   private boolean userAuthenticated; // untuk cek ke otekntikan User  
   private int currentAccountNumber; //cek user sekarang  
   private Screen screen;  
   private Keypad keypad;  
   private CashDispenser cashDispenser;  
   private DepositSlot depositSlot;  
   private BankDatabase bankDatabase; // untuk informasi database akun  
   // menu  
   private static final int saldo = 1;  
   private static final int tarik_tunai = 2;  
   private static final int setoran = 3;  
   private static final int exit = 4;  
   public ATM()  
   {  
     userAuthenticated = false; // inisiasi  
     currentAccountNumber = 0; //inisiasi  
     screen = new Screen();   
     keypad = new Keypad();  
     cashDispenser = new CashDispenser();  
     depositSlot = new DepositSlot();  
     bankDatabase = new BankDatabase();  
   }  
   public void run()  
   {  
     while(true)  
     {  
       while(!userAuthenticated)  
       {  
         screen.displayMessageLine("WELCOME");  
         authenticateUser(); // mengotentikasi user  
       }  
       performTransactions();   
       userAuthenticated = false; // reset   
       currentAccountNumber = 0; // reset  
       screen.displayMessageLine("\nTHANK YOU");  
     }  
   }  
   private void authenticateUser()  
   {  
     screen.displayMessageLine("\nMASUKKAN ACCOUNT NUMBER: ");  
     int accountNumber = keypad.getInput(); // account  
     screen.displayMessageLine("MASUKKAN PIN: ");  
     int pin = keypad.getInput(); // pin  
     userAuthenticated = bankDatabase.authenticateUser (accountNumber, pin);  
     if(userAuthenticated)  
     {  
       currentAccountNumber = accountNumber; //save  
     }  
     else  
     screen.displayMessageLine("\nAKUN ATAU PIN SALAH, COBA LAGI");  
   }  
   private void performTransactions()  
   {  
     //untuk menyimpan transaksi sekarang  
     Transaction currentTransaction = null;  
     boolean userExited = false; // inisiasi  
     while(!userExited)  
     {  
       int mainMenuSelection = displayMainMenu();  
       switch(mainMenuSelection)  
       {  
         case saldo:  
         case tarik_tunai:  
         case setoran:  
         currentTransaction = createTransaction(mainMenuSelection);  
         currentTransaction.execute();  
         break;  
         case exit:  
         screen.displayMessageLine("\nKeluar");  
         userExited = true; // user keluar  
         break;  
         default: screen.displayMessageLine("INPUT SALAH, COBA LAGI");  
         break;  
       }  
     }  
   }  
   private int displayMainMenu()  
   {  
     screen.displayMessageLine("MENU : \n");  
     screen.displayMessageLine("1 - CEK SALDO\n");  
     screen.displayMessageLine("2 - TARIK TUNAI\n");  
     screen.displayMessageLine("3 - SETORAN TUNAI\n");  
     screen.displayMessageLine("4 - EXIT\n");  
     screen.displayMessageLine("MASUKKAN INPUT: ");  
     return keypad.getInput();// intup dari user  
   }  
   private Transaction createTransaction (int type)  
   {  
     Transaction temp = null; // inisiasi  
     switch(type)  
     {  
       case saldo:  
       temp = new Saldo(currentAccountNumber, screen, bankDatabase);  
       break;  
       case tarik_tunai:  
       temp = new Tarik_Tunai(currentAccountNumber, screen,bankDatabase, keypad, cashDispenser);  
       break;  
       case setoran:  
       temp = new Setoran(currentAccountNumber, screen, bankDatabase,keypad,depositSlot);  
       break;  
     }  
     return temp;  
   }  
 }  
  • class Screen
 public class Screen  
 {  
   public void displayMessage(String message)  
   {  
     System.out.print(message);  
   }  
   public void displayMessageLine(String message)  
   {  
     System.out.print(message);  
   }  
   public void displayAmount(double amount)  
   {  
     System.out.printf("$%,.2f",amount);  
   }  
 }  
  • class Keypad
 import java.util.Scanner;  
 public class Keypad  
 {  
   private Scanner input;  
   public Keypad()  
   {  
     input = new Scanner(System.in);  
   }  
   public int getInput()  
   {  
     return input.nextInt();  
   }  
 }  
  • class  Cash Dispenser
 public class CashDispenser  
 {  
   private final static int INITIAL_COUNT = 500;  
   private int count;  
    public CashDispenser()  
   {  
     count = INITIAL_COUNT;  
   }  
    public void dispenseCash(int amount)  
   {  
     int billsRequired = amount/20;  
     count -=billsRequired; //update  
   }  
   public boolean isSufficientCashAvailable(int amount)  
   {  
     int billsRequired = amount/20;  
     if (count>=billsRequired)//uang tersedia  
     return true;  
     else  
     return false; //uang tidak tersedia  
   }  
 }  
  • class Deposit Slot
 public class DepositSlot  
 {  
    public boolean isEnvelopeReceived()  
   {  
     return true; //asumsi bahwa uang talah di masukkan  
   }  
 }  
  • class  Account
 public class Account  
 {  
   private int accountNumber;  
   private int pin;  
   private double availableBalance; // saldo yang dapat ditarik  
   private double totalBalance;  
    public Account(int theAccountNumber, int thePIN, double theAvailableBalance, double theTotalBalance)  
   {  
     accountNumber = theAccountNumber;  
     pin = thePIN;  
     availableBalance = theTotalBalance;  
     totalBalance = theTotalBalance;  
   }  
   // cek pin  
    public boolean validatePIN(int userPIN)  
   {  
     if(userPIN==pin)  
     return true;  
     else  
     return false;  
   }  
   public double getAvailableBalance()  
   {  
     return availableBalance;  
   }  
   public double getTotalBalance()  
   {  
     return totalBalance;  
   }  
   public void credit (double amount)  
   {  
     totalBalance+=amount;  
   }  
   public void debit(double amount)  
   {  
     availableBalance -= amount;  
     totalBalance -= amount;  
   }  
   public int getAccountNumber()  
   {  
     return accountNumber;  
   }  
 }
  • class Bank Database
 public class BankDatabase  
 {  
   private Account[] accounts;  
   public BankDatabase()  
   {  
     accounts = new Account[2];  
     accounts[0]= new Account(12345,54321,1000.0,1200.0);  
     accounts[1]= new Account(98765,56789,200.0,200.0);  
   }  
   public Account getAccount(int accountNumber)  
   {  
     for(Account currentAccount : accounts)  
     {  
       if(currentAccount.getAccountNumber()==accountNumber)  
       return currentAccount;  
     }  
     return null;//jika tidak ada akun yang cocok  
   }  
   public boolean authenticateUser(int userAccountNumber, int userPIN)  
   {  
     Account userAccount = getAccount(userAccountNumber);  
     if(userAccount!=null)  
     return userAccount.validatePIN(userPIN);  
     else  
     return false;  
   }  
   public double getAvailableBalance(int userAccountNumber)  
   {  
     return getAccount(userAccountNumber).getAvailableBalance();  
   }  
   public double getTotalBalance(int userAccountNumber)  
   {  
     return getAccount(userAccountNumber).getTotalBalance();  
   }  
   public void credit(int userAccountNumber, double amount)  
   {  
     getAccount(userAccountNumber).credit(amount);  
   }  
   public void debit(int userAccountNumber, double amount)  
   {  
     getAccount(userAccountNumber).debit(amount);  
   }  
 }  
  • class Transaction
 public abstract class Transaction  
 {  
   private int accountNumber;  
   private Screen screen;  
   private BankDatabase bankDatabase;  
   public Transaction(int userAccountNumber, Screen atmScreen, BankDatabase atmBankDatabase)  
   {  
     accountNumber = userAccountNumber;  
     screen = atmScreen;  
     bankDatabase = atmBankDatabase;  
   }  
   public int getAccountNumber()  
   {  
     return accountNumber;  
   }  
   public Screen getScreen()  
   {  
     return screen;  
   }  
   public BankDatabase getBankDatabase()  
   {  
     return bankDatabase;  
   }  
   abstract public void execute();  
 }  
  • class  Saldo
 public class Saldo extends Transaction  
 {  
    public Saldo(int userAccountNumber, Screen atmScreen, BankDatabase atmBankDatabase)  
   {  
     super(userAccountNumber, atmScreen, atmBankDatabase);  
   }  
   @Override  
    public void execute()  
   {  
     // mengambil referensi dairi database dan screen  
     BankDatabase bankDatabase = getBankDatabase();  
     Screen screen = getScreen();  
     // mengambil saldo tersedia  
     double availableBalance = bankDatabase.getAvailableBalance( getAccountNumber() );  
     // mengambil total saldo  
     double totalBalance = bankDatabase.getTotalBalance(getAccountNumber());  
     //menampilkan informasi  
     screen.displayMessageLine("\nInfo Saldo:");  
     screen.displayMessage(" - Saldo Tersedia: ");  
     screen.displayAmount(availableBalance);  
     screen.displayMessage("\n - Total balance: ");  
     screen.displayAmount(totalBalance);  
     screen.displayMessageLine("");  
   }  
 }  
  • class Tarik Tunai
 public class Tarik_Tunai extends Transaction  
 {  
   private int amount;  
   private Keypad keypad;  
   private CashDispenser cashDispenser;  
   private final static int batal = 6;  
    public Tarik_Tunai(int userAccountNumber, Screen atmScreen, BankDatabase atmBankDatabase, Keypad atmKeypad, CashDispenser atmCashDispenser)  
   {  
     super(userAccountNumber, atmScreen, atmBankDatabase);  
     keypad = atmKeypad;  
     cashDispenser = atmCashDispenser;  
   }  
   @Override  
    public void execute()  
   {  
     boolean cashDispensed = false; // uang belum keluar  
     double availableBalance;  
     BankDatabase bankDatabase = getBankDatabase();  
     Screen screen = getScreen();  
     do  
     {  
       amount = displayMenuOfAmounts();  
       if(amount!=batal)  
       {  
         availableBalance = bankDatabase.getAvailableBalance(getAccountNumber());  
         if(amount <= availableBalance)//cek apakah saldo di akun mencukupi  
         {  
           if(cashDispenser.isSufficientCashAvailable(amount))  
           {  
             bankDatabase.debit(getAccountNumber(),amount);  
             cashDispenser.dispenseCash(amount);// mengeluarkan uang  
             cashDispensed = true;  
             screen.displayMessageLine("\nSilahkan Ambil Uang Anda");  
           }    
           else  
             screen.displayMessageLine("\nUang di mesin ATM tidak mencukupi\nsilahkan pilih nominal yang lebih kecil");  
           }  
           else  
           screen.displayMessageLine("\nSaldo tidak mencukupi\nsilahkan pilih nominal yang lebih kecil");  
       }  
       else  
       {  
         screen.displayMessageLine("\nTransaksi Batal");  
         return;  
       }  
     }while(!cashDispensed);  
   }  
   private int displayMenuOfAmounts()  
   {  
     int userChoice =0;  
     Screen screen = getScreen();  
     int[] amounts={0,20,40,60,100,200};  
     while(userChoice==0)  
     {  
       screen.displayMessageLine( "\nTarikan Tunai:" );  
       screen.displayMessageLine( "\n1 - $20" );  
       screen.displayMessageLine( "\n2 - $40" );  
       screen.displayMessageLine( "\n3 - $60" );  
       screen.displayMessageLine( "\n4 - $100" );  
       screen.displayMessageLine( "\n5 - $200" );  
       screen.displayMessageLine( "\n6 - Cancel transaction" );  
       screen.displayMessage( "\nPilih Nominal: " );  
       int input = keypad.getInput(); // mengambil input user  
       switch ( input )  
       {  
         case 1: // pilihan untuk nominal tarik tunai  
         case 2:   
         case 3:   
         case 4:  
         case 5:  
         userChoice = amounts[input]; // pilihan user  
         break;  
         case batal: // jika batal  
         userChoice = batal;  
         break;  
         default:   
         screen.displayMessageLine(  
         "\nINPUT SALAH" );  
       }  
     }  
     return userChoice;  
   }  
 }  
  • class Setoran
 public class Setoran extends Transaction  
 {  
   private double amount;  
   private Keypad keypad;  
   private DepositSlot depositSlot;  
   private final static int batal = 0;  
   public Setoran(int userAccountNumber, Screen atmScreen, BankDatabase atmBankDatabase, Keypad atmKeypad, DepositSlot atmDepositSlot)  
   {  
     super(userAccountNumber,atmScreen,atmBankDatabase);  
     keypad=atmKeypad;  
     depositSlot=atmDepositSlot;  
   }  
   @Override  
   public void execute()  
   {  
     BankDatabase bankDatabase = getBankDatabase();  
     Screen screen = getScreen();   
     amount = promptForDepositAmount();   
     if ( amount != batal )  
     {  
       screen.displayMessage("\nSilahkan masukkan uang " );  
       screen.displayAmount( amount );  
       screen.displayMessageLine( "." );  
       boolean envelopeReceived = depositSlot.isEnvelopeReceived();  
       if(envelopeReceived)  
       {  
         screen.displayMessageLine("\nUang telah di setorkan");  
         bankDatabase.credit(getAccountNumber(),amount);  
       }  
       else  
       screen.displayMessageLine("\nUang Belum Masuk, Transaksi Dibatalkan");  
     }  
     else  
     screen.displayMessageLine("\nTransaksi Batal");  
   }  
   private double promptForDepositAmount()  
   {  
     Screen screen = getScreen();  
     screen.displayMessage("\nMasukkan nilai Setoran, atau 0 untuk Batal");  
     int input = keypad.getInput();  
     if ( input == batal )  
     return batal;  
     else  
     {  
       return ( double ) input;  
     }  
   }  
 }  

Senin, 10 April 2017

Perintah Java (Scanner dan Library)

Scanner
Scanner merupakan perintah untuk membuat objek atau menginisialisasi object yang diinginkan pengguna atau yang diinputkan pengguna.

contoh:

  public class Account   
  {   
   private double Balance;   
   public Account(double initialBalance)   
   {   
    if(initialBalance>0.0)   
     Balance=initialBalance;   
   }   
   public void credit(double amount)   
   {   
    Balance=Balance+amount;   
   }   
   public double getBalance()   
   {   
    return Balance;   
   }   
  }   

  import java.util.Scanner;   
  public class AccountTest   
  {   
   public static void main(String[] args)   
   {   
    Account account1=new Account(50.00);   
    Account account2=new Account(-7.53);   
    System.out.printf("account1 balance: $%.2f\n", account1.getBalance());   
    System.out.printf("account2 balance: $%.2f\n\n", account2.getBalance());   
    Scanner input=new Scanner(System.in);   
    double depositAmount;   
    System.out.print("Enter deposit amount for account1: ");   
    depositAmount=input.nextDouble();   
    System.out.printf("\nadding %.2f to account1 balance\n\n",   
     depositAmount );   
    account1.credit(depositAmount);   
    System.out.printf("Enter deposit amount for account2: ");   
    depositAmount=input.nextDouble();   
    System.out.printf("\nadding %.2f to account2 balance\n\n",   
     depositAmount);   
    account2.credit(depositAmount);   
    System.out.printf("account1 balance: $%.2f\n",   
     account1.getBalance());   
    System.out.printf("account2 balance: $%.2f\n",   
     account2.getBalance());   
   }   
  }   

Library

Library adalah sekumpulan package atau koleksi kelas yang telah disediakan oleh Java. Untuk menggunakan Library dalam java kita menggunakan syntax import. Syntax import digunakan untuk mengimport/memasukan method-method dari class/library yang lain, sehingga method tersebut dapat digunakan pada class yang memanggilnya. Fungsi ini harus diletakan pada baris awal program.

salah satu contoh yang sering digunakan yaitu javax.swing (berisi kelas-kelas untuk membentuk aplikasi GUI)

1. Dialog Box

  import javax.swing.JOptionPane;   
  public class Dialog1   
  {   
   public static void main (String[] args)   
   {   
    JOptionPane.showMessageDialog(null,"Welcome to java");   
   }   
  }   

2. Name Dialog Box

 import javax.swing.JOptionPane;   
  public class NameDialog   
  {   
   public static void main(String[] args)   
   {   
    String name=JOptionPane.showInputDialog("What is your name?");   
    String message=String.format("Welcome, %s, to Java Programming!", name);   
    JOptionPane.showMessageDialog(null, message);   
   }   
  }   

3. Memodifikasi Account Test mengguanakan Dialog Box

 import javax.swing.JOptionPane;   
  public class AccountTestDialogBox   
  {   
   public static void main (String[] args)   
   {   
    Account account1 = new Account (50.00);   
    Account account2 = new Account (-7.53);   
    String output1 = String.format ("account1 balance : $%.2f\naccount2 balance : $%.2f\n\n", account1.getBalance(), account2.getBalance());   
    JOptionPane.showMessageDialog (null, output1);   
    String input1 = JOptionPane.showInputDialog ("Enter deposit amount for account1 : ");   
    Double input1a = Double.parseDouble (input1);   
    account1.credit (input1a);    
    String message1 = String.format ("\nadding %s to account1 balance\n\n", input1);   
    JOptionPane.showMessageDialog (null, message1);   
    String output2 = String.format ("account1 balance : $%.2f\naccount2 balance : $%.2f\n\n", account1.getBalance(), account2.getBalance());   
    JOptionPane.showMessageDialog (null, output2);   
    String input2 = JOptionPane.showInputDialog ("Enter deposit amount for account2 : ");   
    Double input2a = Double.parseDouble (input2);   
    account2.credit (input2a);   
    String message2 = String.format ("\nadding %s to account2 balance\n\n", input2);   
    JOptionPane.showMessageDialog (null, message2);   
    String output3 = String.format ("account1 balance : $%.2f\naccount2 balance : $%.2f\n", account1.getBalance(), account2.getBalance());   
    JOptionPane.showMessageDialog (null, output3);   
   }   
  }   

Output tidak diberikan, agar pembaca dapat mencobanya sendiri.
sekian dan terima kasih, semoga bermanfaat

Overloading dan Overriding

Program-program Menghitung Bangun Datar

1.Persegi Panjang

 import java.util.Scanner;  
 public class persegi_panjang  
 {  
   public static void main(String [] args)  
   {  
     int panjang,lebar,luas,keliling;  
     Scanner S = new Scanner (System.in);  
     System.out.print("Masukan Panjang : ");  
       panjang=S.nextInt();  
     System.out.print("Masukan Lebar : ");  
       lebar=S.nextInt();  
       luas=(panjang*lebar);  
       keliling=2*(panjang+lebar);  
     System.out.println("Luas Persegi Panjang = "+luas);  
     System.out.println("Keliling Persegi Panjang = "+keliling);  
   }  
 }  

Hasil :



2. Segitiga

 import java.util.Scanner;  
 public class segitiga  
 {  
   public static void main(String[]args)  
   {  
     int alas,tinggi,luas,sisimiring1,sisimiring2,keliling;  
     Scanner S=new Scanner(System.in);  
     System.out.print("Masukkan Alas : ");  
     alas=S.nextInt();  
     System.out.print("Masukkan Tinggi : ");  
     tinggi=S.nextInt();  
     System.out.print("Masukkan Sisi Miring-1 : ");  
     sisimiring1=S.nextInt();  
     System.out.print("Masukkan Sisi Miring-2 : ");  
     sisimiring2=S.nextInt();  
     luas=(alas*tinggi)/2;  
     keliling=sisimiring1+sisimiring2+alas;  
     System.out.println("Luas Segitiga = "+luas);  
     System.out.println("Keliling Segitiga = "+keliling);  
   }  
 }  

Hasil:


3. Persegi

 import java.util.Scanner;  
 public class bujur_sangkar  
 {  
   public static void main(String []args)  
   {  
     int sisi,luas,keliling;  
     Scanner O=new Scanner (System.in);  
     System.out.print("Masukkan sisi : ");  
     sisi=O.nextInt();  
     luas=(sisi*sisi);  
     System.out.println("Luas Bujur Sangkar = "+luas);  
     keliling=(4*sisi);  
     System.out.println("Keliling Bujur Sangkar = "+keliling);  
   }  
 }  

Hasil:



4. Lingkaran

 import java.util.Scanner;  
 public class lingkaran  
 {  
   public static void main(String [] args)  
   {  
     double phi=3.14;  
     double r,luas,keliling;  
     Scanner I=new Scanner (System.in);  
     System.out.print("Masukkan Jari-jari Lingkaran : ");  
     r=I.nextInt();  
         luas=phi*r*r;  
         keliling=2*phi*r;  
     System.out.println("Luas Lingkaran = "+luas);  
     System.out.println("Keliling Lingkaran = "+keliling);  
   }  
 }  

Hasil:

Senin, 03 April 2017

Mesin Antrian BANK



Simulasi Mesin Antrian Bank

Bank merupakan tempat berkumpulnya masyarakat untuk menyimpan atau pun mengambil uang. Sebelum melakukan transaksi biasanya nasabah diminta mengambil nomor antrian di mesin pencetak antrian.


Mesin pencetak antrian bank adalah system yang berfungsi untuk mengelola nomor urut antrian nasabah bank. Mesin ini mempunyai fungsi, mempermudah teller dan customer service, atau layanan lain pada bank tersebut, memanggil nasabah dan melayani sesuai dengan keperluan nasabah, pada masing-masing layanan.




Mesin Antrian Bank

Input : jenis layanan








Output : Nomor antrian, Jenis layanan dan tanggal.



Implementasinya :

1. Class Antrian



2. Class Test


hasil Program :

Saat memilih pilihan 1.Teller

 Saat memilih pilihan 2.Costumer Service


Selasa, 07 Maret 2017

composition, enumerations and static class


1. Composition
Composition adalah dimana hubungan suatu object bergantung dengan objek lainnya.

program 8.7

/**
 * Write a description of class Date here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Date
    {
      private int month;
      private int day;
      private int year;
      private static final int[] daysPerMonth = 
      { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
      public Date( int theMonth, int theDay, int theYear )
        {
          month = checkMonth( theMonth );
          year = theYear;
          day = checkDay( theDay );
          System.out.printf("Date object constructor for date %s\n", this );
        }
    private int checkMonth( int testMonth )
        {
          if ( testMonth > 0 && testMonth <= 12 )
          return testMonth;
        
          else
          throw new IllegalArgumentException( "month must be 1-12" );
        }
    private int checkDay( int testDay )
       {
        if ( testDay > 0 && testDay <= daysPerMonth[ month ] )
        return testDay;
        if ( month == 2 && testDay == 29 && ( year % 400 == 0 ||
        ( year % 4 == 0 && year % 100 != 0 ) ) )
        return testDay;
        throw new IllegalArgumentException
        ("day out-of-range for the specified month and year" );
       }
    public String toString()
    {
        return String.format( "%d/%d/%d", month, day, year );
    }
}


program 8.8

/**
 * Write a description of class Employee here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Employee
{
    private String firstName;
    private String lastName;
    private Date birthDate;
    private Date hireDate;
   public Employee( String first, String last, Date dateOfBirth,
   Date dateOfHire )
   {
      firstName = first;
      lastName = last;
      birthDate = dateOfBirth;
      hireDate = dateOfHire;
   }
   public String toString()
    {
        return String.format( "%s, %s Hired: %s Birthday: %s",
        lastName, firstName, hireDate, birthDate );
    }
}



program 8.9

/**
 * Write a description of class EmployeeTest here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class EmployeeTest
{
    public static void main( String[] args )
    {
        Date birth = new Date( 7, 24, 1949 );
        Date hire = new Date( 3, 12, 1988 );
        Employee employee = new Employee( "Bob", "Blue", birth, hire );
        System.out.println( employee );
    }
 }



2. Enumerations
Enumeration adalah kumpulan nama-nama konstant yang didefinisikan sebagai tipe data baru. Sebuah objek bertipe Enumeration dapat mengakses isi dari kumpulan nilai pada enumeration.
program 8.10

/**
 * Write a description of class Book here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public enum Book
{
    JHTP( "Java How to Program", "2012" ),
    CHTP( "C How to Program", "2007" ),
    IW3HTP( "Internet & World Wide Web How to Program", "2008" ),
    CPPHTP( "C++ How to Program", "2012" ),
    VBHTP( "Visual Basic 2010 How to Program", "2011" ),
    CSHARPHTP( "Visual C# 2010 How to Program", "2011" );
    private final String title;
    private final String copyrightYear;
    Book( String bookTitle, String year )
    {
        title = bookTitle;
        copyrightYear = year;
    }
    public String getTitle()
    {
        return title;
    }
    public String getCopyrightYear()
    {
        return copyrightYear;
    } // end method getCopyrightYear
}


program 8.11

/**
 * Write a description of class EnumTest here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
import java.util.EnumSet;
    public class EnumTest
    {
        public static void main( String[] args )
        {
           System.out.println( "All books:\n" );
           for( Book book : Book.values() )
            System.out.printf("%-10s%-45s%s\n", book,
            book.getTitle(), book.getCopyrightYear());
       System.out.println("\nDisplay a range of enum constants:\n" );
       for( Book book : EnumSet.range (Book.JHTP, Book.CPPHTP ))
            System.out.printf("%-10s%-45s%s\n", book,
            book.getTitle(), book.getCopyrightYear());
        }
    }


3. Static Class Members
Apabila sebuah variabel didefinisikan static didalam sebuah class, maka untuk memanggil variabel tersebut kita tidak perlu membuat objek dari class tersebut, namun langsung bisa memanggil variabel tersebut dari nama class dimana dia dideklarasikan.


program 8.12

/**
 * Write a description of class Employee2 here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

public class Employee2
{
    private String firstName;
    private String lastName;
    private static int count = 0;
    public Employee2( String first, String last )
        {
            firstName = first;
            lastName = last;
            ++count;

            System.out.printf( "Employee constructor: %s %s; count = %d\n",
            firstName, lastName, count );
        }
    public String getFirstName()
    {
    return firstName;
    }
    public String getLastName()
    {
        return lastName;
    }

    public static int getCount()
    {
        return count;
    }
}



program 8.13

/**
 * Write a description of class Employee2Test here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Employee2Test
{
    public static void main (String[] args)
    {
        System.out.printf("Employees before instantiation: %d\n",Employee2.getCount ());
    
        Employee2 e1= new Employee ("Susan", "Baker");
        Employee2 e2= new Employee ("Bob", "Blue");
    
        System.out.println( "\nEmployees after instantiation: " );
        System.out.printf( "via e1.getCount(): %d\n",e1.getCount() );
        System.out.printf( "via e2.getCount(): %d\n",e2.getCount() );
        System.out.printf( "via Employee.getCount(): %d\n",Employee2.getCount());

        System.out.printf( "\nEmployee 1: %s %s\nEmployee 2: %s %s\n",
        e1.getFirstName(), e1.getLastName(),
        e2.getFirstName(), e2.getLastName() );
        e1= null;
        e2 = null;
    }
}







Minggu, 05 Maret 2017

Ticket Machine



Ticket Machine adalah sebuah mesin seperti ATM, yang berfungsi melayani penjualan tiket kereta api dari satu tujuan ke tujuan yang lain. Di dalam Ticket Machine ada sebuah program atau perangkat lunak yang mengatur harga tiket di tiap tujuan, mengatur kembalian uang, dan juga mencetak receipt sebagai bukti pembelian tiket.

Berikut implementasikan programnya menggunakan Blue J.



/**
 * Write a description of class TicketMachine here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class TicketMachine  
 {  
   private int price;  
   private int balance;  
   private int total;  
   public TicketMachine(int ticketCost)  
   {  
     price = ticketCost;  
     balance = 0;  
     total = 0;  
   }  
   public int getPrice()  
   {  
     return price;  
   }  
   public int getBalance()  
   {  
     return balance;  
   }  
   public void insertMoney(int amount)  
   {  
     balance = balance + amount;  
   }  
   public void printTicket()  
   {  
     System.out.println("@@@@@@@@@@@@@@@@@@");  
     System.out.println("@ The BlueJ Line @");  
     System.out.println("@ Ticket     @");  
     System.out.println("" + price + " cents.");  
     System.out.println();  
     total = total + balance;  
     balance = 0;  
   }  
 }



/**
 * Write a description of class IntMain here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
 import java.util.Scanner;  
 public class IntMain  
 {  
    public static int main()  
       {  
         Scanner scan = new Scanner(System.in);  
         int cost,menu;  
         System.out.println("Masukkan harga tiket \n");  
         cost=scan.nextInt();  
         TicketMachine ticket=new TicketMachine(cost);  
         while (true){  
           System.out.println("1. Get Price");  
           System.out.println("2. Get Balance");  
           System.out.println("3. Insert Money");  
           System.out.println("4. Print Ticket");  
           System.out.println("5. EKZIT");  
           menu=scan.nextInt();  
         switch(menu)  
         {  
           case 1:  
           cost=ticket.getPrice();  
           System.out.println(cost);  
           break;  
           case 2:  
           System.out.println(ticket.getBalance());  
           break;  
           case 3:  
           int money=scan.nextInt();  
           ticket.insertMoney(money);  
           break;  
           case 4:  
           ticket.printTicket();  
           break;  
           case 5:  
           return 0;  
         }  
       }  
     }  
   }

Senin, 27 Februari 2017

JAVA TIME PRACTICE



Dibawah ini adalah beberapa program Latihan Bahasa JAVA untuk time practice yang di ambil dari buku "Java How To Program - Ninth Edition (2012)"

program 1 (Time)
/**
 * Write a description of class Time here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Time
{
    
    private int hour;
    private int minute;
    private int second;


    public void  setTime(int h, int m, int s)
    {
      if ( ( h >= 0 && h < 24 ) && ( m >= 0 && m < 60 ) &&( s >= 0 && s < 60 ) )
        {
         hour = h;
         minute = m;
         second = s;
        }
      else
        throw new IllegalArgumentException("hour, minute and/or second was out of range" );
    
    }
    public String toUniversalString()
    {
        return String.format( "%02d:%02d:%02d", hour, minute, second );
    } 
    public String toString()
    {
        return String.format( "%d:%02d:%02d %s",
        ( ( hour == 0 || hour == 12 ) ? 12 : hour % 12 ),
        minute, second, ( hour < 12 ? "AM" : "PM" ) );
    
    }
    

}

Program 2 (TimeTest)


/**
 * Write a description of class TimeTest here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class TimeTest
{
    public static void main( String [] args )
    {
        Time time = new Time();
        
        System.out.print    (" The initial universal time is: ");
        System.out.println  ( time.toUniversalString() );
        System.out.print    (" The initial Standard time is: ");
        System.out.println  ( time.toString() );
        System.out.println  ();
        
        time.setTime(13, 27, 6);
        System.out.print    (" Universal time after selfTime: ");
        System.out.println  ( time.toUniversalString() );
        System.out.print    (" Standard time after selfTime is: ");
        System.out.println  ( time.toString() );
        System.out.println();
        
        try
        {
            time.setTime(99, 99, 99);
        }
        catch (IllegalArgumentException e)
        {
            System.out.println  (" After attempting invalid settings: ");
            System.out.print    (" Universal time : ");
            System.out.println  ( time.toUniversalString() );
            System.out.print    (" Standard time: ");
            System.out.println  (time.toString() );
        }

   }
}

Program 3 (MemberAccesTest)


/**
 * Write a description of class MemberAccessTest here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class MemberAccessTest
{
 public static void main( String[] args )
   {
     Time time = new Time(); 
     time.hour = 7; // error: hour has private access in Time1
     time.minute = 15; // error: minute has private access in Time1
     time.second = 30; // error: second has private access in Time1
   }
}

Program 4 (ThisTest)


/**
 * Write a description of class ThisTest here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class ThisTest
{
    public static void main( String[] args )
    {
        SimpleTime time = new SimpleTime( 15, 30, 19 );
        System.out.println( time.buildString() );
    }
    
}
class SimpleTime
{
    private int hour;
    private int minute;
    private int second;
    
    public SimpleTime( int hour, int minute, int second )
    {
        this.hour = hour;
        this.minute = minute;
        this.second = second;
    }
    
    public String buildString()
    {
     return String.format( "%24s: %s\n%24s: %s","this.toUniversalString()", this.toUniversalString(),
     "toUniversalString()", toUniversalString());
    }
    public String toUniversalString()
    {
        return String.format( "%02d:%02d:%02d",this.hour, this.minute, this.second);

    }
}

Program 5 (Time2)


/**
 * Write a description of class Time2 here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Time2
{
       private int hour;
       private int minute;
       private int second;
       public Time2()
       {
          this( 0, 0, 0 );
       } 
       public Time2( int h )
       {
          this( h, 0, 0 );
       }
    
       public Time2( int h, int m )
       {
           this( h, m, 0 );
       }
        public Time2( int h, int m, int s )
       {
            setTime( h, m, s );
       }
       public Time2( Time2 time )
       {
           this( time.getHour(), time.getMinute(), time.getSecond() );
       }
       public void setTime( int h, int m, int s )
       {
           setHour( h );
           setMinute( m );
           setSecond( s );
        } 
       public void setHour( int h )
        {
           if ( h >= 0 && h < 24 )
           hour = h;
           else
           throw new IllegalArgumentException( "hour must be 0-23" );
        }
        // validate and set minute
       public void setMinute( int m )
        {
           if ( m >= 0 && m < 60 )
           minute = m;
           else
           throw new IllegalArgumentException( "minute must be 0-59" );
        }
       public void setSecond( int s )
       {
           if ( s >= 0 && s < 60 )
           second = ( ( s >= 0 && s < 60 ) ? s : 0 );
           else
           throw new IllegalArgumentException( "second must be 0-59" );
        }
       public int getHour()
       {
           return hour;
       }
       public int getMinute()
       {
           return minute;
       }
       public int getSecond()
       {
           return second;
       }
       public String toUniversalString()
       {
           return String.format("%02d:%02d:%02d", getHour(), getMinute(), getSecond() );
       }
       public String toString()
       {
        return String.format( "%d:%02d:%02d %s",
        ( (getHour() == 0 || getHour() == 12) ? 12 : getHour() % 12 ),
        getMinute(), getSecond(), ( getHour() < 12 ? "AM" : "PM" ) );
       }
}

Program 6 (Time2Test)


/**
 * Write a description of class Time2Test here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Time2Test
{
    public static void main( String[] args )
    {
        Time2 t1 = new Time2();
        Time2 t2 = new Time2( 2 );
        Time2 t3 = new Time2( 21, 34 );
        Time2 t4 = new Time2( 12, 25, 42 );
        Time2 t5 = new Time2( t4 );
        System.out.println( "Constructed with:" );
        System.out.println( "t1: all arguments defaulted" );
        System.out.printf( " %s\n", t1.toUniversalString() );
        System.out.printf( " %s\n", t1.toString() );
        
        System.out.println("t2: hour specified; minute and second defaulted" );
        System.out.printf( " %s\n", t2.toUniversalString() );
        System.out.printf( " %s\n", t2.toString() );
        
        System.out.println("t3: hour and minute specified; second defaulted" );
        System.out.printf( " %s\n", t3.toUniversalString() );
        System.out.printf( " %s\n", t3.toString() );
        
        System.out.println( "t4: hour, minute and second specified" );
        System.out.printf( " %s\n", t4.toUniversalString() );
        System.out.printf( " %s\n", t4.toString() );
        
        System.out.println( "t5: Time2 object t4 specified" );
        System.out.printf( " %s\n", t5.toUniversalString() );
        System.out.printf( " %s\n", t5.toString() );
        
       try
       {
           Time2 t6 = new Time2( 27, 74, 99 );
       }
       catch ( IllegalArgumentException e )
       {
       System.out.printf( "\nException while initializing t6: %s\n",e.getMessage() );
       }
    }
}

untuk output, silahkan dicoba sendiri, Karena dengan mencoba kita akan sekaligus belajar.

Senin, 20 Februari 2017

Pemrograman Berorientasi Objek (OOT)



A. KONSEP PEMROGRAMAN BERORIENTASI OBJEK (OOT)      
     
 Dalam kuliah teknik informatika, ada mata kuliah yang bernama pemrograman berorientasi objek,dimana di amata kuliah ini  menjelaskan tentang  paradigma pemrograman yang memandang sistem yang akan dibangun berdasarkan objek objek yang terlibat dan interaksinya dalam sistem.  Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya,
Sistem dibangun dengan membuat objek objek dan menginteraksikannya untuk menyelesaikan suatu pekerjaan, dengan kata lain Program adalah serangkaian object yang berinteraksi untuk menyelesaikan suatu masalah. Jadi banyak sekali paradigma yang bisa kita gunakan dalam menyelesaikan masalah dalam pemrograman, sekarang paradigma pemrograman berorientasi object yang sering digunakan oleh programer. Pemrograman berorientasi object berputar pada konsep dari obyek yang merupakan elemen dasar dari program. Penggunaan pemrograman berorientasi objek sangat benyak sekali, contoh : java, php, perl, c#, cobol, dan lainnya.
komponen dasar dalam pemrograman berorientasi objek :


1. Class
Kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh ‘class of mobil’ adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari mobil. Dalam pemrograman class adalah struktur dalam program yang berisi satu atau beberapa metode (dapat berupa fungsi dan/atau prosedur) dan atribut (dapat berupa data ataupun variabel yang akan dioperasikan dalam metode), dengan demikian atribut merupakan anggota kelas yang bersifat statis, sedangkan metode merupakan anggota kelas yang bersifat dinamis.

2. Object
Secara definisi bahwa yang dimaksud dengan Object adalah sekumpulan data (atribut) yang disebut variabel untuk menjabarkan karakteristik khusus dari obyek, dan juga terdiri dari sekumpulan method yang menjabarkan tingkah laku dari obyek, bisa dikatan juga bahwa object adalah sebuah perangkat lunak yang berisi sekumpulan variabel dan method yang berhubungan. Sebuah obyek adalah sebuah instance (keturunan) dari class. Dari penjelasan tersebut bisa disimpulkan bahwa hubungan antara class dan object yaitu, Class adalah suatu template/blueprint/rancangan dari object yang akan dibuat dan Object adalah sesuatu yang diciptakan dari Class. khusus dari obyek, dan juga terdiri dari sekumpulan method yang menjabarkan tingkah laku dari obyek, bisa dikatan juga bahwa object adalah sebuah perangkat lunak yang berisi sekumpulan variabel dan method yang berhubungan. Sebuah obyek adalah sebuah instance (keturunan) dari class.

3. Attribute / Atribut 
merupakan nilai data yang terdapat pada suatu object di dalam class. Attribute mempunyai karakterisitik yang membedakan object yang satu dengan object yang lainya. Contoh : pada Class Buah terdapat attribute:warna, berat. Misalkan pada object mangga: warna berisi kuning dan berat 0.5 kg dan pada object apel : warna merah dan berat 0.6 kg
4. Abstraksi 
kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.

5. Enkapsulasi 
memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.

6. Polimorfisme 
melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
Dalam pemrograman hubungan class dan object bisa kita misalkan, kita memiliki sebuah class mobil dimana dapat digunakan untuk medefinisikan beberapa obyek mobil. Pada tabel dibawah, mobil A dan mobil B adalah obyek dari class mobil. Class memiliki field nomor, plat, warna, manufaktur dan kecepatan yang diisi dengan nilai pada obyek mobil A dan mobil B. Mobil juga dapat berakselerasi, berbelok dan melakukan rem.

B. CONTOH PROGRAM CLASS

1. Class Barang


2. Class Mahasiswa



sumber :

  • pengalaman
  • wikipedia
  • http://pbo-re.blogspot.co.id/2010/03/pengertian-class-attribute-object.html
  • http://auliarosalinda.blogspot.co.id/2013/03/konsep-dasar-pemograman-berorientasi.html