Minggu, 07 Oktober 2018

Tugas 6 PBO A


1. Auction

 import java.util.ArrayList;   
 import java.util.Iterator;   
  /**   
  * Kelas yang menunjukkan model pelelangan (Auction).   
  *    
  * @author (Nadia Hasna).   
  * @version (10/8/2018).   
  */   
  public class Auction   
  {   
   // Daftar 'Lot' pada kelas Auction.   
   private ArrayList<Lot> items; //items = barang yg dilelang   
   //Nomor yg akan diberikan pada 'item' berikutnya   
   private int nextItemNum;   
   //Buat pelelangan baru   
   public Auction()   
   {   
    items = new ArrayList<Lot>();   
    nextItemNum = 1;   
   }   
   //Masukkan 'item' baru pada pelelangan   
   //@param description Pendeskripsian 'item'.   
   public void enterItem(String description)   
   {   
    items.add(new Lot(nextItemNum, description));   
    nextItemNum++;   
   }   
   //List keseluruhan dari item yg terdapat pada pelelangan   
   public void showItems(){   
    for(Lot item : items){   
     System.out.println(item.toString());   
    }   
   }   
   /**   
   * Buat penawaran pada item.   
   * Output berupa penandaan apakah item berhasil dilelang/tdk.   
   * @param itemNum Item yg akan dilelang.   
   * @param penawar Orang yg akan melakukan penawaran.   
   * @param jumlah Jumlah brg yg dilelang.   
   */   
   public void buatLelang(int itemNum, Person penawar, long jumlah)   
   {   
    Lot selectedItem = getItem(itemNum);   
    if(selectedItem != null){   
     Bid bid = new Bid(penawar, jumlah);   
     boolean successful = selectedItem.bidFor(bid);   
     if(successful){   
      System.out.println("Penawaran terhadap item bernomor " +   
      itemNum + " telah berhasil dilakukan.");   
     }   
     else{   
      //Ganti dengan penawaran yg lebih tinggi.   
      Bid highestBid = selectedItem.getHighestBid();   
      System.out.println("No Item: " + itemNum +   
      " telah dilelang sebesar: " +   
      highestBid.getJumlah());   
     }   
    }   
   }   
   //Nilai kembali dari 'item' yg telah diberi nomor   
   //Nilai kembali berupa null jika item tsb tidak ada.   
   //@param itemNum Nomor dari item yg dilelang.   
   public Lot getItem(int itemNum){   
    if((itemNum >= 1) && (itemNum < nextItemNum))   
    {   
     Lot selectedItem = items.get(itemNum - 1);   
     //Pemeriksaan   
     if(selectedItem.getNum() != itemNum) {   
      System.out.println("Terdapat kesalahan: Item dengan nomor " +   
      selectedItem.getNum() +   
      " telah dilelang senilai " + itemNum);   
      selectedItem = null;   
     }   
     return selectedItem;   
    }   
    else {   
     System.out.println("Item dengan nomor: " + itemNum +   
     " tidak valid/ tidak ada.");   
     return null;   
    }   
   }   
  }   

2. Lot

 /**   
  * Kelas untuk memodelkan serangkaian item dalam lelang.   
  *    
  * @author (Nadia Hasna).   
  * @version (10/8/2018).   
  */   
  public class Lot   
  {   
   private final int num; //Nomor   
   private String desc; //Deskripsi untuk item   
   private Bid highestBid; //Penawaran tertinggi untuk saat ini   
   /**   
   * @param num Nomor item.   
   * @param desc Deskripsi dari item yg dilelang.   
   */   
   public Lot(int num, String desc)   
   {   
    this.num = num;   
    this.desc = desc;   
   }   
   /**   
   * Proses penawaran untuk item ybs.   
   * Tawaran yang berhasil harus memiliki nilai yang lebih tinggi daripada tawaran sebelumnya.   
   * @param bid Pelelangan yang baru.   
   * @return true jika berhasil, false jika sebaliknya   
   */   
   public boolean bidFor(Bid bid)   
   {   
    if((highestBid == null) ||   
      (bid.getJumlah() > highestBid.getJumlah())) {   
     //Penawaran yg diterima.   
     highestBid = bid;   
     return true;   
    }   
    else {   
     return false;   
    }   
   }   
   //Detail dari item yg dilelang   
   public String toString()   
   {   
    String details = num + ": " + desc;   
    if(highestBid != null) {   
     details += " Dilelang sebesar: " +    
        highestBid.getJumlah();   
    }   
    else {   
     details += " (Belum terlelang)";   
    }   
    return details;   
   }   
   //Nilai kembali berupa nomor item   
   public int getNum()   
   {   
    return num;   
   }   
   //Nilai kembali berupa deskripsi item   
   public String getDesc()   
   {   
    return desc;   
   }   
   /**   
   * @return Penawaran tertinggi untuk item ybs.   
   *   Null apabila belum ada penawaran   
   */   
   public Bid getHighestBid()   
   {   
    return highestBid;   
   }   
  }   

3. Bit

  /**   
  * Kelas yang memodelkan tawaran lelang (bid).   
  * Berisi referensi tawaran (dari class Person) dan jumlah tawaran.   
  *   
  * @author (Nadia Hasna)   
  * @version (10/8/2018)   
  */   
  public class Bid   
  {   
   //'Person' membuat tawaran   
   private final Person penawar; //penawar = si penawar tertinggi   
   //Jumlah tawaran   
   private final long jumlah; //jumlah = jumlah tawaran   
   //Tawaran dibuat   
   public Bid(Person penawar, long jumlah)   
   {   
    this.penawar = penawar;   
    this.jumlah = jumlah;   
   }   
   //Nilai kembali dari 'penawar'   
   public Person getPenawar()   
   {   
    return penawar;   
   }   
   //Nilai kembali dari 'jumlah'   
   public long getJumlah()   
   {   
    return jumlah;   
   }   
  }    

4. Person

 /**   
  * Kelas yang menunjukkan partisipasi orang dalam pelelangan.   
  *   
  * @author (Nadia Hasna)   
  * @version (10/8/2018)   
  */   
  public class Person   
  {   
   //Nama orang   
   private final String nama;   
   //Buat nama baru   
   public Person(String nama)   
   { //Nama org baru yg ikut serta pelelangan   
    this.nama = nama;    
   }   
   //Nilai kembali dari 'nama'   
   public String getNama()   
   {   
    return nama;   
   }   
  }   










Tidak ada komentar:

Posting Komentar