PBO6 - Membuat Sistem Pelelangan dengan Grouping Objects
TUGAS 6 - Pemrograman Berbasis Objek
Membuat sistem lelang (Auction) dengan menggunakan Grouping Objects dalam program BlueJ
Nama : Bastian Farandy
NRP : 05111740000190
Kelas : Pemrograman Berbasis Objek A
Membuat sistem lelang (Auction) dengan menggunakan Grouping Objects dalam program BlueJ
Nama : Bastian Farandy
NRP : 05111740000190
Kelas : Pemrograman Berbasis Objek A
Source Code :
Auction
import java.util.ArrayList;
/**
* Model Auction
* Author : Bastian Farandy
* NRP : 05111740000190
*/
public class Auction
{
private ArrayList<Lot> lots; //membuat sebuah list barang dalam suatu auction
private int LotNumber;
//fungsi untuk membuat Auction yang baru
public Auction()
{
lots = new ArrayList<Lot>(); //membuat list barang
LotNumber = 1; //nomor barang dimulai dari 1
}
//fungsi untuk menambahkan barang baru ke dalam Auction
public void enterLot(String deskripsi)
{
lots.add(new Lot(LotNumber, deskripsi));
LotNumber++;
}
//fungsi untuk melakukan penawaran (bid)
public void MakeBid(int CurrentlotNumber, Person bidder, long value)
{
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());
}
//memerika 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());
}
}
}
//fungsi untuk menampilkan semua barang yang akan dilelang
public void showLots()
{
for(Lot lot : lots)
{
System.out.println(lot.detail());
}
}
//fungsi untuk mengambil nilai ID Lot yang dibutuhkan.
public Lot getLot(int CurrentlotNumber)
{
//periksa apakah LotNumber ada atau tidak
if((CurrentlotNumber >= 1) && (CurrentlotNumber < LotNumber))
{
Lot selectedLot = lots.get(CurrentlotNumber - 1);
//jika Id Lot berbeda dengan CurrentlotNumber
if(selectedLot.getId() != 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;
}
}
//fungsi untuk menutup atau menyelesaikan program.
public void close()
{
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
//fungsi untuk membuat sebuah Lot(list barang dalam pelelangan)
public class Lot
{
private final int Id; //id barang
private String deskripsi; //deskripsi barang
private Bid highestBid; //tawaran tertinggi untuk barang tersebut
public Lot(int number, String deskripsi)
{//buat lot baru dengan id dan deskripsi
this.Id = number;
this.deskripsi = deskripsi;
}
//fungsi untuk mengembalikan nilai dari lot (id beserta tawaran tertinggi)
public String detail()
{
String details = Id + ": " + deskripsi;
if(highestBid != null) {
details += " Penawar tertinggi : " +
highestBid.getBid();
}
else {
details += " tidak ada penawaran.";
}
return details;
}
//fungsi untuk mengembalikan id lot
public int getId()
{
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;
}
}
//fungsi untuk mengembalikan deskripsi dari lot
public String getDescription()
{
return deskripsi;
}
//fungsi untuk mengembalikan nilai tawaran tertinggi dari lot
public Bid getHighestBid()
{
return highestBid;
}
}
Bid
public class Bid
{
private final Person bidder; //orang yang akan melakukan tawaran
private final long value; //untuk menyimpan harga tawaran
//fungsi untuk membuat penawar baru dengan nama beserta jumlah tawarannya
public Bid(Person bidder, long value)
{
this.bidder = bidder;
this.value = value;
}
//fungsi untuk mengembalikan nama penawar
public Person getBidder()
{
return bidder;
}
//fungsi untuk mengembalikan harga tawar
public long getBid()
{
return value;
}
}
Person
public class Person
{
//variabel berbentuk string untuk menyimpan nama orang
private final String name;
//fungsi untuk membuat nama orang baru
public Person(String newName)
{
this.name = newName;
}
//fungsi untuk mengembalikan nama orang yang sudah dibuat
public String getName()
{
return name;
}
}
Screenshot
Keterangan :
- "Xpander" dan "Ignis" dimasukkan kedalam Auction dengan fungsi "void enterLot".
- "Jane" dan "Bane" ditambahkan sebagai orang dengan fungsi "new Person" dalam class person.
- "Jane" melakukan penawaran terhadap Xpander sebesar 225
- Lot Sekarang : Xpander sebesar 225, Ignis belum ada penawaran
- "Bane" melakukan penawaran terhadap Xpander sebesar 275
- Lot Sekarang : Xpander sebesar 275, Ignis belum ada penawaran
- "Jane" melakukan penawaran terhadap Ignis sebesar 195
- Lot Sekarang : Xpander sebesar 275, Ignis sebesar 195
- "Bane" melakukan penawaran terhadap Ignis sebesar 230
- Lot Sekarang : Xpander sebesar 275, Ignis sebesar 230
- "Jane" melakukan penawaran terhadap Ignis sebesar 315
- Lot Sekarang : Xpander sebesar 275, Ignis sebesar 315
- fungsi "close()" pada class Auction dijalankan.
- Pelelangan dihentikan. Xpander terjual kepada Bane sebesar 275, Ignis kepada Jane sebesar 315
Comments
Post a Comment