Senin, 27 Februari 2017

Ticket Machine

Ticket Machine adalah sebuah mesin 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.

Projek naive-ticket-machine ini menggambarkan mesin tiket yang akan mencetak tiket setelah pelanggan memasukkan sejumlah uang yang tepat sesuai dengan harga karcis. Mesin akan terus bekerja menjumlahkan total uang yang berhasil dikumpulkan.
 
Source code: TicketMachine
/**
 * Write a description of class TicketMachine here.
 * 
 * @author Davin Masasih - 5115100113
 * @version 0.1
 */
public class TicketMachine
{
   private int price;
   private int balance;
   private int total;
   
   public TicketMachine(int cost) {
       price = cost;
       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("###################");
       System.out.println();
       
       total = total + balance;
       balance = 0;
   }
}

Source code: TicketMachineTest
/**
 * Write a description of class TicketMachineTest here.
 * 
 * @author Davin Masasih - 5115100113 
 * @version 0.1
 */
import java.util.Scanner;
public class TicketMachineTest
{
   public static int main(String args[]) {
       Scanner scan = new Scanner(System.in);
       int cost, menu;
       System.out.println("Masukkan harga tiket: ");
       cost = scan.nextInt();
       TicketMachine ticket = new TicketMachine(cost);
       
       while(true) {
           System.out.println("\n1. Get Price");
           System.out.println("2. Get Balance");
           System.out.println("3. Insert Money");
           System.out.println("4. Print Ticket");
           System.out.println("5. Exit");
           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;
           }
       }
   }
}

Classes and Objects #1

8.1 | Time1 class declaration maintains the time in 24-hour format.
/**
 * Write a description of class Time1 here.
 * 
 * @author Davin Masasih - 5115100113 
 * @version 0.1
 */
public class Time1
{
   private int hour; //0-23
   private int minute; //0-59
   private int second; //0-59
    
   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("%02d:%02d:%02d %s", ((hour==0||hour==12)?12:hour%12), minute, second, (hour<12?"AM":"PM"));
   }    
}

8.2 | Time1 object used in an application.
/**
 * Write a description of class time1test here.
 * 
 * @author Davin Masasih - 5115100113
 * @version 0.1
 */
public class Time1Test
{
   public static void main(String[] args) {
       Time1 time = new Time1();
       
       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 setTime is: ");
       System.out.println(time.toUniversalString());
       System.out.print("Standard time after setTime is: ");
       System.out.println(time.toString());
       System.out.println();
       
       try {
           time.setTime(99,99,99);
       }
       catch(IllegalArgumentException e) {
           System.out.printf("Exception: %s\n\n", e.getMessage());
       }
       
       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());
    }
}


8.3 | Private members of class Time1 are not accessible.
/**
 * Write a description of class MemberAccessTest here.
 * 
 * @author Davin Masasih - 5115100113 
 * @version 0.1
 */
public class MemberAccessTest
{
   public static void main(String[] args) {
       Time1 time = new Time1();
        
       time.hour = 7;
       time.minute = 15;
       time.second = 30;
   }
}


Change source code in 8.1 into..
/**
 * Write a description of class Time1 here.
 * 
 * @author Davin Masasih - 5115100113 
 * @version 0.1
 */
public class Time1
{
   public int hour; //0-23
   public int minute; //0-59
   public int second; //0-59
    
   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("%02d:%02d:%02d %s", ((hour==0||hour==12)?12:hour%12), minute, second, (hour<12?"AM":"PM"));
   }    
}

8.4 | This used implicitly and explicitly to refer to members of an object.
/**
 * Write a description of class ThisTest here.
 * 
 * @author Davin Masasih - 5115100113
 * @version 0.1
 */
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.to.UniversalString()", this.toUniversalString(),
        "to.UniversalString()", toUniversalString());
    }
    public String toUniversalString() {
        return String.format("%02d:%02d:%02d", this.hour, this.minute, this.second);
    }
}


8.5 | Time2 class with overloaded constructors.
/**
 * Write a description of class Time2 here.
 * 
 * @author Davin Masasih - 5115100113 
 * @version 0.1
 */
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");
   }
   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("%02d:%02d:%02d %s",
       ((getHour()==0||getHour()==12)?12:getHour()%12), getMinute(), getSecond(),
       (getHour()<12?"AM":"PM"));
   }
}

