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 :
2. Bid.java
3. Lot.java
4. Person.java
Cara Kerja
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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()); | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
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
Post a Comment