Auction Aplication PBO TUGAS 3
oleh : Ichsanul aulia
05111840007001
pada kesempatan kali ini saya ingin menulis tentang program lelang sederhana.
05111840007001
1. auction
/**
* Write a description of class Auction here.
*
* @author Ichsanul_aulia
* @version 1026
*/
import java.util.ArrayList;
public class Auction
{
// List barang yang akan dilelang
private ArrayList<Lot> lots;
// Nomor barang yang akan dilelang
private int nextLotNumber;
// Mengadakan pelelangan baru
public Auction()
{
lots = new ArrayList<Lot>();
nextLotNumber = 1;
}
// Masukkan barang yang akan dilelang
public void enterLot(String description)
{
lots.add(new Lot(nextLotNumber, description));
nextLotNumber++;
}
// Menampilkan barang yang akan dilelang
public void showLots()
{
for (Lot lot: lots)
{
System.out.println(lot.toString());
}
}
/**
* Membuat penawaran
* @param lotNumber = nomor barang yang akan dilelang
* @param bidder = nama penawar
* @param value = harga yang ditawarkan
*/
public void makeABid(int lotNumber, Person bidder, long value)
{
Lot selectedLot = getLot(lotNumber);
if (selectedLot != null)
{
Bid bid = new Bid(bidder, value);
boolean successful = selectedLot.bidFor(bid);
if (successful)
{
System.out.println("Penawaran untuk barang nomor " + lotNumber + " berhasil.");
}
else
{
// Memberi tahu tawaran mana yang lebih tinggi
Bid highestBid = selectedLot.getHighestBid();
System.out.println("Nomor barang: " + lotNumber + " telah menerima tawaran: " + highestBid.getBid());
}
}
}
/**
* Return barang yang sudah diberi nomor
* Return NULL jika barang dengan nomor tersebut tidak ada
* @param lotNumber = nomor barang yang di-return
*/
public Lot getLot(int lotNumber)
{
if ((lotNumber >= 1) && (lotNumber < nextLotNumber))
{
// Nomor harus valid
Lot selectedLot = lots.get(lotNumber - 1);
// Cek apakah barang benar
if (selectedLot.getNumber() != lotNumber)
{
System.out.println("Error internal: Nomor barang " + selectedLot.getNumber() + " was returned instead of " + lotNumber);
// Tidak me-return barang invalid
selectedLot = null;
}
return selectedLot;
}
else
{
System.out.println("Nomor barang: " + lotNumber + " tidak ada.");
return null;
}
}
// Menutup pelelangan dan mencetak hasilnya
public void close()
{
System.out.println("Lelang ditutup.");
for (Lot lot: lots)
{
System.out.print(lot.getNumber() + ": " + lot.getDescription());
if (lot.getHighestBid() == null)
{
System.out.println("(Tidak ada penawaran)");
}
else
{
Bid highestBid = lot.getHighestBid();
System.out.println(" terjual kepada " + highestBid.getBidder().getName() + " seharga " + highestBid.getBid());
}
}
}
}
2. person
/**
* Write a description of class Person here.
*
* @author Ichsanul_aulia
* @version 1026
*/
public class Person
{
// Nama penawar
private final String name;
/**
* Menambahkan "person" baru sesuai data penawar
* @param name = nama penawar
*/
public Person(String name)
{
this.name = name;
}
/**
* @return Nama penawar
*/
public String getName()
{
return name;
}
}
3. Bid
/**
* Write a description of class Bid here.
*
* @author (your name)
* @version (a version number or a date)
*/
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;
}
}
4.Lot
/**
* Write a description of class Lot here.
*
* @author Ichsanul_aulia
* @version 1026
*/
public class Lot
{
// Nomor "unik" barang untuk identifikasi
private final int number;
// Deskripsi barang
private String description;
// Penawaran tertinggi sementara
private Bid highestBid;
/**
* Mengatur nomor dan deskripsi barang
* @param number = nomor barang
* @param description = deskripsi barang
*/
public Lot(int number, String description)
{
this.number = number;
this.description = description;
this.highestBid = null;
}
/**
* Percobaan penawaran barang
* Penawaran dianggap berhasil apabila harga yang ditawarkan lebih tinggi dari penawaran lain
* @param bid = penawaran baru
* @return true jika berhasil, false jika gagal
*/
public boolean bidFor(Bid bid)
{
if (highestBid == null) {
// Belum ada penawaran
highestBid = bid;
return true;
}
else if (bid.getBid() > highestBid.getBid())
{
// Penawaran lebih tinggi dari penawaran sebelumnya
highestBid = bid;
return true;
}
else
{
// Penawaran lebih rendah dari penawaran sebelumnya
return false;
}
}
/**
* @return Detail barang lelang
*/
public String toString()
{
String details = number + ": " + description;
if (highestBid != null)
{
details += " Bid: " + highestBid.getBid();
}
else
{
details += " (No bid)";
}
return details;
}
/**
* @return Nomor barang
*/
public int getNumber()
{
return number;
}
/**
* @return Deskripsi barang
*/
public String getDescription()
{
return description;
}
/**
* @return Penawaran tertinggi. Bernilai null jika belum ada tawaran.
*/
public Bid getHighestBid()
{
return highestBid;
}
}
mari kita jalankan
1. pertama kita compile dulu class Aucion java, kemudian klik kanan dan pilih new Auction(). disini saya memberi nama auction 3.
2.klik kanan pada auction 3, dan pilih enter lot() untuk memasukkan nama barang dalam string. ingat untuk memakai tanda petik. disini saya memakai "gucci" untuk ditambahkan. untuk melihat barang yang sudah dimasukkan klik kanan pada auction dan pilih showlots().
3. untuk melakukan penawaran perlu diinisiasi kelas person. klik kananpada person dan pilih new person(String name). disini saya memberikan person3 bernama slamet. jangan lupa menggunakan "".
4. kemudian melakukan penawaran. klik kanan pada auction3 dan pilih makeBid().
masukkan nomor barang. gucci nomor 1. urutan person, slamet person3. dan jumlah tawaran.
maka tawaran selesai. tampilkan pada auction klik kanan dan pilih showlots().
kemidian dapat close dimenu auction pilih close().
dan begitulah pengimplikasian applikasi lelang sederhana. sampai jumpa, dan terimakasih.
Komentar
Posting Komentar