/***********************************************
 * This class will represent a single student's grade 
 * in CS139.  It will contain everything to store and 
 * display a final grade roster for the course.
 * This grade is based on the syllabus with one exception:
 * the PA grades will be treated like lab grades.
 *
 * @author - Nancy Harris
 * @version - V1 11/27/2007
 ************************************************/
public class Grade139
{
	// attributes
	private double [] lab;
	private double midterm1;
	private double midterm2;
	private double finalExam;
	private String name;
	
	// constants
	private static final double LAB_PERCENT = .4;
	private static final double MID1_PERCENT = .15;
	private static final double MID2_PERCENT = .20;
	private static final double FINAL_PERCENT = .25;
	
	/******************************************
	 * Constructor to start a Grade139 object with
	 * only the student name
	 *
	 * @param name The name of the student
	 */
	public Grade139(String name)
	{
	}
	/**************************************************
	 * Constructor to start a filled Grade139 object
	 *
	 * @param name The name of the student
	 * @param mid1 The midterm 1 grade
	 * @param mid2 The midterm 2 grade
	 * @param finalExam The final exam grade
	 * @param lab The grade for each lab
	 */
	public Grade139(String name, double mid1, double mid2, double finalExam,
		double... lab)
	{
	}
	/**********************************************
	 * setLabs will reset the current set of lab
	 * grades with the grades from the parameter
	 *
	 * @param lab The list of lab grades
	 */
	public void setLabs (double [] lab)
	{}
	
	/**********************************************
	 * setLabs will add a new lab grade to the current
	 * array of lab grades
	 * 
	 * @param lab The new grade to add
	 */
	public void setLabs (double lab)
	{}
	
	/***********************************************
	 * setFinalExam - sets the value of the final exam
	 *
	 * @param finalExam The final exam value
    */
	public void setFinalExam (double finalExam)
	{}
	
	/***********************************************
	 * setMidterm1 - sets the value of the first midterm
	 *
	 * @param midterm1 The first midterm exam value
    */
	public void setMidterm1 (double midterm1)
	{}
	
	/***********************************************
	 * setMidterm2 - sets the value of the second midterm
	 *
	 * @param midterm1 The second midterm exam value
    */
	public void setMidterm2 (double midterm2)
	{}
	
	/***********************************************
	 * setName resets the name of this student
	 *
	 * @param name The name of this student
	 */
	public void setName	(String name)
	{}
	
	/**********************************************
	 * getGrade calculates and returns the final grade
	 * based on the weightings for this class
	 *
	 * @return The final grade value
	 */
	public double getGrade ()
	{
		return -999;
	}
	
	/***********************************************
	 * getLabAve calculates the average of all of the labs
	 * This average is modified by removing the two lowest 
	 * grades if we have 3 grades or more
	 *
	 * @return The lab average
	 */
	public double getLabAve ()
	{
		return -888;
	}
	
	/*********************************************
	 * toString produces a String representation of
	 * this Grade139 object including name, individual
	 * grades and the final average
	 */
	public String toString()	
	{
		return "nonsense string";
	}
} // class 