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
Post a Comment