[1]采用面向对象编程思想中抽象类的方法,模拟两类学生考试时的不同行为,不同的结果: a)第一类学生,拿到卷子后,独立认真做题,取得成绩 b)第二类学生,拿到卷子后,作弊偷看他人试卷,记过且得0分 [2]构造测试类进行测试
时间: 2023-07-14 12:14:10 浏览: 49
以下是使用面向对象编程思想中抽象类的方法模拟两类学生考试时的不同行为,不同的结果的示例代码:
```python
# 定义抽象类
from abc import ABC, abstractmethod
class Student(ABC):
@abstractmethod
def take_exam(self):
pass
# 定义第一类学生
class HonestStudent(Student):
def __init__(self, name):
self.name = name
self.score = 0
def take_exam(self):
# 独立认真做题,随机生成成绩
import random
self.score = random.randint(60, 100)
print(f"{self.name}完成了考试,成绩为{self.score}")
# 定义第二类学生
class CheatingStudent(Student):
def __init__(self, name, peer):
self.name = name
self.peer = peer
self.score = 0
def take_exam(self):
# 作弊偷看他人试卷,记过且得0分
self.score = 0
print(f"{self.name}作弊被发现,记过且得0分")
# 测试类
class Test:
def run(self):
# 创建第一类学生对象,进行考试
honest_student = HonestStudent("A")
honest_student.take_exam()
# 创建第二类学生对象,进行考试
cheating_student = CheatingStudent("B", honest_student)
cheating_student.take_exam()
test = Test()
test.run()
```
输出结果为:
```
A完成了考试,成绩为87
B作弊被发现,记过且得0分
```
其中,定义了抽象类`Student`,并在其中定义了抽象方法`take_exam`。然后,分别定义了两个子类`HonestStudent`和`CheatingStudent`,并重写了`take_exam`方法。`HonestStudent`独立认真做题,随机生成成绩;`CheatingStudent`作弊偷看他人试卷,记过且得0分。最后,定义了测试类`Test`,创建了两个学生对象进行测试。