/**
 * Represents a general employee in an organization.
 * Serves as the superclass for specific employee roles.
 * 
 * @author Dr. Hyrum D. Carroll
 * @author Gemini 3.6 Flash
 * @version 1.0
 */
public class Employee {
    protected String name;
    protected String employeeID;
    protected String startDate;
    protected double basePayRate;
    protected double hoursWorked;

    /**
     * Constructs an Employee with specified details.
     * 
     * @param name        The name of the employee.
     * @param employeeID  The unique ID string for the employee.
     * @param startDate   The start date (e.g., "YYYY-MM-DD").
     * @param basePayRate The hourly pay rate in dollars.
     * @param hoursWorked The total hours worked in the pay period.
     */
    public Employee(String name, String employeeID, String startDate, double basePayRate, double hoursWorked) {
        this.name = name;
        this.employeeID = employeeID;
        this.startDate = startDate;
        this.basePayRate = basePayRate;
        this.hoursWorked = hoursWorked;
    }

    /**
     * Gets the employee's name.
     * 
     * @return The employee's name.
     */
    public String getName(){
        return name;
    }

    /**
     * Calculates the employee's total pay.
     * 
     * @return The base total pay calculated as basePayRate * hoursWorked.
     */
    public double getPay() {
        return basePayRate * hoursWorked;
    }
}