1. Auction
import java.util.ArrayList;
import java.util.Iterator;
/**
* Kelas yang menunjukkan model pelelangan (Auction).
*
* @author (Nadia Hasna).
* @version (10/8/2018).
*/
public class Auction
{
// Daftar 'Lot' pada kelas Auction.
private ArrayList<Lot> items; //items = barang yg dilelang
//Nomor yg akan diberikan pada 'item' berikutnya
private int nextItemNum;
//Buat pelelangan baru
public Auction()
{
items = new ArrayList<Lot>();
nextItemNum = 1;
}
//Masukkan 'item' baru pada pelelangan
//@param description Pendeskripsian 'item'.
public void enterItem(String description)
{
items.add(new Lot(nextItemNum, description));
nextItemNum++;
}
//List keseluruhan dari item yg terdapat pada pelelangan
public void showItems(){
for(Lot item : items){
System.out.println(item.toString());
}
}
/**
* Buat penawaran pada item.
* Output berupa penandaan apakah item berhasil dilelang/tdk.
* @param itemNum Item yg akan dilelang.
* @param penawar Orang yg akan melakukan penawaran.
* @param jumlah Jumlah brg yg dilelang.
*/
public void buatLelang(int itemNum, Person penawar, long jumlah)
{
Lot selectedItem = getItem(itemNum);
if(selectedItem != null){
Bid bid = new Bid(penawar, jumlah);
boolean successful = selectedItem.bidFor(bid);
if(successful){
System.out.println("Penawaran terhadap item bernomor " +
itemNum + " telah berhasil dilakukan.");
}
else{
//Ganti dengan penawaran yg lebih tinggi.
Bid highestBid = selectedItem.getHighestBid();
System.out.println("No Item: " + itemNum +
" telah dilelang sebesar: " +
highestBid.getJumlah());
}
}
}
//Nilai kembali dari 'item' yg telah diberi nomor
//Nilai kembali berupa null jika item tsb tidak ada.
//@param itemNum Nomor dari item yg dilelang.
public Lot getItem(int itemNum){
if((itemNum >= 1) && (itemNum < nextItemNum))
{
Lot selectedItem = items.get(itemNum - 1);
//Pemeriksaan
if(selectedItem.getNum() != itemNum) {
System.out.println("Terdapat kesalahan: Item dengan nomor " +
selectedItem.getNum() +
" telah dilelang senilai " + itemNum);
selectedItem = null;
}
return selectedItem;
}
else {
System.out.println("Item dengan nomor: " + itemNum +
" tidak valid/ tidak ada.");
return null;
}
}
}
2. Lot
/**
* Kelas untuk memodelkan serangkaian item dalam lelang.
*
* @author (Nadia Hasna).
* @version (10/8/2018).
*/
public class Lot
{
private final int num; //Nomor
private String desc; //Deskripsi untuk item
private Bid highestBid; //Penawaran tertinggi untuk saat ini
/**
* @param num Nomor item.
* @param desc Deskripsi dari item yg dilelang.
*/
public Lot(int num, String desc)
{
this.num = num;
this.desc = desc;
}
/**
* Proses penawaran untuk item ybs.
* Tawaran yang berhasil harus memiliki nilai yang lebih tinggi daripada tawaran sebelumnya.
* @param bid Pelelangan yang baru.
* @return true jika berhasil, false jika sebaliknya
*/
public boolean bidFor(Bid bid)
{
if((highestBid == null) ||
(bid.getJumlah() > highestBid.getJumlah())) {
//Penawaran yg diterima.
highestBid = bid;
return true;
}
else {
return false;
}
}
//Detail dari item yg dilelang
public String toString()
{
String details = num + ": " + desc;
if(highestBid != null) {
details += " Dilelang sebesar: " +
highestBid.getJumlah();
}
else {
details += " (Belum terlelang)";
}
return details;
}
//Nilai kembali berupa nomor item
public int getNum()
{
return num;
}
//Nilai kembali berupa deskripsi item
public String getDesc()
{
return desc;
}
/**
* @return Penawaran tertinggi untuk item ybs.
* Null apabila belum ada penawaran
*/
public Bid getHighestBid()
{
return highestBid;
}
}
3. Bit
/**
* Kelas yang memodelkan tawaran lelang (bid).
* Berisi referensi tawaran (dari class Person) dan jumlah tawaran.
*
* @author (Nadia Hasna)
* @version (10/8/2018)
*/
public class Bid
{
//'Person' membuat tawaran
private final Person penawar; //penawar = si penawar tertinggi
//Jumlah tawaran
private final long jumlah; //jumlah = jumlah tawaran
//Tawaran dibuat
public Bid(Person penawar, long jumlah)
{
this.penawar = penawar;
this.jumlah = jumlah;
}
//Nilai kembali dari 'penawar'
public Person getPenawar()
{
return penawar;
}
//Nilai kembali dari 'jumlah'
public long getJumlah()
{
return jumlah;
}
}
4. Person
/**
* Kelas yang menunjukkan partisipasi orang dalam pelelangan.
*
* @author (Nadia Hasna)
* @version (10/8/2018)
*/
public class Person
{
//Nama orang
private final String nama;
//Buat nama baru
public Person(String nama)
{ //Nama org baru yg ikut serta pelelangan
this.nama = nama;
}
//Nilai kembali dari 'nama'
public String getNama()
{
return nama;
}
}
Tidak ada komentar:
Posting Komentar