PBO 6-Membuat Simulasi Lelang

Tugas 6 PBO-A

Pada kali ini saya belajar untuk membuat simulasi lelang menggunakan BlueJ.
Disini saya menggunakan 4 kelas yaitu:

  1. Bid
  2. Auction
  3. Lot
  4. Person

  • Bid

 /**  
  * Bid  
  * Author Samuel Marcellinus  
  * NRP 05111740000134  
  */  
 public class Bid  
 {  
   //fungsi untuk orang yang akan membuat Bid.  
   private final Person bidder;    
   private final long value;      
   public Bid(Person bidder, long value)  
   {  
     //fungsi untuk membuat Bid.  
     this.bidder = bidder;  
     this.value = value;  
   }  
   public Person getBidder()  
   {  
     //fungsi untuk mengembalikan nama penawar.  
     return bidder;  
   }  
   public long getBid()  
   {  
     //fungsi untuk mengembalikan harga tawar  
     return value;  
   }  
 }  

  • Auction

 /**  
  * Auction  
  * Author  : Samuel Marcellinus  
  * NRP   : 05111740000134  
  */  
 import java.util.ArrayList;  
 public class Auction  
 {  
   //list dari lot  
   private ArrayList<Lot> lots;      
   private int LotNumber;  
   public Auction()  
   {  
     //fungsi untuk membuat Auction   
     lots = new ArrayList<Lot>(); //membuat list barang  
     LotNumber = 1;        //nomor barang dimulai dari 1  
   }  
   public void enterLot(String deskripsi)  
   {  
     //fungsi untuk menambahkan barang baru ke dalam Auction  
     lots.add(new Lot(LotNumber, deskripsi));  
     LotNumber++;  
   }  
   //fungsi untuk melakukan penawaran (bid)  
   public void MakeBid(int CurrentlotNumber, Person bidder, long value)  
   {  
     //fungsi untuk melakukan bid  
     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());  
       }  
       //memeriksa 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());  
       }  
     }  
   }  
   public void showLots()  
   {  
     //fungsi untuk menampilkan semua barang yang akan dilelang  
     for(Lot lot : lots)   
     {  
       System.out.println(lot.detail());  
     }  
   }  
   public Lot getLot(int CurrentlotNumber)  
   {  
     //fungsi untuk mengambil nilai ID Lot yang dibutuhkan.  
     if((CurrentlotNumber >= 1) && (CurrentlotNumber < LotNumber))   
     {  
       //periksa apakah LotNumber ada atau tidak  
       Lot selectedLot = lots.get(CurrentlotNumber - 1);  
       if(selectedLot.getId() != CurrentlotNumber)  
       {  
         //jika Id Lot berbeda dengan 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;  
     }  
   }  
   public void close()   
   {   
     //fungsi untuk menutup program.  
     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

 /**  
  * Lot  
  * Author  : Samuel Marcellinus  
  * NRP   : 05111740000134  
  */   
 public class Lot  
 {  
   //fungsi untuk membuat sebuah Lot  
   private final int Id;      //untuk id barang  
   private String description;    //untuk description barang  
   private Bid highestBid;     //untuk penawaran tertinggi terhadap barang tersebut  
   public Lot(int number, String description)  
   {  
     //buat lot baru dengan id barang dan deskripsi barang  
     this.Id = number;  
     this.description = description;  
   }  
   public String detail()  
   {  
     //untuk memberikan detail mengenai penawaran tertinggi atau tidak ada penawaran  
     String details = Id + ": " + description;  
     if(highestBid != null) {  
       details += "  Penawar tertinggi : " +   
             highestBid.getBid();  
     }  
     else {   
       details += "  tidak ada penawaran.";  
     }  
     return details;  
   }  
   public int getId()  
   {  
     //fungsi untuk return id lot  
     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;  
     }  
   }  
   public String getDescription()  
   {  
     //fungsi untuk mengembalikan description dari lot  
     return description;  
   }  
   public Bid getHighestBid()  
   {  
     //fungsi untuk mengembalikan nilai tawaran tertinggi dari lot  
     return highestBid;  
   }  
 }  

  • Person

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

Simulasi lelang :

Pertama yaitu membuat barang yang akan dilelang dan membuat orang yang akan melakukan penawaran.




Lalu person 1 dan person 2 akan bid :









Terima Kasih!

Comments

Popular posts from this blog

APSI 1 - Analisa Sistem Informasi Lazada

UTS PBKK

EAS PBKK - CONTRIBUTION BASED EVALUATION