Tugas #PBOA-tugas 6 (Auction)

AUCTION

Untuk membuat sistem lelang (Auction) menggunakan empat class, yaitu :
  1. Person
  2. Bid
  3. Lot
  4. Auction
Berikut adalah souce code yang digunakan :

  1. Person

  2.  /**  
      * Maintain details of someone who participates in an auction.  
      * @author Nitama Nurlingga Yotifa.  
      * @version 20181007  
      */  
     public class Person  
     {  
       // The name of this person.  
       private final String name;  
       /**  
        * Create a new person with the given name.  
        * @param name The person's name.  
        */  
       public Person(String name)  
       {  
         this.name = name;  
       }  
       /**  
        * @return The person's name.  
        */  
       public String getName()  
       {  
         return name;  
       }  
     }  
    

  3. Bid

  4.  /**  
      * A class that models an auction bid.  
      * It contains a reference to the Person bidding and the amount bid.  
      *   
      * @author Nitama Nurlingga Yotifa.  
      * @version 20181007  
      */  
     public class Bid  
     {  
       // The person making the bid.  
       private final Person bidder;  
       // The value of the bid. This could be a large number so  
       // the long type has been used.  
       private final long value;  
       /**  
        * Create a bid.  
        * @param bidder Who is bidding for the lot.  
        * @param value The value of the bid.  
        */  
       public Bid(Person bidder, long value)  
       {  
         this.bidder = bidder;  
         this.value = value;  
       }  
       /**  
        * @return The bidder.  
        */  
       public Person getBidder()  
       {  
         return bidder;  
       }  
       /**  
        * @return The value of the bid.  
        */  
       public long getValue()  
       {  
         return value;  
       }  
     }  
    

  5. Lot

  6.  /**  
      * A class to model an item (or set of items) in an  
      * auction: a lot.  
      *   
      * @author Nitama Nurlingga Yotifa.  
      * @version 20181007  
      */  
     public class Lot  
     {  
       // A unique identifying number.  
       private final int number;  
       // A description of the lot.  
       private String description;  
       // The current highest bid for this lot.  
       private Bid highestBid;  
       /**  
        * Construct a Lot, setting its number and description.  
        * @param number The lot number.  
        * @param description A description of this lot.  
        */  
       public Lot(int number, String description)  
       {  
         this.number = number;  
         this.description = description;  
       }  
       /**  
        * Attempt to bid for this lot. A successful bid  
        * must have a value higher than any existing bid.  
        * @param bid A new bid.  
        * @return true if successful, false otherwise  
        */  
       public boolean bidFor(Bid bid)  
       {  
         if((highestBid == null) ||  
             (bid.getValue() > highestBid.getValue())) {  
           // This bid is the best so far.  
           highestBid = bid;  
           return true;  
         }  
         else {  
           return false;  
         }  
       }  
       /**  
        * @return A string representation of this lot's details.  
        */  
       public String toString()  
       {  
         String details = number + ": " + description;  
         if(highestBid != null) {  
           details += "  Bid: " +   
                 highestBid.getValue();  
         }  
         else {  
           details += "  (No bid)";  
         }  
         return details;  
       }  
       /**  
        * @return The lot's number.  
        */  
       public int getNumber()  
       {  
         return number;  
       }  
       /**  
        * @return The lot's description.  
        */  
       public String getDescription()  
       {  
         return description;  
       }  
       /**  
        * @return The highest bid for this lot.  
        *     This could be null if there is  
        *     no current bid.  
        */  
       public Bid getHighestBid()  
       {  
         return highestBid;  
       }  
     }  
    

  7. Auction

  8.  import java.util.ArrayList;  
     /**  
      * A simple model of an auction.  
      * The auction maintains a list of lots of arbitrary length.  
      *  
      * @author Nitama Nurlingga Yotifa.  
      * @version 20181007  
      */  
     public class Auction  
     {  
       // The list of Lots in this auction.  
       private ArrayList<Lot> lots;  
       // The number that will be given to the next lot entered  
       // into this auction.  
       private int nextLotNumber;  
       /**  
        * Create a new auction.  
        */  
       public Auction()  
       {  
         lots = new ArrayList<Lot>();  
         nextLotNumber = 1;  
       }  
       /**  
        * Enter a new lot into the auction.  
        * @param description A description of the lot.  
        */  
       public void enterLot(String description)  
       {  
         lots.add(new Lot(nextLotNumber, description));  
         nextLotNumber++;  
       }  
       /**  
        * Show the full list of lots in this auction.  
        */  
       public void showLots()  
       {  
         for(Lot lot : lots) {  
           System.out.println(lot.toString());  
         }  
       }  
       /**  
        * Bid for a lot.  
        * A message indicating whether the bid is successful or not  
        * is printed.  
        * @param number The lot number being bid for.  
        * @param bidder The person bidding for the lot.  
        * @param value The value of the bid.  
        */  
       public void bidFor(int lotNumber, Person bidder, long value)  
       {  
         Lot selectedLot = getLot(lotNumber);  
         if(selectedLot != null) {  
           boolean successful = selectedLot.bidFor(new Bid(bidder, value));  
           if(successful) {  
             System.out.println("The bid for lot number " +  
                       lotNumber + " was successful.");  
           }  
           else {  
             // Report which bid is higher.  
             Bid highestBid = selectedLot.getHighestBid();  
             System.out.println("Lot number: " + lotNumber +  
                       " already has a bid of: " +  
                       highestBid.getValue());  
           }  
         }  
       }  
       /**  
        * Return the lot with the given number. Return null  
        * if a lot with this number does not exist.  
        * @param lotNumber The number of the lot to return.  
        */  
       public Lot getLot(int lotNumber)  
       {  
         if((lotNumber >= 1) && (lotNumber < nextLotNumber)) {  
           // The number seems to be reasonable.  
           Lot selectedLot = lots.get(lotNumber - 1);  
           // Include a confidence check to be sure we have the  
           // right lot.  
           if(selectedLot.getNumber() != lotNumber) {  
             System.out.println("Internal error: Lot number " +  
                       selectedLot.getNumber() +  
                       " was returned instead of " +  
                       lotNumber);  
             // Don't return an invalid lot.  
             selectedLot = null;  
           }  
           return selectedLot;  
         }  
         else {  
           System.out.println("Lot number: " + lotNumber +  
                     " does not exist.");  
           return null;  
         }  
       }  
       public void close()   
       {  
         System.out.println("Closing auction.");  
         for(Lot lot : lots)   
         {  
           System.out.print(lot.getNumber() + ": " + lot.getDescription());  
           if ( lot.getHighestBid() == null )  
           {  
             System.out.println(" (No bids)");  
           }  
           else   
           {  
             Bid highestBid = lot.getHighestBid();  
             System.out.println(" sold to " + highestBid.getBidder().getName() + " for " + highestBid.getValue());  
           }  
         }  
       }  
     }  
    

Untuk menjalankan program dapat dengan langkah-langkah berikut :

Buka New Auction() pada class Auction


Pilih enterLot(String description) untuk menambah barang yang akan dilelang



Ketik barang-barang yang akan dilelang menggunakan petik dua (string)


Buka void show() untuk menampilkan pada terminal window


Hasil dari input pada enterLot(String description)


Buka new Person(String name) untuk menambahkan nama orang yang
berpartisipasi dalam lelang


Buka void bidFor(Number, Person Bidder, long value) untuk input barang, orang,
dan nilai dari suatu barang yang dilelang





Jika suatu barang berhasil dilelang maka akan muncul keterangan bahwa lelang berhasil.
Jika tidak, maka akan muncul keterangan bahwa harga yang dimasukkan tidak cukup tinggi
untuk memenangkan lelang.


Buka void show() untuk menampilkan pada terminal window


Hasil dari lelang pertama


Buka void bidFor(Number, Person Bidder, long value) jika ingin melakukan lelang kedua


Hasil lelang kedua


Buka void close() untuk menutup perlelangan


Hasil akhir proses perlelangan


Komentar

Postingan populer dari blog ini

Tugas #PBOA-tugas 3 (Remote AC)

[Pemprograman Berbasis KK] ETS