package users;

import course.*;

/**
* A User utilizes the Test Tool. Three types of users exist: Instructor, Grader, and Student. Each user receives a different
* graphical interface and permissions within the program. This relates to Section 2.1 in the requirements documentation.
*/
public abstract class User
{
	/**
	* The given name of a User.
	*/
	private String realName;
	
	/**
	* A unique identifier for a User
	*/
	UserID userID;
	
	/**
	* A log of all recent activities that this User has performed.
	*/
	private UserLog userLog;

   /**
   * Default constructor for a User object.
   */
   public User()
   {
   
   }

   /**
   * Sets the parameters for a user object
   * @param id The user id of a user
   * @param realName The name of the user
   
      pre:
      // The id does not exist in the User Database
      (!database.contains(id))
   */
	public User(UserID id, String realName)
	{

	}

   /**
   * Returns the user log of this user
   * @return the user log of this user
   */
	public abstract UserLog getUserLog(UserID id);

	/**
	* Generates a TestAttempt object for this user and if this is a student,
	*  adds it to their grades.
	* @param t The test the user is taking
	*/
	public abstract void takeTest(Test t);

}