package gradebook;

import java.util.Collection;
import gradebook.Grade;
/**
 * Contains information necessary to keep track of an individual student.
 */
public abstract class Student
{
   /**
    * The name of the student in the format of "First Last".
    */
   String Name;

   /**
    * The student ID, at Cal Poly it's an eight character string,
    * generally in the format of "[first initial][last name]"
    * Must not be empty, as it's used for identification purposes.
    */
   String studentID;

   /**
    * The student's employee ID. Can be an arbitrary string.
    */
   String emplID;

   /**
    * The student's major, as a string. For example, "Computer Science"
    */
   String major;

   /**
    * The student's class. Freshman through Grad student.
    */
   ClassLevel studentClass;

   /**
    * The student's email. At Cal Poly, it's studentID@calpoly.edu.
    */
   String email;

   /**
    * The student's phone number. Optional.
    */
   String phone;

   /**
    * The professor's notes on the student. Optional.
    */
   String notes;

   /**
    * A collection of Grades, which must have a 1 to 1 relationship with
    * the assignments in the gradebook.
    */
   Collection<Grade> grades;
   
   //bstanaka
   /**
    * Takes in a GradedItem g and returns the Grade for this student
    * for that GradedItem.
    */
   abstract Grade getGrade(GradedItem g);

   enum ClassLevel {
       Freshman,
       Sophomore,
       Junior,
       Senior,
       Grad;
   }
}