为学校各院系开发这样一个小系统,包含类型:学生、教师、系部、打印机,具体要求如下: 1、学生、教师、系部都具有detail()方法以输出详细信息 2、学校具有属性:打印机,能够通过学校的打印机打印教师或学校的详细信息 3、系统要具备良好的可扩展性与可维护性(使用继承、接口)
时间: 2023-10-20 10:10:27 浏览: 129
基于SSM的学生管理系统拥有三种角色,分别为学生、教师和管理员
5星 · 资源好评率100%
好的,我可以为您提供一个示例代码,您可以根据需要进行修改和扩展。以下是一个 Python 实现:
```python
class School:
def __init__(self, printer):
self.printer = printer
def print_info(self, obj):
self.printer.print(obj.detail())
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def detail(self):
raise NotImplementedError()
class Student(Person):
def __init__(self, name, age, major):
super().__init__(name, age)
self.major = major
def detail(self):
return f"Name: {self.name}, Age: {self.age}, Major: {self.major}"
class Teacher(Person):
def __init__(self, name, age, department):
super().__init__(name, age)
self.department = department
def detail(self):
return f"Name: {self.name}, Age: {self.age}, Department: {self.department}"
class Department:
def __init__(self, name):
self.name = name
def detail(self):
return f"Department name: {self.name}"
class Printer:
def print(self, text):
print(text)
# 示例用法
printer = Printer()
school = School(printer)
student = Student("Alice", 20, "Computer Science")
teacher = Teacher("Bob", 35, "Mathematics")
department = Department("Computer Science")
school.print_info(student) # 打印学生信息
school.print_info(teacher) # 打印教师信息
school.print_info(department) # 打印系部信息
```
在这个示例代码中,我们定义了四个类:`School`、`Person`、`Student`、`Teacher`、`Department` 和 `Printer`。其中,`Person` 是一个抽象基类,包含了 `detail()` 方法,但是没有具体实现。`Student`、`Teacher` 和 `Department` 类都继承自 `Person` 类,并且实现了 `detail()` 方法以输出自己的信息。
`School` 类包含一个属性:打印机,可以通过调用 `print_info()` 方法来打印学生、教师或系部的详细信息。`Printer` 类是一个简单的打印机类,它包含一个 `print()` 方法,可以将文本输出到控制台。
您可以根据需要对这个示例代码进行修改和扩展,比如增加更多的属性和方法,或者定义更多的子类。总体来说,这个代码示例符合您所描述的要求,具有良好的可扩展性和可维护性。
阅读全文