форкнуто от main/python-labs
main
Родитель
692fb12453
Сommit
4522dd5962
@ -0,0 +1,140 @@
|
||||
## Общее контрольное задание по Теме 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)
|
||||
```
|
||||
Загрузка…
Ссылка в новой задаче