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

Technical Support AI

Technical Support - Artificial Intelligence (*From now on, I'll try my best to explain about all of my Project using English) For this project, I made 3 classes to control the Bot Mechanism (Referencing to Objects-First-with-Java-A-Practical-Introduction-Using-BlueJ-David-J-Barnes pages 155) : InputReader Class (Used for detect or to take any user input) SupportSystem Class (As a main function connecting the user input and database) Responder Class (Handling AI-Output and Its role as 'mini' database) Current Version : 1.2 In the future, I'm expecting to have a bigger Responder's Database and would be separated from the Class itself, so it will be easier to make some modification inside the AI's Database and easier to manage. And then i'll try to improve the UX Design inside, so that the user can have a feeling about how 'Human' this AI. InputReader Class In this class, pretty much the same as how the name of the class is writt

University Database System

Implementasi sebuah sistem database dengan menggunakan OOP dan disertai oleh File Handling, terdapat 8 rancangan class : Database (Class yang memiliki kemiripan dengan CRUD system) MainMenu (Menu utama tempat user berinteraksi) PeminjamanBuku (Class Peminjaman yang dapat dimodifikasi) MataKuliah (Class MataKuliah yang dapat dimodifikasi) Orang (Class yang menjadi parent dari Pegawai, Dosen, Mahasiswa) Pegawai Dosen Mahasiswa Source Code (*yang dicantumkan adalah source code inti, source code yang sifatnya dinamis. Selain Database, MainMenu, Orang, PeminjamanBuku, dan MataKuliah) Database import java.io.File; import java.io.IOException; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.FileReader; import java.io.BufferedReader; import java.util.Scanner; /**  *  *  * @author Satria Ade Veda Karuniawan  * @version 0.1  */ public class Database {     public Database()     {     }         public void Add(String text, Str

Image Viewer GUI

Implementasi Object-Oriented Programming dari Image Viewer yang berfungsi untuk melakukan load sebuah gambar dan memungkinkan dilakukannya manipulasi gambar. Library Java yang digunakan dalam project ini antara lain : Awt (Event, Image) Swing File IO Class yang diimplementasikan antara lain : ImageViewer (Sebagai main class yang melakukan display image pada aplikasi GUI) ImagePanel (Sebagai class yang menampilkan OFImage serta menambah functionality) ImageFileManager (Sebagai class utility untuk melakukan load image) OFImage (Sebagai class yang mendefinisikan image sebagai object) Source Code ImageViewer import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.swing.*; import java.io.File; /**  *  * @author Satria Ade Veda Karuniawan  * @version 1.0  */ public class ImageViewer {     // static fields:     private static final String VERSION = "Version 1.0";     private static JFileChooser fileChooser = new JFi