Skip to main content

Auction System

Membuat simulasi Auction (Exercise 4.14 Objects-First-with-Java-A-Practical-Introduction-Using-BlueJ-David-J-Barnes), dengan class sebagai berikut :

  1. Auction Class
  2. Lot Class
  3. Bid Class (Class yang harus dilengkapi)
  4. Person Class (Class yang harus dilengkapi)

Auction Class (sebagai class tempat terjadinya proses Auction)
Source Code :
import java.util.ArrayList;
/**
 * Class Utama tempat proses Auction dilakukan
 *
 * @author Satria Ade Veda Karuniawan
 * @version 1.0
 */
public class Auction
{
    private ArrayList<Lot> lots;
    private int nextLotNumber;

    //Constructor
    public Auction()
    {
        lots = new ArrayList<Lot>();
        nextLotNumber = 1;
    }

    //Mendaftarkan lot baru
    public void enterLot(String description)
    {
        lots.add(new Lot(nextLotNumber, description));
        nextLotNumber++;
    }
 
    //Print Semua Lot
    public void showLots()
    {
        for(Lot lot : lots) {
            System.out.println(lot.toString());
        }
    }
 
    //Melakukan Bid pada suatu Lot
    public void makeABid(int lotNumber, Person bidder, long value)
    {
        Lot selectedLot = getLot(lotNumber);
        if(selectedLot != null) {
            Bid bid = new Bid(bidder, value);
            boolean successful = selectedLot.bidFor(bid);
            if(successful) {
                System.out.println("Bid untuk Lot pada urutan " +
                 lotNumber + " sukses didaftarkan.");
            }
            else {
                Bid highestBid = selectedLot.getHighestBid();
                System.out.println("Lot urutan ke: " + lotNumber +
                " memiliki Bid sebesar: " +
                highestBid.getValue());
            }
        }
    }
 
    //Mencari Lot yang terdaftar
    public Lot getLot(int lotNumber)
    {
        if((lotNumber >= 1) && (lotNumber < nextLotNumber)) {
            Lot selectedLot = lots.get(lotNumber-1);
         
            if(selectedLot.getNumber() != lotNumber) {
                 System.out.println("Internal error: Lot urutan ke " +
                selectedLot.getNumber() +
                " dimunculkan, sebagai ganti dari " +
                lotNumber);
                selectedLot = null;
            }
            return selectedLot;
        }
        else {
            System.out.println("Lot urutan ke: " + lotNumber +
            " tidak ditemukan.");
            return null;
        }
    }
}

Lot Class (sebagai class untuk mendaftarkan dan menyimpan data Lot)
Source Code :
/**
 * Class yang berfungsi untuk mendaftarkan serta menyimpan deskripsi Lot
 *
 * @author Satria Ade Veda Karuniawan
 * @version 1.0
 */
public class Lot
{
    //ID Lot
    private final int number;
    //Deskripsi dari sebuah Lot
    private String description;
    //Bid tertinggi dari Lot
    private Bid highestBid;

    //Constructor
    public Lot(int number, String description)
    {
        this.number = number;
        this.description = description;
        this.highestBid = null;
    }

 
    public boolean bidFor(Bid bid)
    {
        if(highestBid == null) {
            //Bid belum ada
            highestBid = bid;
            return true;
        }
        else if(bid.getValue() > highestBid.getValue()) {
            //Bid lebih besar dari nilai Bid sebelumnya
            highestBid = bid;
            return true;
        }
        else {
            //Bid lebih kecil dari nilai Bid sebelumnya
            return false;
        }
    }
 
    //Deskripsi rincian Lot
    public String toString()
    {
        String details = number + ": " + description;
        if(highestBid != null) {
            details += "    Bid: " +
                       highestBid.getValue();
        }
        else {
            details += "    (No bid)";
        }
        return details;
    }

    //Return ID Lot
    public int getNumber()
    {
        return number;
    }

    //Return Deskripsi Lot
    public String getDescription()
    {
        return description;
    }