8.6 | Overloaded constructors used to initialize Time2.
/**
 * Write a description of class Time2Test here.
 * 
 * @author Davin Masasih - 5115100113
 * @version 0.1
 */
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 mnute 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());
       }
   }       
}

Jumat, 17 Februari 2017

Konsep PBO

Pemrograman Berbasis Objek atau Object Oriented Programming (OOP) adalah sebuah tata cara pembuatan program (programming paradigm) dengan menggunakan konsep “objek” yang memiliki data (atribut yang menjelaskan tentang objek) dan prosedur (function) yang dikenal dengan method.

a.    Class
Kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk mendeklarasikan sebuah variabel berupa objek.
Contoh: barang, buah, hewan.
b.    Object
Segala sesuatu yang memiliki identitas baik itu keadaan maupun perilaku (kemampuan untuk melakukan sesuatu dan bisa bekerja sama dengan objek lain).
Contoh: dari class barang dapat dibuat objek meja, kursi, almari.
c.     Property/Attribute
Nilai data yang melekat pada sebuah objek yang merepresentasikan karakteristik objek tersebut.
Contoh: dari object meja memiliki brand, bentuk, warna, bahan, ukuran.
d.    Method
Suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu objek untuk menentukan perilaku objek tersebut.
Contoh: dari object meja dapat dilakukan mencat ulang.
e.    State
Suatu keadaan awal dari sebuah objek yang dapat berubah berdasarkan perlakuan yang diberikan pada objek.
Contoh: dari object meja yang terkena method dicat ulang akan mengakibatkan property warna berubah, maka state dari meja adalah warna.
f.     Instance
Sebuah objek yang dibuat oleh suatu kelas.
g.    Instantiation
Proses pembuatan objek spesifik yang merupakan anggota atau instan dari kelas.

*Program menggunakan class
class Barang {
   private String brand;
   private String bentuk;
   private String warna;
   private String bahan;
   private String ukuran;
   public Barang(String brand, String bentuk, String warna, String bahan, String ukuran) {
      this.brand=brand;
      this.bentuk=bentuk;
      this.warna=warna;
      this.bahan=bahan;
      this.ukuran=ukuran;
    }
   public void setWarna(String str) {
      this.warna=str;
   }
   public String display() {
      return "Barang 'Meja'\nBrand\t: "+this.brand+"\nBentuk\t: "+this.bentuk+"\nWarna\t: "+this.warna+"\nBahan\t: "+this.bahan+"\nUkuran\t: "+this.ukuran+"\n";
   }
}
public class benda {
   public static void main(String[] str) {
      Barang meja=new Barang("Olympic","Kotak","Coklat","Kayu","1x1 meter");
      System.out.println(meja.display());
      
      meja.setWarna("Hijau");
      System.out.println(meja.display());
   }
}


*Program Kalkulator Sederhana
import java.util.Scanner;
public class Kalkulator {
   static float total = 0, bil1 = 1, bil2 = 1;
 
   public static void main(String[] args) {
       Scanner input = new Scanner(System.in);
       while(bil2 != 0 & bil1 != 0) {
           System.out.println("- Kalkulator Sederhana -");
           System.out.println("1.Penjumlahan");
           System.out.println("2.Pengurangan");
           System.out.println("3.Perkalian");
           System.out.println("4.Pembagian");
           System.out.print("Pilihan Anda: ");
           int pilihan = input.nextInt();
        
           System.out.print("Masukan Bilangan Ke-1: ");
           bil1 = input.nextFloat();
           System.out.print("Masukan Bilangan Ke-2: ");
           bil2 = input.nextFloat();
          
           switch(pilihan) {
               case 1:
               System.out.println(+bil1+" + "+bil2);
               System.out.print("Hasil: ");
               total = bil1 + bil2;
               break; 
               case 2:
               System.out.println(+bil1+" - "+bil2);
               System.out.print("Hasil: ");
               total = bil1 - bil2;
               break;
               case 3:
               System.out.println(+bil1+" x "+bil2);
               System.out.print("Hasil: ");
               total = bil1 * bil2;
               break;
               case 4:
               System.out.println(+bil1+" : "+bil2);
               System.out.print("Hasil: ");
               total = bil1 / bil2;
               break;
               default:
               System.out.println("Masukan Anda salah.");
           }
           System.out.println(total+"\n");
       }
   }
}

Implementasi Aplikasi Manajemen Surat