Skip to main content

Java Auction Project

Post kali ini membahas tentang Auction Project dengan menggunakan bahasa Pemrograman Java dan BlueJ. Auction Project memodelkan bagian dari operasi sebuah sistem pelelangan online. Ideanya adalah pelelangan terdiri atas kumpulan dari barang-barang yang ditawarkan untuk dijual.

Auction Project terdiri dari kelas-kelas sebagai berikut:

- Auction
- Bid
- Lot
- Person

Berikut ini adalah gambar kelas diagram dari Auction Project.


The Auction Class

Kelas Auction adalah sebuah model sederhana dari pelelangan. Kelas ini berfungsi memelihara daftar barang. Sebuah objek Auction adalah titik mulai dari proyek. Orang-orang ingin untuk menjual barang mereka lewat auction melalui metode enterLot, menggunakan deskripsi string. Lalu, objek Auction membuat objek Lot untuk setiap barang yang dimasukkan.
Ketika seseorang ingin menawar barang, bisa digunakan method makeABid, memasukkan nomor barang yang diinginkan, objek person, dan berapa banyak mereka ingin menawar. 

Implementation of the Auction Class

import java.util.ArrayList;

/**
 * A simple model of an auction.
 * The auction maintains a list of lots of arbitrary length.
 *
 * @author Ramadhan Arif Hardijansyah
 * @version 0.1 23 Oktober 2020
 */
public class Auction
{
    // instance variables
    // 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;

    /**
     * Constructor for objects of class Auction
     * Create a new auction
     */
    public Auction()
    {
        // initialise instance variables
        lots = new ArrayList<>();
        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());
        }
    }
    
    /**
     * Make a bid for a lot.
     * A message is printed indicating wheter the bid is
     * successful or not.
     *
     * @param  lotNumber  The lot being bid for.
     * @param  bidder  The person bidding for the lot.
     * @param  value  The value of the bid.
     */
    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("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 doesn't 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;
        }
    }
}

The Lot Class

Kelas Lot menyimpan despkripsi dari barang, nomor barang, dan detail dari penawaran tertinggi yang diterima sejauh ini. Bagian kompleks dari kelas ini adalah metode BidFor. Ini terjadi ketika seseorang membuat penawaran untuk suatu barang. Ketika penawaran dilakukan, penting untuk mengecek apakah penawaran yang baru lebih besar dari penawaran yang sudah ada untuk barang tesebut.

/**
 * A class to model an item (or set of items) in an
 * auction: a lot.
 *
 * @author Ramadhan Arif Hardijansyah
 * @version 0.1 23 Oktober 2020
 */
public class Lot
{
    // instance variables
    // 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;

    /**
     * Constructor for objects of class Lot
     * 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 descrition)
    {
        // initialise instance variables
        this.number = number;
        this.description = description;
        this.highestBid = null;
    }

    /**
     * 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)
        {
            // There is no previous bid.
            highestBid = bid;
            return true;
        }
        else if (bid.getValue() > highestBid.getValue())
        {
            // The bid is better than the previous one.
            highestBid = bid;
            return true;
        }
        else
        {
            // The bid is not better.
            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 currrent bid.
     */
    public Bid getHighestBid()
    {
        return highestBid;
    }
}

The Bid Class

Kelas Bid berfungsi untuk merekam jumlah uang dan orang yang menawarkan uang tersebut. Karena itulah kita melihat ada hubungan dari kelas Bid ke kelas Person
/**
 * A class that models an auction bid.
 * It contains a reference to the Person bidding and the amount of bid.
 *
 * @author Ramadhan Arif Hardijansyah
 * @version 0.1 23 Oktober 2020
 */
public class Bid
{
    // instance variables
    // 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;

    /**
     * Constructor for objects of class Bid
     * Create a bid.
     * @param  bidder  Who is bidding for the lot.
     * @param  value  The value of the bid.
     */
    public Bid(Person bidder, long value)
    {
        // initialise instance variables
        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;
    }
}

The Person Class

Untuk menawar barang, orang-orang harus mendaftar di rumah pelelangan. Dalam program kita, penawar direpresentasikan dengan objek Person. Objek ini harus dibuat secara independen. Objek Person berisi nama orang.
/**
 * Maintain details of someone who participates in an auction.
 *
 * @author Ramadhan Arif Hardijansyah
 * @version 0.1 23 Oktober 2020
 */
public class Person
{
    // The name of this person.
    private final String name;

    /**
     * Constructor for objects of class Person
     * Create a new person with the given name.
     * @param name The person's name.
     */
    public Person(String name)
    {
        // initialise instance variables
        this.name = name;
    }

