## Общее контрольное задание по Теме 9 Кузьменко Елена, А-02-23 ## Задание Создайте и запишите в модуль класс, содержащий следующие компоненты: - конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения; - метод для обеспечения операции повышения оклада сотрудника на заданное значение; - метод для обеспечения перевода сотрудника из одного отдела в другой; - метод для изменения должности сотрудника; - свойство, содержащее перечень (список) поощрений сотрудника. Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобразите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности. ## Решение ### Модуль task_mod.py представляет из себя: #### 1) Конструктор, задающий атрибутам начальные значения. ```py # Модуль task_mod.py class Rabotnik: def __init__(self, fio, otdel, dolzhnost, oklad): self.fio = fio self.otdel = otdel self.dolzhnost = dolzhnost self.oklad = oklad self.__pooshreniya = [] # приватный атрибут для хранения поощрений ``` #### 2) Метод для повышения оклада. ```py def povysit_oklad(self, summa): if summa > 0: self.oklad += summa return f"Оклад повышен на {summa}" return "Не повышен" ``` #### 3) Метод для перевода между отделами. ```py def perevod_v_otdel(self, noviy_otdel): self.otdel = noviy_otdel ``` #### 4) Метод для изменения должности. ```py def izm_dolzhnost(self, new_dolzhnost): self.dolzhnost = new_dolzhnost ``` #### 5) Свойство, содержащее перечень поощрений сотрудника. ```py def chten_pooshreniy(self): return self.__pooshreniya def zapis_pooshreniy(self, pooshrenie): self.__pooshreniya.append(pooshrenie) def udalenie_pooshreniy(self): self.__pooshreniya.clear() pooshreniya = property(chten_pooshreniy, zapis_pooshreniy, udalenie_pooshreniy) ``` #### 6) Отображение(дополнительный метод) ```py def __str__(self): # автоматически вызывается при print() poosh = ', '.join(self.pooshreniya) if self.pooshreniya else 'нет' return f"{self.fio}, {self.dolzhnost}, {self.otdel}, оклад: {self.oklad}, поощрения: {poosh}" ``` ### Проверка #### 1)Создание двух экземпляров и отображение значений: ```py >>> import task_mod >>> from task_mod import Rabotnik >>> z1 = Rabotnik("Иванов И.И.", "IT", "Программист", 170000) >>> z2 = Rabotnik("Петров П.П.", "Бухгалтерия", "Бухгалтер", 155000) >>> print(z1) Иванов И.И., Программист, IT, оклад: 170000, поощрения: нет >>> print(z2) Петров П.П., Бухгалтер, Бухгалтерия, оклад: 155000, поощрения: нет ``` #### 2)Операции перевода из отдела в отдел: ```py >>> z1.perevod_v_otdel("Разработка программного обеспечения") >>> z2.perevod_v_otdel("Финансовый отдел") >>> print(z1) Иванов И.И., Программист, Разработка программного обеспечения, оклад: 170000, поощрения: нет >>> print(z2) Петров П.П., Бухгалтер, Финансовый отдел, оклад: 155000, поощрения: нет ``` #### 3) Изменение должности и оклада: ```py >>> z1.izm_dolzhnost("Старший программист") >>> z2.izm_dolzhnost("Главный бухгалтер") >>> print(z1.povysit_oklad(15000)) Оклад повышен на 15000 >>> print(z2.povysit_oklad(30000)) Оклад повышен на 30000 >>> print(z1) Иванов И.И., Старший программист, Разработка программного обеспечения, оклад: 185000, поощрения: нет >>> print(z2) Петров П.П., Главный бухгалтер, Финансовый отдел, оклад: 185000, поощрения: нет ``` #### 4) Объявление благодарности: ```py >>> z1.zapis_pooshreniy("Благодарность за успешный проект") >>> z1.zapis_pooshreniy("Премия") >>> z2.zapis_pooshreniy("Грамота") >>> print(f"{z1.pooshreniya}") # чтение через свойство ['Благодарность за успешный проект', 'Премия'] >>> print(f"{z2.chten_pooshreniy()}") # чтение через метод ['Грамота'] >>> print(z2) Петров П.П., Главный бухгалтер, Финансовый отдел, оклад: 185000, поощрения: Грамота >>> print(z2) Петров П.П., Главный бухгалтер, Финансовый отдел, оклад: 185000, поощрения: Грамота >>> z1.udalenie_pooshreniy() # удаление поощрений >>> print(z1) ```