import java.util.ArrayList;

/**
 * Simple driver class that demonstrates polymorphism with a list of Grades.
 *   @author Dave Reed
 *   @version 4/15/13
 */
public class GradeDriver {

  public static double GPA(ArrayList<Grade> grades) {
     double pointSum = 0.0;
     int hourSum = 0;
     for (int i = 0; i < grades.size(); i++) {
        Grade nextGrade = grades.get(i);
        pointSum += nextGrade.gradePoints();    
        hourSum += nextGrade.hours();
     }
     return pointSum/hourSum;
  }

  //////////////////////////////////////////////////////////

  public static void main(String[] args) {
      
      Grade csc221 = new LetterGrade("A", 3);
      Grade mth245 = new LetterGrade("B+", 4);
      Grade his101 = new PassFailGrade(true, 1);
    
      ArrayList<Grade> classes = new ArrayList<Grade>(); 
    
      classes.add(csc221);
      classes.add(mth245);
      classes.add(his101);
    
      System.out.println("GPA = " + GPA(classes) );
  }
}
