Chapter 6: Coin and Purse ADTs

Make the following changes to the Purse ADT:

import java.util.ArrayList;

/**
   A purse holds a collection of coins.
*/
public class Purse
{
   /**
      Constructs an empty purse.
   */
   public Purse()
   {
      coins = new ArrayList();
   }

   /**
      Add a coin to the purse.
      @param aCoin the coin to add
   */
   public void add(Coin aCoin)
   {
      coins.add(aCoin);
   }

   /**
      Get the total value of the coins in the purse.
      @return the sum of all coin values
   */
   public double getTotal()
   {
      double total = 0;
      for (int i = 0; i < coins.size(); i++)
      {
         Coin aCoin = (Coin)coins.get(i);
         total = total + aCoin.getValue();       
      }
      return total;
   }

   private ArrayList coins;
}

/**
A coin with a monetary value.
 */
public class Coin
{
    /**
    Constructs a coin.
    @param aValue the monetary value of the coin.
    @param aName the name of the coin
     */
    public Coin(double aValue, String aName)
    {
        value = aValue;
        name = aName;
    }

    /**
    Gets the coin value.
    @return the value
     */
    public double getValue()
    {
        return value;
    }

    /**
    Gets the coin name.
    @return the name
     */
    public String getName()
    {
        return name;
    }

    public boolean equals(Object otherObject)
    {
        Coin other = (Coin)otherObject;
        return name.equals(other.name)
        && value == other.value;
    }

    private double value;
    private String name;
}

Modify the Purse class to be implemented with ArrayList<Coin> and to use a for-each loop.
Implement the following methods in the Purse class:

 /**
      Counts the number of coins in the purse
      @return the number of coins
   */
   public int count()
   {
     
   }

   /**
      Tests if the purse has a coin that matches
      a given coin.
      @param aCoin the coin to match
      @return true if there is a coin equal to aCoin
   */
   public boolean find(Coin aCoin)
   {

   }

   /**
      Counts the number of coins in the purse that match
      a given coin.
      @param aCoin the coin to match
      @return the number of coins equal to aCoin
   */
   public int count(Coin aCoin)
   {

   }

   /**
      Finds the coin with the largest value. 
      (Precondition: The purse is not empty)
      @return a coin with maximum value in this purse
   */
   pulic Coin getMaximum()
   {

   }

/**
      Adds coins in the purse - use for-each loop
      Comment on this implementation
      if any issues come up.
   */
   public void addCoin(ArrayList<Coin> aCoins)
   {
     
   }

/**
      Deletes coins in the purse - use for-each loop to find all "coins"
      Comment on this implementation if any issues come up.
      @return an object of Coin      
   */
   public Coin deleteCoin(Coin aCoin)
   {
     
   }

Finally, write a driver, PurseTest.java to demonstrate the behavior of the for-each loop performance. Comment on any issues that might arise.

Submit the files in a zip folder(compressed) or a link to GitHub.