    /**
     * A method to return the person's name
     *
     * @return    The person's name.
     */
    public String getName()
    {
        return name;
    }
}
Untuk mencoba Auction Project adalah sebagai berikut.
1. Klik kanan kelas Auction >> new Auction().
2. Beri nama instance, misal : auction1.
3. Klik kanan pada bagian bawah kotak auction1:Auction berwarna merah yang terletak di bawah.
4. Klik void enterLot(String description), beri deskripsi misal: "Meja".
5. Klik showLot(), setelah itu terlihat terminal sebagai berikut.
6. Klik kanan kelas Person >> klik new Person(String name).
7. Beri nama person, misal :  "Budi".
8. Klik kanan kotak merah auction1.
9. Klik void makeABid(...).
    Isi pelelangan, misal:
    Lalu terlihat pada jendela terminal sebagai berikut.
8. Lalu, kita bisa mengecek lagi bid tertinggi dengan klik kanan lagi pada kotak auction1 yang berwarna merah dan pilih void showLots(). Dan akan terlihat jendela sebagai berikut.
Sekian post tentang Java Auction Project. Semoga bermanfaat.

Comments

Popular posts from this blog

Java Exception Handling

Postingan ini membahas sebuah program tambahan tentang exception handling . Disini seolah-olah bertindak sebagai tester. Dan program yang akan dimodifikasi adalah program SimpleCalculator . Program SimpleCalculator adalah sebuah program kalkulator sederhana yang menggunakan switch..case dalam Java. Program bisa melakukan operasi pertambahan, pengurangan, perkalian, dan pembagian. Program SimpleCalculator ini dibuat menggunakan bahasa pemrograman Java dan bisa di-compile menggunakan IDE BlueJ. Dalam aplikasi ini, dicoba untuk ditambahkan catch exception untuk mengetes bagimana pembagian suatu angka dengan angka nol. Dicari modul kelas yang merupakan operasi pembagian dan dimodifikasi agar bisa mengetes operasi pembagian dengan penyebut angka nol. Exception Handling Exception Handling adalah sebuah proses menanggapi terjadinya exception, menangani runtime error seperti ClassNotFound, IO, SQL, Remote , dsb.  Exception adalah suatu kondisi tidak normal yang membutuhkan pemrosesan khu

Website Registrasi Kuliah Tatap Muka

  Postingan berikut menjelaskan dokumentasi proses pembuatan website registrasi kuliah tatap muka. Website di-hosting menggunakan github pages yang dapat meng-host  static webpages . Link Website Catalog Product:  https://dani-ramadhan7.github.io/registrasi/index.html Langkah-Langkah Pembuatan Website Registrasi Kuliah Tatap Muka 1. Ikuti langkah-langkah pada website pembelajaran. Salah satu website yang cukup bagus untuk dipelajari adalah  belajarphp.net/tutorial-validasi-form-menggunakan-html-dan-javascript/ . Coba untuk menulis ulang contoh kode pada modul pembelajaran atau langsung memilih bagian-bagian kode yang diinginkan untuk digunakan. 2. Buat file html baru, buat page html dengan acuan modul pembelajaran. Lakukan modifikasi dan penambahan. HTML JavaScript 3. Untuk desain, digunakan file css sebagaimana yang digunakan pada website, yakni menggunakan  https://stackpath.bootstrapcdn.com/bootstrap/

Website Pendaftaran Siswa Baru

Postingan berikut menjelaskan dokumentasi website Pendaftaran Siswa Baru. Website di-hosting di local PC menggunakan XAMPP serta menggunakan MySQL untuk menangani database dari para pendaftarnya. Halaman Utama Pendaftar dapat melakukan pendaftaran pada menu Daftar Baru atau melihat list pendaftar pada bagian Pendaftar. Formulir Pendaftaran Siswa Baru Disini, siswa dapat mengisikan formulir pendaftaran dan men-submit. Menu Pendaftar Menu Pendaftar isi menyajikan tabel yang berisi siswa yang telah mendaftar. Dapat dilakukan tindakan Edit atau Hapus pada setiap baris. Formulir Edit Siswa Formulir Edit Siswa menyajikan formulir untuk mengedit data siswa yang telah mendaftar. Setelah melakukan edit, dapat menekan tombol Simpan untuk menyimpan data siswa yang telah diperbarui. Source Code Untuk source code dari website Pendaftaran Siswa Baru ini adalah sebagai berikut. Link GitHub Gist:  https://gist.github.com/dani-ramadhan7/7838e42982a0488fcc170