public class SchoolEmployee
public string Name {get;set;}
protected string EmployeeID {get;set;}
if(value >= 30000 && value <= 100000)
private int JoinYear {get;set;}
public SchoolEmployee() {}
public SchoolEmployee(string inputName, string inputEmployeeID, int inputSalary, int inputJoinYear)
EmployeeID = inputEmployeeID;
JoinYear = inputJoinYear;
Console.WriteLine("Employee's Name: "+ Name);
tenure = DateTime.Now.Year - JoinYear +1;
string JobType {get;set;}
public class Teacher: SchoolEmployee, IJob
public string Department {get;set;}
public string JobType {get;set;}
public Teacher(string inputName, string inputEmployeeID, int inputSalary, int inputJoinYear, string inputDepartment, string inputJobType): base (inputName, inputEmployeeID, inputSalary, inputJoinYear)
Department = inputDepartment;
public new void PrintName()
Console.WriteLine("Teacher's Name: "+ Name);
public bool IsAccountingJob()
if (JobType == "Accounting")
public string CourseName {get;set;}
public string CourseID {get;set;}
public Teacher CourseTeacher {get;set;}
public Course(string cname, string cid, Teacher ct)
public bool HighExperience()
if (CourseTeacher.Tenure() > 10)
public static void Main()
Teacher myteacher = new Teacher("John", "A1234", 65000, 2018, "001", "Accounting");
Course c1 = new Course("c#", "S308", myteacher);
Console.WriteLine("Course Name: "+c1.CourseName);
Console.WriteLine("High Expereince: "+c1.HighExperience());
Console.WriteLine("Is Accounting Job: "+c1.CourseTeacher.IsAccountingJob());
Console.WriteLine("Show Bonus: "+c1.CourseTeacher.ShowBonus());
c1.CourseTeacher.PrintName();