## Общее контрольное задание по Теме 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)
```
