Nama: Bobbi Aditya
NRP : 05111740000099
Kelas: PBO-A
Pada tugas kali ini, saya akan membuat sistem perlelangan. Pada sistem yang saya buat, kita harus membuat sebuah object auction, kemudian menambahkan item apa yang akan dilelangkan. Setelah itu kita menambahkan person/orang yang ingin melakukan bid(penawaran) terhadap item yang dilelangkan. Setelah orang tersebut terdaftar dalam sistem perlelangan, orang tersebut dapat melakukan bid terhadap item yang dilelangkan.
Berikut gambar dari BlueJ
Adapun Source code untuk masing masing object yang saya buat:
1. Auction
import java.util.ArrayList;
/**
* Auction Model
* @author Bobbi Aditya
* @version 1.0
* 05111740000099
*/
public class Auction
{
private ArrayList<Lot> lots;//list barang dalam suatu auction
private int LotNumber;
public Auction()//Method membuat Auction baru
{
lots = new ArrayList<Lot>();//list barang
LotNumber = 1;//nomor barang awal adalah 1
}
public void enterLot(String description)
{//Method untuk menambahkan barang baru dalam auction
lots.add(new Lot(LotNumber, description));
LotNumber++;
}
public void showLots()
{//Method menampilkan seluruh barang yang dilelang
for(Lot lot : lots) {
System.out.println(lot.detail());
}
}
/**
* Method untuk melakukan bid/tawaran.
* Jika berhasil melakukan bid akan muncul Success Message.
* CurrentlotNumber = id lot yang akan di Bid.
* bidder = orang yang akan menawar.
* value = harga tawaran.
*/
public void MakeBid(int CurrentlotNumber, Person bidder, long value)
{
Lot selectedLot = getLot(CurrentlotNumber);
if(selectedLot != null) {
boolean check = selectedLot.bidFor(new Bid(bidder, value));
if(check) {//check dengan bid sebelumnya, apakah lebih besar atau tidak
System.out.println("Bid untuk lot nomor " +
CurrentlotNumber + " berhasil dilakukan" + " Bid dilakukan oleh " +bidder.getName()+ "dengan harga " +value+ "$");
}
else {//apabila bid sebelumnya lebih besar, maka bid ini akan gagal
Bid highestBid = selectedLot.getHighestBid();
System.out.println("Lot nomor : " + CurrentlotNumber +
" dengan bid tertinggi: " +
highestBid.getBid());
}
}
}
/**
* Return id lot jika ada, jika tidak return null
* CurrentlotNumber = id lot yang perlu di return
*/
public Lot getLot(int CurrentlotNumber)
{
if((CurrentlotNumber >= 1) && (CurrentlotNumber < LotNumber)) {//cek apabila lot number ada atau tidak
Lot selectedLot = lots.get(CurrentlotNumber - 1);
if(selectedLot.getId() != CurrentlotNumber) {
System.out.println("Internal error : Lot nomor " +
selectedLot.getId() +
"telah dikembalikan, bukan lot nomor " +
CurrentlotNumber);
selectedLot = null;
}
return selectedLot;
}
else {//apabila tidak ada print tidak ada
System.out.println("Lot nomor : " + CurrentlotNumber +
" tidak ada.");
return null;
}
}
public void close()
{
System.out.println("pelelangan berakhir.");
for(Lot lot : lots)
{
System.out.println(lot.getId() + ": " +lot.getDescription());
Bid bid = lot.getHighestBid();
if (bid==null)
{
System.out.println("Tidak ada bid untuk lot ini");
}
else
{
System.out.println("Item ini terjual kepada" +
bid.getBidder().getName() + " dengan harga : "
+ bid.getBid());
}
}
}
}
2. Person /**
* Person Model
* @author Bobbi Aditya
* @version 1.0
* 05111740000099
*/
public class Person
{
private final String name;//variabel string untuk menyimpan nama orang
public Person(String newName)
{//membuat nama orang baru
this.name = newName;
}
public String getName()
{//Method untuk return nama orang yang baru saja dibuat
return name;
}
}
3.Bid /**
* Bid Model
* @author Bobbi Aditya
* @version 1.0
* 05111740000099
*/
public class Bid
{
private final Person bidder;//orang yang akan melakukan tawaran
private final long value;//untuk menyimpan harga tawaran
public Bid(Person bidder, long value)
{//Method untuk membuat penawar baru dengan nama dan jumlah tawaran nya
this.bidder = bidder;
this.value = value;
}
public Person getBidder()
{//untuk return nama penawar
return bidder;
}
public long getBid()
{//untuk return harga tawaran nya
return value;
}
}
4. Lot /**
* Lot Model
* @author Bobbi Aditya
* @version 1.0
* 05111740000099
*/
public class Lot//method untuk membuat Lot(sebuah/ sekumpulan item di sebuah auction)
{
private final int Id;//id barang(unique)
private String description;//deskripsi barang
private Bid highestBid;//tawaran tertinggi untuk barang tersebut
public Lot(int number, String description)
{//buat lot baru dengan id dan deskripsi
this.Id = number;
this.description = description;
}
//parameter nya merupakan bid untuk cek harga bid sebelumnya
public boolean bidFor(Bid bid)
{//Method untuk mengecek apakah tawaran saat ini lebih besar dari tawaran tertinggi
if((highestBid == null) ||
(bid.getBid() > highestBid.getBid())) {
highestBid = bid;//jika ya maka tawaran ini adalah tawaran tertinggi yang baru
return true;
}
else {
return false;
}
}
public String detail()
{//method untuk return detail lot(id dan tawaran tertinggi)
String details = Id + ": " + description;
if(highestBid != null) {
details += " Bid dengan harga " +
highestBid.getBid();
}
else {
details += " (belum ada bid)";
}
return details;
}
public int getId()
{//Method untuk return id lot
return Id;
}
public String getDescription()
{//Method untuk return deskripsi dari lot
return description;
}
public Bid getHighestBid()
{//Method untuk return tawaran tertinggi dari lot
return highestBid;
}
}
Hasil dari Program saya bisa dilihat di screenshot berikut ini:
Pertama saya menambahkan item yang ingin dilelangkan
Kedua saya mengecek apakah item tersebut sudah terdaftar
Ketiga saya menambahkan orang yang ingin membeli item tersebut
Keempat saya melakukan bid terhadap item yang dijual
Yang terakhir, saya menutup perlelangan tersebut, dan hasilnya adalah
Comments
Post a Comment