设计一个人员类(Person),包含姓名,方法pay()代表人员的工资支出;方法toString()输出人员的信息。从Person类派生出教师类(Teacher)和大学生类(CollegeStudent),其中:教师的工资支出=基本工资+授课时数*30,大学生的工资支出=奖学金支出。 增加行政员工类(AdministrativeStaff),行政员工的工资支出=基础工资+考核奖励(优秀5000,良好3000,合格1000)。 (1)将人员类Person定义为抽象类,pay()为抽象方法,设计程序实现多态性。 (2)定义一接口,将pay定义为其抽象方法,设计程序实现多态性。
时间: 2023-05-19 07:01:49 浏览: 55
1. 设计一个人员类(Person),包含姓名,方法pay()代表人员的工资支出;方法toString()输出人员的信息。从Person类派生出教师类(Teacher)和大学生类(CollegeStudent),其中:教师的工资支出=基本工资 授课时数*30,大学生的工资支出=奖学金支出。 增加行政员工类(AdministrativeStaff),行政员工的工资支出=基础工资 考核奖励(优秀5000,良好3000,合格1000)。
```python
# 定义抽象类Person
from abc import ABC, abstractmethod
class Person(ABC):
def __init__(self, name):
self.name = name
@abstractmethod
def pay(self):
pass
def __str__(self):
return f"Name: {self.name}"
# 定义教师类Teacher
class Teacher(Person):
def __init__(self, name, basic_salary, teaching_hours):
super().__init__(name)
self.basic_salary = basic_salary
self.teaching_hours = teaching_hours
def pay(self):
return self.basic_salary + self.teaching_hours * 30
def __str__(self):
return super().__str__() + f", Salary: {self.pay()}"
# 定义大学生类CollegeStudent
class CollegeStudent(Person):
def __init__(self, name, scholarship):
super().__init__(name)
self.scholarship = scholarship
def pay(self):
return self.scholarship
def __str__(self):
return super().__str__() + f", Scholarship: {self.pay()}"
# 定义行政员工类AdministrativeStaff
class AdministrativeStaff(Person):
def __init__(self, name, basic_salary, assessment):
super().__init__(name)
self.basic_salary = basic_salary
self.assessment = assessment
def pay(self):
if self.assessment == "优秀":
return self.basic_salary + 5000
elif self.assessment == "良好":
return self.basic_salary + 3000
else:
return self.basic_salary + 1000
def __str__(self):
return super().__str__() + f", Salary: {self.pay()}"
```
2. 定义一接口,将pay定义为其抽象方法,设计程序实现多态性。
```python
# 定义接口IPayable
from abc import ABC, abstractmethod
class IPayable(ABC):
@abstractmethod
def pay(self):
pass
# Person类实现IPayable接口
class Person(IPayable):
def __init__(self, name):
self.name = name
def __str__(self):
return f"Name: {self.name}"
# Teacher类实现IPayable接口
class Teacher(Person):
def __init__(self, name, basic_salary, teaching_hours):
super().__init__(name)
self.basic_salary = basic_salary
self.teaching_hours = teaching_hours
def pay(self):
return self.basic_salary + self.teaching_hours * 30
def __str__(self):
return super().__str__() + f", Salary: {self.pay()}"
# CollegeStudent类实现IPayable接口
class CollegeStudent(Person):
def __init__(self, name, scholarship):
super().__init__(name)
self.scholarship = scholarship
def pay(self):
return self.scholarship
def __str__(self):
return super().__str__() + f", Scholarship: {self.pay()}"
# AdministrativeStaff类实现IPayable接口
class AdministrativeStaff(Person):
def __init__(self, name, basic_salary, assessment):
super().__init__(name)
self.basic_salary = basic_salary
self.assessment = assessment
def pay(self):
if self.assessment == "优秀":
return self.basic_salary + 5000
elif self.assessment == "良好":
return self.basic_salary + 3000
else:
return self.basic_salary + 1000
def __str__(self):
return super().__str__() + f", Salary: {self.pay()}"
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)