Membuat simulasi Auction (Exercise 4.14 Objects-First-with-Java-A-Practical-Introduction-Using-BlueJ-David-J-Barnes), dengan class sebagai berikut :
Auction Class (sebagai class tempat terjadinya proses Auction)
Source Code :
Lot Class (sebagai class untuk mendaftarkan dan menyimpan data Lot)
Source Code :
Bid Class (sebagai penyimpan nilai/informasi Bid)
Source Code :
Person Class (sebagai penyimpan data tiap Orang)
Source Code :
Tampilan WorkSpace
- Auction Class
- Lot Class
- Bid Class (Class yang harus dilengkapi)
- Person Class (Class yang harus dilengkapi)
Auction Class (sebagai class tempat terjadinya proses Auction)
Source Code :
import java.util.ArrayList;
/**
* Class Utama tempat proses Auction dilakukan
*
* @author Satria Ade Veda Karuniawan
* @version 1.0
*/
public class Auction
{
private ArrayList<Lot> lots;
private int nextLotNumber;
//Constructor
public Auction()
{
lots = new ArrayList<Lot>();
nextLotNumber = 1;
}
//Mendaftarkan lot baru
public void enterLot(String description)
{
lots.add(new Lot(nextLotNumber, description));
nextLotNumber++;
}
//Print Semua Lot
public void showLots()
{
for(Lot lot : lots) {
System.out.println(lot.toString());
}
}
//Melakukan Bid pada suatu Lot
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("Bid untuk Lot pada urutan " +
lotNumber + " sukses didaftarkan.");
}
else {
Bid highestBid = selectedLot.getHighestBid();
System.out.println("Lot urutan ke: " + lotNumber +
" memiliki Bid sebesar: " +
highestBid.getValue());
}
}
}
//Mencari Lot yang terdaftar
public Lot getLot(int lotNumber)
{
if((lotNumber >= 1) && (lotNumber < nextLotNumber)) {
Lot selectedLot = lots.get(lotNumber-1);
if(selectedLot.getNumber() != lotNumber) {
System.out.println("Internal error: Lot urutan ke " +
selectedLot.getNumber() +
" dimunculkan, sebagai ganti dari " +
lotNumber);
selectedLot = null;
}
return selectedLot;
}
else {
System.out.println("Lot urutan ke: " + lotNumber +
" tidak ditemukan.");
return null;
}
}
}
/**
* Class Utama tempat proses Auction dilakukan
*
* @author Satria Ade Veda Karuniawan
* @version 1.0
*/
public class Auction
{
private ArrayList<Lot> lots;
private int nextLotNumber;
//Constructor
public Auction()
{
lots = new ArrayList<Lot>();
nextLotNumber = 1;
}
//Mendaftarkan lot baru
public void enterLot(String description)
{
lots.add(new Lot(nextLotNumber, description));
nextLotNumber++;
}
//Print Semua Lot
public void showLots()
{
for(Lot lot : lots) {
System.out.println(lot.toString());
}
}
//Melakukan Bid pada suatu Lot
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("Bid untuk Lot pada urutan " +
lotNumber + " sukses didaftarkan.");
}
else {
Bid highestBid = selectedLot.getHighestBid();
System.out.println("Lot urutan ke: " + lotNumber +
" memiliki Bid sebesar: " +
highestBid.getValue());
}
}
}
//Mencari Lot yang terdaftar
public Lot getLot(int lotNumber)
{
if((lotNumber >= 1) && (lotNumber < nextLotNumber)) {
Lot selectedLot = lots.get(lotNumber-1);
if(selectedLot.getNumber() != lotNumber) {
System.out.println("Internal error: Lot urutan ke " +
selectedLot.getNumber() +
" dimunculkan, sebagai ganti dari " +
lotNumber);
selectedLot = null;
}
return selectedLot;
}
else {
System.out.println("Lot urutan ke: " + lotNumber +
" tidak ditemukan.");
return null;
}
}
}
Lot Class (sebagai class untuk mendaftarkan dan menyimpan data Lot)
Source Code :
/**
* Class yang berfungsi untuk mendaftarkan serta menyimpan deskripsi Lot
*
* @author Satria Ade Veda Karuniawan
* @version 1.0
*/
public class Lot
{
//ID Lot
private final int number;
//Deskripsi dari sebuah Lot
private String description;
//Bid tertinggi dari Lot
private Bid highestBid;
//Constructor
public Lot(int number, String description)
{
this.number = number;
this.description = description;
this.highestBid = null;
}
public boolean bidFor(Bid bid)
{
if(highestBid == null) {
//Bid belum ada
highestBid = bid;
return true;
}
else if(bid.getValue() > highestBid.getValue()) {
//Bid lebih besar dari nilai Bid sebelumnya
highestBid = bid;
return true;
}
else {
//Bid lebih kecil dari nilai Bid sebelumnya
return false;
}
}
//Deskripsi rincian Lot
public String toString()
{
String details = number + ": " + description;
if(highestBid != null) {
details += " Bid: " +
highestBid.getValue();
}
else {
details += " (No bid)";
}
return details;
}
//Return ID Lot
public int getNumber()
{
return number;
}
//Return Deskripsi Lot
public String getDescription()
{
return description;
}
//Return Bid tertinggi
public Bid getHighestBid()
{
return highestBid;
}
}
* Class yang berfungsi untuk mendaftarkan serta menyimpan deskripsi Lot
*
* @author Satria Ade Veda Karuniawan
* @version 1.0
*/
public class Lot
{
//ID Lot
private final int number;
//Deskripsi dari sebuah Lot
private String description;
//Bid tertinggi dari Lot
private Bid highestBid;
//Constructor
public Lot(int number, String description)
{
this.number = number;
this.description = description;
this.highestBid = null;
}
public boolean bidFor(Bid bid)
{
if(highestBid == null) {
//Bid belum ada
highestBid = bid;
return true;
}
else if(bid.getValue() > highestBid.getValue()) {
//Bid lebih besar dari nilai Bid sebelumnya
highestBid = bid;
return true;
}
else {
//Bid lebih kecil dari nilai Bid sebelumnya
return false;
}
}
//Deskripsi rincian Lot
public String toString()
{
String details = number + ": " + description;
if(highestBid != null) {
details += " Bid: " +
highestBid.getValue();
}
else {
details += " (No bid)";
}
return details;
}
//Return ID Lot
public int getNumber()
{
return number;
}
//Return Deskripsi Lot
public String getDescription()
{
return description;
}
//Return Bid tertinggi
public Bid getHighestBid()
{
return highestBid;
}
}
Bid Class (sebagai penyimpan nilai/informasi Bid)
Source Code :
/**
* Class yang berfungsi sebagai penyimpan nilai/informasi Bid
*
* @author Satria Ade Veda Karuniawan
* @version 1.0
*/
public class Bid
{
//variable yang hanya bisa diinisialisasi 1 kali
private final Person biddername;
private final long value;
public Bid(Person name, long v)
{
this.biddername = name;
this.value = v;
}
//value nama bidder
public Person getBidder()
{
return biddername;
}
//value berupa nilai bid
public long getValue()
{
return value;
}
}
* Class yang berfungsi sebagai penyimpan nilai/informasi Bid
*
* @author Satria Ade Veda Karuniawan
* @version 1.0
*/
public class Bid
{
//variable yang hanya bisa diinisialisasi 1 kali
private final Person biddername;
private final long value;
public Bid(Person name, long v)
{
this.biddername = name;
this.value = v;
}
//value nama bidder
public Person getBidder()
{
return biddername;
}
//value berupa nilai bid
public long getValue()
{
return value;
}
}
Person Class (sebagai penyimpan data tiap Orang)
Source Code :
/**
* Class yang berfungsi untuk penyimpan data Orang
*
* @author Satria Ade Veda Karuniawan
* @version 1.0
*/
public class Person
{
//variable final untuk nama orang (1 kali inisialisasi)
private final String personname;
//constructor
public Person(String name)
{
this.personname = name;
}
//value berupa nama orang
public String getName()
{
return personname;
}
}
* Class yang berfungsi untuk penyimpan data Orang
*
* @author Satria Ade Veda Karuniawan
* @version 1.0
*/
public class Person
{
//variable final untuk nama orang (1 kali inisialisasi)
private final String personname;
//constructor
public Person(String name)
{
this.personname = name;
}
//value berupa nama orang
public String getName()
{
return personname;
}
}
Tampilan WorkSpace
Comments
Post a Comment