PBO6 - Membuat Sistem Pelelangan dengan Grouping Objects

TUGAS 6 - Pemrograman Berbasis Objek
Membuat sistem lelang (Auction) dengan menggunakan Grouping Objects  dalam program BlueJ
Nama : Bastian Farandy
NRP : 05111740000190
Kelas : Pemrograman Berbasis Objek A

Source Code :

Auction

 import java.util.ArrayList;  
 /**  
  * Model Auction  
  * Author  : Bastian Farandy  
  * NRP   : 05111740000190  
  */  
 public class Auction  
 {  
   private ArrayList<Lot> lots;    //membuat sebuah list barang dalam suatu auction  
   private int LotNumber;  
   //fungsi untuk membuat Auction yang baru  
   public Auction()  
   {  
     lots = new ArrayList<Lot>(); //membuat list barang  
     LotNumber = 1;        //nomor barang dimulai dari 1  
   }  
   //fungsi untuk menambahkan barang baru ke dalam Auction  
   public void enterLot(String deskripsi)  
   {  
     lots.add(new Lot(LotNumber, deskripsi));  
     LotNumber++;  
   }  
   //fungsi untuk melakukan penawaran (bid)  
   public void MakeBid(int CurrentlotNumber, Person bidder, long value)  
   {  
     Lot selectedLot = getLot(CurrentlotNumber);  
     if(selectedLot != null)   
     {  
       //boolean untuk memeriksa apakan penawaran berhasil dilakukan atau tidak.  
       boolean periksa = selectedLot.bidFor(new Bid(bidder, value));  
       //memeriksa dengan penawaran sebelumnya, lebih besar atau tidak.  
       if(periksa)   
       {  
         System.out.println("Penawar dengan nomor Lot :" +  
                   CurrentlotNumber + " telah berhasil dilakukan."  
                   + " Penawaran dilakukan oleh " +bidder.getName());  
       }  
       //memerika jika penawar sebelumnya lebih besar, maka penawaran gagal dilakukan.  
       else  
       {  
         Bid highestBid = selectedLot.getHighestBid();  
         System.out.println("Penawaran dengan nomor lot " + CurrentlotNumber +  
                   " sudah ditawar sebesar : " +  
                   highestBid.getBid());  
       }  
     }  
   }  
   //fungsi untuk menampilkan semua barang yang akan dilelang  
   public void showLots()  
   {  
     for(Lot lot : lots)   
     {  
       System.out.println(lot.detail());  
     }  
   }  
   //fungsi untuk mengambil nilai ID Lot yang dibutuhkan.  
   public Lot getLot(int CurrentlotNumber)  
   {  
     //periksa apakah LotNumber ada atau tidak  
     if((CurrentlotNumber >= 1) && (CurrentlotNumber < LotNumber))   
     {  
       Lot selectedLot = lots.get(CurrentlotNumber - 1);  
       //jika Id Lot berbeda dengan CurrentlotNumber  
       if(selectedLot.getId() != CurrentlotNumber)  
       {  
         System.out.println("Error : Nomor Lot " +  
                   selectedLot.getId() +  
                   " yang ditampilkan semestinya " +  
                   CurrentlotNumber);  
         selectedLot = null;  
       }  
       return selectedLot;  
     }  
     else   
     {  
       //apabila LotNumber tidak ditemukan  
       System.out.println("Nomor Lot : " + CurrentlotNumber +  
                 " tidak ditemukan.");  
       return null;  
     }  
   }  
   //fungsi untuk menutup atau menyelesaikan program.  
   public void close()   
   {   
     System.out.println("Pelelangan sudah ditutup.");   
      for(Lot lot : lots)   
      {   
     System.out.println(lot.getId() + ": " +lot.getDescription());   
     Bid bid = lot.getHighestBid();   
     if (bid==null)  
     {   
       System.out.println("(Tidak ada penawaran untuk lot ini.)");   
     }   
     else   
     {   
       System.out.println( "Telah dijual kepada " +    
       bid.getBidder().getName() + " dengan harga "    
       + bid.getBid());   
     }   
     }   
    }  
 }  

