Создать иерархию классов для описания академии.
Примерный список классов: Person, Teacher, Student, Subject, Academy и тд.
Продумать архитектуру: реализовать принципы ООП
Помогите решить задание c примером запуска.
Ответы
Для создания иерархии классов, описывающей академию, можно использовать следующую архитектуру:
1. Класс Person (Человек):
- Атрибуты: имя (name), возраст (age), пол (gender).
- Методы: конструктор для инициализации атрибутов, получение и установка значений атрибутов.
2. Класс Teacher (Учитель), наследуется от класса Person:
- Дополнительные атрибуты: специализация (specialization), стаж работы (experience).
- Методы: конструктор для инициализации атрибутов, получение и установка значений атрибутов.
3. Класс Student (Студент), наследуется от класса Person:
- Дополнительные атрибуты: год обучения (year), средний балл (average_grade).
- Методы: конструктор для инициализации атрибутов, получение и установка значений атрибутов.
4. Класс Subject (Предмет):
- Атрибуты: название предмета (name), уровень сложности (difficulty_level).
- Методы: конструктор для инициализации атрибутов, получение и установка значений атрибутов.
5. Класс Academy (Академия):
- Атрибуты: название академии (name), список учителей (teachers), список студентов (students).
- Методы: конструктор для инициализации атрибутов, добавление учителя, добавление студента, удаление учителя, удаление студента.
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def get_name(self):
return self.name
def set_name(self, name):
self.name = name
def get_age(self):
return self.age
def set_age(self, age):
self.age = age
def get_gender(self):
return self.gender
def set_gender(self, gender):
self.gender = gender
class Teacher(Person):
def __init__(self, name, age, gender, specialization, experience):
super().__init__(name, age, gender)
self.specialization = specialization
self.experience = experience
def get_specialization(self):
return self.specialization
def set_specialization(self, specialization):
self.specialization = specialization
def get_experience(self):
return self.experience
def set_experience(self, experience):
self.experience = experience
class Student(Person):
def __init__(self, name, age, gender, year, average_grade):
super().__init__(name, age, gender)
self.year = year
self.average_grade = average_grade
def get_year(self):
return self.year
def set_year(self, year):
self.year = year
def get_average_grade(self):
return self.average_grade
def set_average_grade(self, average_grade):
self.average_grade = average_grade
class Subject:
def __init__(self, name, difficulty_level):
self.name = name
self.difficulty_level = difficulty_level
def get_name(self):
return self.name
def set_name(self, name):
self.name = name
def get_difficulty_level(self):
return self.difficulty_level
def set_difficulty_level(self, difficulty_level):
self.difficulty_level = difficulty_level
class Academy:
def __init__(self, name):
self.name = name
self.teachers = []
self.students = []
def add_teacher(self, teacher):
self.teachers.append(teacher)
def remove_teacher(self, teacher):
self.teachers.remove(teacher)
def add_student(self, student):
self.students.append(student)
def remove_student(self, student):
self.students.remove(student)
# Создаем объекты учителей
teacher1 = Teacher("John Smith", 35, "Male", "Mathematics", 10)
teacher2 = Teacher("Jane Doe", 40, "Female", "Physics", 15)
# Создаем объекты студентов
student1 = Student("Alice Johnson", 20, "Female", 2, 4.0)
student2 = Student("Bob Williams", 21, "Male", 3, 3.7)
# Создаем объекты предметов
subject1 = Subject("Mathematics", "Intermediate")
subject2 = Subject("Physics", "Advanced")
# Создаем объект академии
academy = Academy("My Academy")
# Добавляем учителей и студентов в академию
academy.add_teacher(teacher1)
academy.add_teacher(teacher2)
academy.add_student(student1)
academy.add_student(student2)
# Выводим информацию об академии, учителях и студентах
print(f"Academy Name: {academy.name}")
print("Teachers:")
for teacher in academy.teachers:
print(f"Name: {teacher.get_name()}, Specialization: {teacher.get_specialization()}")
print("Students:")
for student in academy.students:
print(f"Name: {student.get_name()}, Year: {student.get_year()}")