/** 
  * a class to represents class grades
  *
  * @author - YOUR NAME
  * @version - 1.0 - DATE
  */
public class FinalExamGrade
{
   private double coding; // coding grade
   private double written; // written grade
   
   /** Default constructor, sets the two attributes to 0 
     */
   public FinalExamGrade()
   {
      this.coding = 0;
      this.written = 0;
   }
   
   /** Explicit value constructor. This constructor
     *  should set the two grades. 
     *
     *  If either of the two values is less than 0, 
     *  set both values to 0
     *
     *  @param coding The score for the coding part
     */   
   public FinalExamGrade(double coding, double written)
   {
      // Make me
   }
   
   /** Calculates the grade based on the two scores
     *  If the sum of the scores is between 90 - 100 (inc) the grade is
     *  'A'. If 80 - 89.9999 (not including 90), 'B', 70-79.9999 'C', 60-69.9999 'D'
     *  and less than 60 'F'.
     *
     *  @return The corresponding exam grade
     **********************************************************/
   public char calcGrade()
   {
		// make me
      
   }
   
   /** update will reset this object's written and coding scores based on
     *  the values being passed in. 
     *  If either score is less than 0 do not change the scores.
     *
     * @param coding The new coding score
     * @param written The new written score
     */
   public void update(double coding, double written)
   {
		// make me
   }
   
   /** 
    * equals determines if two FinalExam objects are the same.
    * 
    * The two objects are considered the same if the sum of the 
    * two individual scores is the same. For example, if one had 
    * coding: 20 and written: 50, and the next had coding: 15 and written: 55, 
    * they would be consider the same (both total 70).
    *
    * @param other The FinalExam object to compare to this FinalExam object.
    * @return true if the this FinalExam is the same as other, false otherwise.
    */
   public boolean equals (FinalExam other)
   {
      // make me  
      
   }
   
   /** makeCopy creates a new FinalExam object that is identical in values 
     * to this Grade object
     *
     *  @return  A new FinalExam with the same values as the this object.
     */
   public FinalExam makeCopy()
   {
      
		// make me    
      
   } 
   
   /** toString returns a String representation of this Grade object
     *  It is provided here to use in testing if you wish
     * 
     * @return A String representing this Grade object
     */
   public String toString()
   {
      return String.format("Written: %.2f\tCoding: %.2f", this.coding,
                           "" + this.written);
   }
   
   /** countGrade
     *
     *  This method returns the count of the letters that match
     *  the score's calcGrade value. 
     *  If the array is null or empty, return -1.
     *  For example, if the array were {'A', 'B', 'C', 'A'} 
     *  and the FinalExamGrade values were coding: 25, written: 50
	  *  this method would return 1.
     *  However, using the same array, if the FinalExamGrade values were
     *  coding 20 and written 45 this method would return 0.
     *
     *  @param arr1 The array of char values
     *  @param score The FinalExamGrade object to compare
     *  @return The count of the grade matches in the array
     */
   public static int countGrade(char [] arr1, FinalExamGrade score)
   {
  		// make me  
      
   }
}