C#程序设计:面向对象与抽象类应用

需积分: 31 24 下载量 132 浏览量 更新于2024-09-09 收藏 114KB DOC 举报
"面向对象程序设计涉及C#语言,主要任务是创建一个Time类和一个薪水发放系统。Time类需要包含私有字段表示时、分、秒,以及构造函数和只读属性。薪水发放系统基于抽象类和抽象方法实现,包括经理、销售员和工人的不同薪资计算逻辑。实验旨在加深对面向对象编程的理解,特别是类的声明、构造函数、属性、继承、多态、抽象类和抽象方法的运用。" 在面向对象编程中,类是对象的蓝图,它定义了对象的属性和行为。在这个任务中,Time类的创建需要包含三个私有字段,分别存储时、分、秒。私有字段的使用限制了直接访问这些数据,确保数据的安全性。为了能够从类外部获取这些值,我们需要创建只读属性,这些属性提供了公共的访问接口,但不允许修改内部字段。 Time类的构造函数是初始化对象的关键。一个带参数的构造函数可以接受小时、分钟和秒的值,用于初始化时间。同时,一个无参构造函数允许创建默认时间对象,通常用于未指定初始时间的情况。构造函数是类的一个特殊方法,用于对象创建时执行初始化操作。 接着,我们需要一个方法来增加秒数。这个方法会检查秒是否超过60,如果超过,则将秒重置为0,并相应地增加分钟。同样,如果分钟超过60,会增加小时。这个方法展示了类如何封装并管理其内部状态。 在薪水发放系统部分,我们利用抽象类和抽象方法的概念。抽象类Employee作为所有员工类(经理、销售员、工人)的基类,其中包含一个抽象方法Earning(),用于计算薪水。抽象类不能被实例化,但可以被其他类继承。经理、销售员和工人类继承自Employee,并实现Earning()方法,根据各自的薪资计算规则。 经理的Earning()方法只返回固定的月薪,销售员的Earning()需考虑销售额的5%提成,而工人的Earning()则需要计算基本小时工资和加班费。这个系统展示了多态性,即每个员工类都可以调用相同的方法(Earning()),但实现细节各不相同。 在测试类中,我们将实例化这三类员工,并调用他们的Earning()方法,以验证薪水计算的正确性。这有助于理解和应用面向对象设计原则,同时也强化了对C#中抽象类和抽象方法的实际运用。