Run it! Make sure you understand how it works!
/** * Describes any class whose objects can be measured. */ public interface Measurable { /** * Computes the measure of the object. */ double getMeasure(); }
/** * Keeps track of OBJECT with greatest value */ public class DataSet { private Measurable maximum; /** * Constructs an empty data set. */ public DataSet() { maximum = null; } /** * Checks for new object of greater value */ public void add(Measurable x) { if (maximum == null || maximum.getMeasure() < x.getMeasure()) maximum = x; } /** * Gets the largest of the added data. */ public Measurable getMaximum() { return maximum; } }
/** * A bank account has a balance that can be changed by * deposits and withdrawals. */ public class BankAccount implements Measurable { private double balance; private static int nextAccountNumber=0; private int accountNumber; /** * Constructs a bank account with a zero balance */ public BankAccount() { balance = 0; nextAccountNumber++; accountNumber = nextAccountNumber; } /** * Constructs a bank account with a given balance */ public BankAccount(double initialBalance) { balance = initialBalance; nextAccountNumber++; accountNumber = nextAccountNumber; } /** * Deposits money into the bank account. */ public void deposit(double amount) { double newBalance = balance + amount; balance = newBalance; } /** * Withdraws money from the bank account. */ public void withdraw(double amount) { double newBalance = balance - amount; balance = newBalance; } /** * Gets the current balance of the bank account. */ public double getMeasure() { return balance; } /** * Return the account number */ public int getAccountNumber() { return accountNumber; } }
/** * A coin with a monetary value. */ public class Coin implements Measurable { private double value; private String name; /** * Constructs a coin. */ public Coin(double aValue, String aName) { value = aValue; name = aName; } /** * Gets the coin name. */ public String getName() { return name; } /** * Gets coin value. */ public double getMeasure() { return value; } }
/** * This program tests the DataSet class. */ public class DataSetTest { public static void main(String[] args) { /*** new coins ***/ Coin coin1 = new Coin(0.25, "quarter"); Coin coin2 = new Coin(0.10, "dime"); Coin coin3 = new Coin(0.01, "penny"); Coin coin4 = new Coin(0.05, "nickel"); DataSet coinData = new DataSet(); coinData.add(coin1); coinData.add(coin2); coinData.add(coin3); coinData.add(coin4); Coin maxCoin = (Coin) coinData.getMaximum(); System.out.println("Highest coin value = " + maxCoin.getMeasure()); System.out.println("Highest coin name = " + maxCoin.getName()); /*** new bank acconts ***/ BankAccount b1 = new BankAccount(25); BankAccount b2 = new BankAccount(10000); BankAccount b3 = new BankAccount(9000); DataSet bankData = new DataSet(); bankData.add(b1); bankData.add(b2); bankData.add(b3); BankAccount maxAccount = (BankAccount) bankData.getMaximum(); System.out.println("Highest account value = " + maxAccount.getMeasure()); System.out.println("Highest account value number = " + maxAccount.getAccountNumber()); } }