继承与多态一、实验目的和要求1、理解继承在软件工程中的作用。2、掌握多态的“通用编程”的思想。3、掌握运算符重载。二、实验内容和原理1、多态在工资系统中的应用。请给出一个根据员工类型完成每周工资单计算的程序,具体要求如下:(1)定义一个类Employee作为父类,该类有三个子类:Boss类、PieceWorker类、HourlyWorker。(2)Boss类的工资计算的原则:不计工作时间,每周获得固定工资。(3)PieceWorker类的工资计算原则:根据生产的产品数量,每周发放工资。(4)HourlyWorker类的工资计算原则:根据工作时间,每周发放工资。每周工作的时间不超过40小时。(5)Employee类中定义了一个方法Earnings(),该方法没有实质性的工作;而在每个子类中都提供了恰当的Earnings()方法的重写。(6)定义TestEmployee类,在其Main方法中,创建三种类型的员工对象,并计算相应的工资。2、请定义一个矩阵类,实现矩阵的转置、矩阵元素值的取反、矩阵的相减、矩阵的相加、矩阵的相乘、以及将矩阵元素的值乘以n等运算。三、实验环境MicrosoftVisualC#2008ExpressEdition四、算法描述及实验步骤定义一个类Employee作为父类,该类有三个子类:Boss类、PieceWorker类、HourlyWorker。代码如下:usingSystem;publicabstractclassEmployee{publicstringname;publicEmployee(){}publicstringName{get{returnname;}}publicabstractdecimalEarnings();publicoverridestringToString(){returnstring.Format({0}{1}:{2}\n,Name,salary,Earnings());}}publicclassBoss:Employee{privatedecimalweeklySalary;publicdecimalWeeklySalary{get{returnweeklySalary;}set{weeklySalary=(value0)?value:0;}}publicBoss(stringmingzi){name=mingzi;}publicoverridedecimalEarnings(){returnWeeklySalary;}publicoverridestringToString(){returnstring.Format(boss{0}\n{1}:{2}\n,Name,weeklysalary,Earnings());}}publicclassPieceWork:Employee{privateintquantity;privatedecimalwageOfPiece;publicintQuantity{get{returnquantity;}set{quantity=(value0)?value:0;}}publicdecimalWageOfPiece{get{returnwageOfPiece;}set{wageOfPiece=(value0)?value:0;}}publicPieceWork(stringmingzi){name=mingzi;}publicoverridedecimalEarnings(){returnQuantity*WageOfPiece;}publicoverridestringToString(){returnstring.Format(piecework{0}\n{1}:{2}\n,Name,weeklysalary,Earnings());}}publicclassHourlyWork:Employee{privateinthours;privatedecimalwagaOfHour;publicintHours{get{returnhours;}set{hours=(value0)?value:0;}}publicdecimalWageOfHour{get{returnwagaOfHour;}set{wagaOfHour=(value0)?value:0;}}publicHourlyWork(stringmingzi){name=mingzi;}publicoverridedecimalEarnings(){returnHours*WageOfHour;}publicoverridestringToString(){returnstring.Format(hourlywork{0}\n{1}:{2}\n,Name,weeklysalary,Earnings());}}publicclassTestEmployee{staticvoidMain(string[]args){Bossboss=newBoss(秀秀);boss.WeeklySalary=2000;stringa=boss.ToString();Console.WriteLine({0},a);PieceWorkworker1=newPieceWork(伟峰);worker1.Quantity=30;worker1.WageOfPiece=10;stringb=worker1.ToString();Console.WriteLine({0},b);HourlyWorkworker2=newHourlyWork(通后);worker2.Hours=30;worker2.WageOfHour=10;stringc=worker2.ToString();Console.WriteLine({0},c);}}五、调试过程1.没有把Employee定义为抽象类导致方法不能重写,把Employee定义成abstract,Earnings方法成功被重写:.六、实验结果七、总结通过这次试验,掌握了类的继承,理解了继承在软件工程中的作用,掌握多态的“通用编程”的思想,熟悉了C#2008,提高了解决语法问题的能力。