PBO 6-Membuat Simulasi Lelang
Tugas 6 PBO-A
Pada kali ini saya belajar untuk membuat simulasi lelang menggunakan BlueJ.
Disini saya menggunakan 4 kelas yaitu:
Simulasi lelang :
Pertama yaitu membuat barang yang akan dilelang dan membuat orang yang akan melakukan penawaran.
Lalu person 1 dan person 2 akan bid :
Pada kali ini saya belajar untuk membuat simulasi lelang menggunakan BlueJ.
Disini saya menggunakan 4 kelas yaitu:
- Bid
- Auction
- Lot
- Person
- Bid
/**
* Bid
* Author Samuel Marcellinus
* NRP 05111740000134
*/
public class Bid
{
//fungsi untuk orang yang akan membuat Bid.
private final Person bidder;
private final long value;
public Bid(Person bidder, long value)
{
//fungsi untuk membuat Bid.
this.bidder = bidder;
this.value = value;
}
public Person getBidder()
{
//fungsi untuk mengembalikan nama penawar.
return bidder;
}
public long getBid()
{
//fungsi untuk mengembalikan harga tawar
return value;
}
}
- Auction
/**
* Auction
* Author : Samuel Marcellinus
* NRP : 05111740000134
*/
import java.util.ArrayList;
public class Auction
{
//list dari lot
private ArrayList<Lot> lots;
private int LotNumber;
public Auction()
{
//fungsi untuk membuat Auction
lots = new ArrayList<Lot>(); //membuat list barang
LotNumber = 1; //nomor barang dimulai dari 1
}
public void enterLot(String deskripsi)
{
//fungsi untuk menambahkan barang baru ke dalam Auction
lots.add(new Lot(LotNumber, deskripsi));
LotNumber++;
}
//fungsi untuk melakukan penawaran (bid)
public void MakeBid(int CurrentlotNumber, Person bidder, long value)
{
//fungsi untuk melakukan bid
Lot selectedLot = getLot(CurrentlotNumber);
if(selectedLot != null)
{
//boolean untuk memeriksa apakan penawaran berhasil dilakukan atau tidak.
boolean periksa = selectedLot.bidFor(new Bid(bidder, value));
//memeriksa dengan penawaran sebelumnya, lebih besar atau tidak.
if(periksa)
{
System.out.println("Penawar dengan nomor Lot :" +
CurrentlotNumber + " telah berhasil dilakukan."
+ " Penawaran dilakukan oleh " +bidder.getName());
}
//memeriksa jika penawar sebelumnya lebih besar, maka penawaran gagal dilakukan.
else
{
Bid highestBid = selectedLot.getHighestBid();
System.out.println("Penawaran dengan nomor lot " + CurrentlotNumber +
" sudah ditawar sebesar : " +
highestBid.getBid());
}
}
}
public void showLots()
{
//fungsi untuk menampilkan semua barang yang akan dilelang
for(Lot lot : lots)
{
System.out.println(lot.detail());
}
}
public Lot getLot(int CurrentlotNumber)
{
//fungsi untuk mengambil nilai ID Lot yang dibutuhkan.
if((CurrentlotNumber >= 1) && (CurrentlotNumber < LotNumber))
{
//periksa apakah LotNumber ada atau tidak
Lot selectedLot = lots.get(CurrentlotNumber - 1);
if(selectedLot.getId() != CurrentlotNumber)
{
//jika Id Lot berbeda dengan CurrentlotNumber
System.out.println("Error : Nomor Lot " +
selectedLot.getId() +
" yang ditampilkan semestinya " +
CurrentlotNumber);
selectedLot = null;
}
return selectedLot;
}
else
{
//apabila LotNumber tidak ditemukan
System.out.println("Nomor Lot : " + CurrentlotNumber +
" tidak ditemukan.");
return null;
}
}
public void close()
{
//fungsi untuk menutup program.
System.out.println("Pelelangan sudah ditutup.");
for(Lot lot : lots)
{
System.out.println(lot.getId() + ": " +lot.getDescription());
Bid bid = lot.getHighestBid();
if (bid==null)
{
System.out.println("(Tidak ada penawaran untuk lot ini.)");
}
else
{
System.out.println( "Telah dijual kepada " +
bid.getBidder().getName() + " dengan harga "
+ bid.getBid());
}
}
}
}
- Lot
/**
* Lot
* Author : Samuel Marcellinus
* NRP : 05111740000134
*/
public class Lot
{
//fungsi untuk membuat sebuah Lot
private final int Id; //untuk id barang
private String description; //untuk description barang
private Bid highestBid; //untuk penawaran tertinggi terhadap barang tersebut
public Lot(int number, String description)
{
//buat lot baru dengan id barang dan deskripsi barang
this.Id = number;
this.description = description;
}
public String detail()
{
//untuk memberikan detail mengenai penawaran tertinggi atau tidak ada penawaran
String details = Id + ": " + description;
if(highestBid != null) {
details += " Penawar tertinggi : " +
highestBid.getBid();
}
else {
details += " tidak ada penawaran.";
}
return details;
}
public int getId()
{
//fungsi untuk return id lot
return Id;
}
//parameter nya merupakan bid untuk cek harga bid sebelumnya
//fungsi untuk memeriksa apakah tawaran sekarang lebih besar daripada tawaran tertinggi
public boolean bidFor(Bid bid)
{
if((highestBid == null) || (bid.getBid() > highestBid.getBid()))
{
//jika benar, maka tawaran ini merupakan tawaran tertinggi
highestBid = bid;
return true;
}
else
{
return false;
}
}
public String getDescription()
{
//fungsi untuk mengembalikan description dari lot
return description;
}
public Bid getHighestBid()
{
//fungsi untuk mengembalikan nilai tawaran tertinggi dari lot
return highestBid;
}
}
- Person
/**
* Person
* Author : Samuel Marcellinus
* NRP : 05111740000134
*/
public class Person
{
//variabel berbentuk string untuk menyimpan nama orang
private final String name;
public Person(String newName)
{
//fungsi untuk membuat nama orang baru
this.name = newName;
}
public String getName()
{
//fungsi untuk mengembalikan nama orang yang sudah dibuat
return name;
}
}
Simulasi lelang :
Pertama yaitu membuat barang yang akan dilelang dan membuat orang yang akan melakukan penawaran.
Lalu person 1 dan person 2 akan bid :
Terima Kasih!
Comments
Post a Comment