Lot

 //fungsi untuk membuat sebuah Lot(list barang dalam pelelangan)  
 public class Lot  
 {  
   private final int Id;      //id barang  
   private String deskripsi;    //deskripsi barang  
   private Bid highestBid;     //tawaran tertinggi untuk barang tersebut  
   public Lot(int number, String deskripsi)  
   {//buat lot baru dengan id dan deskripsi  
     this.Id = number;  
     this.deskripsi = deskripsi;  
   }  
   //fungsi untuk mengembalikan nilai dari lot (id beserta tawaran tertinggi)  
   public String detail()  
   {  
     String details = Id + ": " + deskripsi;  
     if(highestBid != null) {  
       details += "  Penawar tertinggi : " +   
             highestBid.getBid();  
     }  
     else {  
       details += "  tidak ada penawaran.";  
     }  
     return details;  
   }  
   //fungsi untuk mengembalikan id lot  
   public int getId()  
   {  
     return Id;  
   }  
   //parameter nya merupakan bid untuk cek harga bid sebelumnya  
   //fungsi untuk memeriksa apakah tawaran sekarang lebih besar daripada tawaran tertinggi  
   public boolean bidFor(Bid bid)  
   {  
     if((highestBid == null) || (bid.getBid() > highestBid.getBid()))   
     {  
       //jika benar, maka tawaran ini merupakan tawaran tertinggi  
       highestBid = bid;  
       return true;  
     }  
     else   
     {  
       return false;  
     }  
   }  
   //fungsi untuk mengembalikan deskripsi dari lot  
   public String getDescription()  
   {  
     return deskripsi;  
   }  
   //fungsi untuk mengembalikan nilai tawaran tertinggi dari lot  
   public Bid getHighestBid()  
   {  
     return highestBid;  
   }  
 }  

Bid

 public class Bid  
 {  
   private final Person bidder;  //orang yang akan melakukan tawaran  
   private final long value;    //untuk menyimpan harga tawaran  
   //fungsi untuk membuat penawar baru dengan nama beserta jumlah tawarannya  
   public Bid(Person bidder, long value)  
   {  
     this.bidder = bidder;  
     this.value = value;  
   }  
   //fungsi untuk mengembalikan nama penawar  
   public Person getBidder()  
   {  
     return bidder;  
   }  
   //fungsi untuk mengembalikan harga tawar  
   public long getBid()  
   {  
     return value;  
   }  
 }  

Person

 public class Person  
 {  
   //variabel berbentuk string untuk menyimpan nama orang  
   private final String name;  
   //fungsi untuk membuat nama orang baru  
   public Person(String newName)  
   {  
     this.name = newName;  
   }  
   //fungsi untuk mengembalikan nama orang yang sudah dibuat  
   public String getName()  
   {  
     return name;  
   }  
 }  

Screenshot


Keterangan : bagan dari program yang sudah dibuat


Keterangan :

  • "Xpander" dan "Ignis" dimasukkan kedalam Auction dengan fungsi "void enterLot".
  • "Jane" dan "Bane" ditambahkan sebagai orang dengan fungsi "new Person" dalam class person.
  • "Jane" melakukan penawaran terhadap Xpander sebesar 225
  • Lot Sekarang : Xpander sebesar 225, Ignis belum ada penawaran
  • "Bane" melakukan penawaran terhadap Xpander sebesar 275
  • Lot Sekarang : Xpander sebesar 275, Ignis belum ada penawaran
  • "Jane" melakukan penawaran terhadap Ignis sebesar 195
  • Lot Sekarang : Xpander sebesar 275, Ignis sebesar 195
  • "Bane" melakukan penawaran terhadap Ignis sebesar 230
  • Lot Sekarang : Xpander sebesar 275, Ignis sebesar 230
  • "Jane" melakukan penawaran terhadap Ignis sebesar 315
  • Lot Sekarang : Xpander sebesar 275, Ignis sebesar 315
  • fungsi "close()" pada class Auction dijalankan.
  • Pelelangan dihentikan. Xpander terjual kepada Bane sebesar 275, Ignis kepada Jane sebesar 315

Comments

Popular posts from this blog

PWEB5 - Membuat Form Pembayaran Air

EAS - PWEB - Membuat Sistem PPDB Online

MPPLC - FP