Auction

    Kali ini saya akan membuat sebuah program yang dapat mempresentasikan adanya sebuah perlelangan dan program ini bisa disebut sebagai Auction Program / Auction System. Di dalam perlelangan biasanya ada barang yang akan dilelang dan para peserta yang menjadi audience perlelangan, oleh karena itu mekanisme dari program ini diawali dengan memasukkan barang yang akan dilelang seperti, buku, emas, perhiasan, dll. Setelah itu memasukkan harga yang ditentukan oleh para peserta auction yang ada. Untuk diagramnya : 


1. Class Auction adalah class utama dari perlelangan.

2. Class Bid adalah class untuk menampung nilai harga tawaran yang dilakukan oleh audience dari auction tersebut.

3. Class Lot adalah class yang bertujuan untuk menampung barang yang akan dilelang.

4. Class Person adalah class yang menampung identitas audience yang mengikuti auction tersebut.

Source Code

1. Auction.java 

import java.util.ArrayList;
public class Auction
{
private ArrayList<Lot> lots; //daftar barang yg dilelang
private int LotNumber; //untuk penomoran barang
public Auction() //method membuat pelelangan baru
{
lots = new ArrayList<Lot>();
//list barang
LotNumber = 1;
//nomor barang awal adalah 1
}
public void enterLot(String description) //memasukkan barang ke daftar barang
{
lots.add(new Lot(LotNumber, description));
LotNumber++;
}
public void showLots() //menampilkan seluruh barang pelelangan
{
for(Lot lot : lots) {
System.out.println(lot.toString());
}
}
public void MakeBid(int CurrentlotNumber, Person bidder, long price)
{
Lot selectedLot = getLot(CurrentlotNumber);
if(selectedLot != null) {
boolean successful = selectedLot.bidFor(new Bid(bidder, price));
//cek dengan penawaran sebelumnya, apakah lebih besar atau tidak
if(successful) {
System.out.println("Bid untuk lot nomor " +
CurrentlotNumber + " berhasil dilakukan");
System.out.println("Bid dilakukan oleh " + bidder.getName()+
" dengan harga " + price + "$");
}
else {
//bila penawaran sebelumnya lebih besar, maka penawaran ini gagal
Bid highestBid = selectedLot.getHighestBid();
System.out.println("Lot nomor : " + CurrentlotNumber +
" dengan bid tertinggi: " + highestBid.getBid());
}
}
}
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 {
System.out.println("Lot nomor : " + CurrentlotNumber + " tidak tersedia.");
return null;
}
}
public void stopbid()
{
System.out.println("Pelelangan telah 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("Barang ini terjual kepada " +
bid.getBidder().getName() + " dengan harga :\t" + bid.getBid());
}
}
}
}
view raw gistfile1.txt hosted with ❤ by GitHub
2. Bid.java

public class Bid
{
private final Person bidder; //penawar
private final long value; //menyimpan harga tawaran
public Bid(Person bidder, long value) //menginisiasi penawar baru dengan nama dan jumlah tawaran
{
this.bidder = bidder;
this.value = value;
}
public Person getBidder()
{
return bidder;
}
public long getBid()
{
return value;
}
}
view raw gistfile1.txt hosted with ❤ by GitHub
3. Lot.java

public class Lot
{
private final int ID; // id barang(unique)
private String description; // deskripsi/nama barang
private Bid highestBid; // tawaran tertinggi untuk barang tersebut
public Lot(int number, String description)
{
this.ID = number;
this.description = description;
}
//parameter nya adalah bid utk cek harga penawaran sebelumnya
public boolean bidFor(Bid bid) //cek tawaran saat ini lebih besar dari tawaran tertinggi
{
if((highestBid == null) || (bid.getBid() > highestBid.getBid())) {
highestBid = bid; // jika tawaran baru lebih tinggi dari sebelumnya
return true;
}
else {
return false;
}
}
public String toString()
{
//method untuk return detail lot(id dan tawaran tertinggi)
String details = ID + ": " + description;
if(highestBid != null) {
details += " Bid dengan harga " + highestBid.getBid();
}
else {
details += " (Tidak ada penawaran)";
}
return details;
}
public int getID()
{
return ID;
}
public String getDescription()
{
return description;
}
public Bid getHighestBid()
{
return highestBid;
}
}
view raw gistfile1.txt hosted with ❤ by GitHub
4. Person.java

public class Person
{
private final String name; //variabel string untuk menyimpan nama bidder
public Person(String newName)
{
this.name = newName;
}
public String getName()
{
return name;
}
}
view raw gistfile1.txt hosted with ❤ by GitHub
Cara Kerja

1. Class Auction.java harus di compile agar menjadi diagram objek merah yang terdapat di bawah diagram kelas, nama boleh di isi semau kita. 


2. Setelah itu klik kanan pada diagram objek tersebut dan pilih void enterLot(String Description) untuk memasukkan barang yang di jadikan barang lelangan. 



3. Setelah di masukkan barang-barang yang ingin dilelangkan, kita bisa cek barang-barang tersebtu dengan klik kanan pada diagram objek tersebut dan pilih void showLots(). Contoh yang saya tampilkan adalah "cincin" dan "tas". Bisa dilihat bahwa belum ada penawaran dari kedua barang tersebut.



4. Karena penawaran belum dilakukan karena tidak ada audience auction, maka dari itu kita menambahkan audience tersebut dengan klik kanan pada class person dan pilih new Person(String newName), dan memasukkan nama yang diinginkan. 


5. Setelah memasukkan audience, perlelangan dapat dimulai dengan cara klik kanan pada diagram objek auction1 dan pilih void MakeBid(int CurrentlotNumber, Person bidder, long price), dengan memasukkan item keberapa, orang yang melakukan penawaran, dan harga yang akan ditawarkan. 



    Lakukan hal tersebut berulang kali dengan barang dan audience yang ada.

6. Jika perlelangan sudah dapat dicukupkan, maka hal yang dilakukan adalah klik kana pada diagram objek auction dan pilih void stopbid()



Comments

Popular Posts