Jumat, 05 Oktober 2018

TUGAS 6 PBO - MEMBUAT SISTEM LELANG (AUCTION SYSTEM)



TUGAS 6

PEMROGRAMAN BERORIENTASI OBJEK



MEMBUAT SISTEM LELANG (AUCTION SYSTEM)



Nama : Atika Rizki Nurakhmah
NRP : 05111740000015
Kelas : PBO - A


HALLO GOOD PEOPLE!
Ulasan kali ini adalah tentang tugas saya yang disuruh membuat sistem lelang dengan BlueJ. Langsung saja cussssss.
Untuk membuat sistem ini, diperlukan minimal 4 Class, yaitu :
  1. Class Bid
    Class ini digunakan untuk menangani tawaran yang masuk dari seseorang (person) terhadap suatu barang. 
  2. Class Lot
    Class ini menangani barang yang dilelang. Berisi nomor barang dan nama barang.
  3. Class Person
    Class ini berisi identitas berupa nama dari orang yang mengikuti lelang.
  4. Class Auction
    Di Class ini sistem dirangkai menjadi satu.
 Berikut Source Code nya:

  • Class Bid
    /**  
      * A class that models an auction bid.  
      * It contains a reference to the Person biding and the amount bid.  
      *  
      * @author (Atika Rizki Nurakhmah)  
      * @version (tugas6/03-10-2018)  
      */  
     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;  
       }  
     }  
      
  • Class Lot
    /**  
      * A classto model an item an item (or set of items) in an auction: a lot.  
      *  
      * @author (Atika Rizki Nurakhmah)  
      * @version (tugas6/03-10-2018)  
      */  
     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;  
       }  
     }  
  • Class Person
    /**  
      * Maintain details of someone who participates in an auction.  
      *   
      * author (Atika Rizki Nurakhmah)  
      * @version (tugas6/03-10-2018)  
      */  
     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;  
       }  
     }  
  • Class Auction
    /**  
      * A simple model of an auction.  
      * The auction maintains a list of lots of arbitrary length.  
      *   
      * @author (Atika Rizki Nurakhmah)  
      * @version (tugas6/03-10-2018)  
      */  
     import java.util.ArrayList;  
     import java.util.Iterator;  
     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 succesful 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 a list of the unsold lots.  
        */  
       public void close()  
       {  
         System.out.println("The auction is closed.");  
         for(Lot lot : lots) {  
           System.out.println(lot.getNumber() + ": " +lot.getDescription());  
           Bid bid = lot.getHighestBid();  
           if (bid==null){  
             System.out.println("(No Bids for this lot.)");  
           }  
           else {  
             System.out.println( "sold to " +   
             bid.getBidder().getName() + " for "   
             + bid.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 invalid lot.  
              selectedLot = null;  
             }  
             return selectedLot;  
           }  
          else {  
            System.out.println("lot number: " + lotNumber + " does not exist.");  
            return null;  
           }  
         }  
       }   

Berikut cara kerja beserta gambarnya





    1. Buat sistem auction dan nama orang yang mengikuti lelang.
    1. 2. Dari auction yang sudah dibuat, masukkan string nama barang yang dilelang dengan menggunakan fungsi void enterLot(String description).

           3. Buat penawaran orang pertama terhadap barang lelang yang telah dimasukkan tadi, dengan menggunakan fungsi void bidFor(int lotNumber, Person bidder, long value)
    Lalu lihat sistem yang berjalan di terminal dengan fungsi void showLots()

    Barang lelang awalnya tidak memiliki nilai penawaran (No Bid). Setelah membuat penawaran orang pertama, barang lelang jadi  memiliki nilai penwaran, yaitu 1.000.000.
    4. Buat penawaran lain dengan nilai yang berbeda. Penawaran bisa berasal dari orang yang sama maupun orang baru. Disini saya menggunakan nama baru.

    Saat nilai penawaran person2 lebih tinggi dari person1, maka nilai barang lelang akan berubah, menjadi nilai yang lebih tinggi.

    Saat nilai penawaran selanjutnya lebih rendah dari nilai barang yang terimpan, maka nilai akan tetap.

    5. Setelah proses lelang selesai, maka kita dapat menutupnya dengan fungsi void close(). Sistem akan menampilkan nilai barang tertinggi yang tersimpan beserta nama orang yang melakukan penawaran dengan nilai tersebut.




    Selesai.....!!!


    NB: sistem ini bisa digunakan untuk beberapa barang sekaligus, tinggal menambahkan barang yang diinginkan.

    Sekian ulasan saya tentang tugas auction system, sampai bertemu di ulasan selanjutnya. Terima kasih, sampai see youuuu :)










    Tidak ada komentar:

    Posting Komentar

    EAS PBO - Membuat Image Viewer

    Membuat Image Viewer (Versi update + editor)   Nama : Atika Rizki Nurakhmah Nrp    : 05111740000015 Kelas : PBO - A ...