first commit
This commit is contained in:
104
Semester 1/Programming 1/Java/examples/projects/chapter04/auction/Auction.java
Executable file
104
Semester 1/Programming 1/Java/examples/projects/chapter04/auction/Auction.java
Executable file
@@ -0,0 +1,104 @@
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* A simple model of an auction.
|
||||
* The auction maintains a list of lots of arbitrary length.
|
||||
*
|
||||
* @author David J. Barnes and Michael Kölling.
|
||||
* @version 2016.02.29
|
||||
*/
|
||||
public class Auction
|
||||
{
|
||||
// The list of Lots in this auction.
|
||||
private ArrayList<Lot> lots;
|
||||
// The number that will be given to the next lot entered
|
||||
// into this auction.
|
||||
private int nextLotNumber;
|
||||
|
||||
/**
|
||||
* Create a new auction.
|
||||
*/
|
||||
public Auction()
|
||||
{
|
||||
lots = new ArrayList<>();
|
||||
nextLotNumber = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enter a new lot into the auction.
|
||||
* @param description A description of the lot.
|
||||
*/
|
||||
public void enterLot(String description)
|
||||
{
|
||||
lots.add(new Lot(nextLotNumber, description));
|
||||
nextLotNumber++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the full list of lots in this auction.
|
||||
*/
|
||||
public void showLots()
|
||||
{
|
||||
for(Lot lot : lots) {
|
||||
System.out.println(lot.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a bid for a lot.
|
||||
* A message is printed indicating whether the bid is
|
||||
* successful or not.
|
||||
*
|
||||
* @param lotNumber The lot being bid for.
|
||||
* @param bidder The person bidding for the lot.
|
||||
* @param value The value of the bid.
|
||||
*/
|
||||
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("The bid for lot number " +
|
||||
lotNumber + " was successful.");
|
||||
}
|
||||
else {
|
||||
// Report which bid is higher.
|
||||
Bid highestBid = selectedLot.getHighestBid();
|
||||
System.out.println("Lot number: " + lotNumber +
|
||||
" already has a bid of: " +
|
||||
highestBid.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the lot with the given number. Return null
|
||||
* if a lot with this number does not exist.
|
||||
* @param lotNumber The number of the lot to return.
|
||||
*/
|
||||
public Lot getLot(int lotNumber)
|
||||
{
|
||||
if((lotNumber >= 1) && (lotNumber < nextLotNumber)) {
|
||||
// The number seems to be reasonable.
|
||||
Lot selectedLot = lots.get(lotNumber - 1);
|
||||
// Include a confidence check to be sure we have the
|
||||
// right lot.
|
||||
if(selectedLot.getNumber() != lotNumber) {
|
||||
System.out.println("Internal error: Lot number " +
|
||||
selectedLot.getNumber() +
|
||||
" was returned instead of " +
|
||||
lotNumber);
|
||||
// Don't return an invalid lot.
|
||||
selectedLot = null;
|
||||
}
|
||||
return selectedLot;
|
||||
}
|
||||
else {
|
||||
System.out.println("Lot number: " + lotNumber +
|
||||
" does not exist.");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user