    //Return Bid tertinggi
    public Bid getHighestBid()
    {
        return highestBid;
    }
}

Bid Class (sebagai penyimpan nilai/informasi Bid)
Source Code :
/**
 * Class yang berfungsi sebagai penyimpan nilai/informasi Bid
 *
 * @author Satria Ade Veda Karuniawan
 * @version 1.0
 */
public class Bid
{
    //variable yang hanya bisa diinisialisasi 1 kali
    private final Person biddername;
    private final long value;

    public Bid(Person name, long v)
    {
        this.biddername = name;
        this.value = v;
    }

    //value nama bidder
    public Person getBidder()
    {
        return biddername;
    }

    //value berupa nilai bid
    public long getValue()
    {
        return value;
    }
}

Person Class (sebagai penyimpan data tiap Orang)
Source Code :
/**
 * Class yang berfungsi untuk penyimpan data Orang
 *
 * @author Satria Ade Veda Karuniawan
 * @version 1.0
 */
public class Person
{
    //variable final untuk nama orang (1 kali inisialisasi)
    private final String personname;

    //constructor
    public Person(String name)
    {
        this.personname = name;
    }

    //value berupa nama orang
    public String getName()
    {
        return personname;
    }
}

Tampilan WorkSpace

Comments

Popular posts from this blog

Ticketing Machine

Pembuatan simulasi Ticketing Machine menggunakan OOP Class yang digunakan di dalam Project terdiri atas : Main class TicketMachine class Destination class Library yang digunakan di dalam Project adalah java.util.Scanner Source code Destination class /**  * A class which describes Destination  *  * @author Satria Ade Veda Karuniawan  * @version version 1.0  */ public class Destination {     private String Station;     private int PriceAdult;     private int PriceChild;     //Struct destination       public Destination(String name)     {         Station = name;         PriceAdult = 0;         PriceChild = 0;     }       public void SetInfo(int pa, int pc)     {         PriceAdult = pa;         PriceChild = pc;   ...

Clock

Pembuatan Clock menggunakan BlueJ Class yang digunakan sebagai berikut : Main Clock : digunakan sebagai penghubung antara NumberDisplay dan ClockMechanics NumberDisplay : digunakan sebagai format output number pada jam ClockMechanics : digunakan sebagai pengatur mekanisme jam Main Clock Source Code import java.util.concurrent.TimeUnit; /**  * MainClock class as connector NumberDisplay and ClockMechanics class  *  * @author Satria Ade Veda Karuniawan  * @version Version 1.0  */ public class MainClock {     NumberDisplay numberobj = new NumberDisplay();     ClockMechanics clockobj = new ClockMechanics();     int Marker = 0;     private String[] time_now = {"","","","","","",""};     private String[] converter = new String[7];     public MainClock()     {         while(true)         {            ...

Image Viewer GUI 4.0 (Final Exam Project)

Rancangan Interface (Workspace) Project lanjutan dari Image Viewer GUI 3.0 dengan implementasi menggunakan BlueJ, hal yang telah selesai diimplementasikan adalah : Frame Panel Button Label dll Dengan daftar class utama sebagai berikut : ImageViewer : merupakan class utama yang berfungsi untuk menampilkan dan menginisialisasi GUI (main class) OFImage : merupakan class yang mendefinisikan objek dari gambar ImagePanel : merupakan class yang salah satunya bertindak sebagai canvas gambar (berbeda dengan ImageViewer, ImagePanel hanya mengatur bagian panel foto saja) ImageFileManager : merupakan class yang bertindak sebagai file handler Dengan daftar inherited class ( Filter ) sebagai berikut : DarkerFilter : class Filter yang berfungsi untuk menggelapkan foto LighterFilter : class Filter yang berfungsi untuk menerangkan foto ThresholdFilter : class Filter yang berfungsi untuk merubah warna foto menjadi 3 tingkatan warna dari grayscale InvertFilter : class Fil...