> For the complete documentation index, see [llms.txt](https://opu.gitbook.io/oop/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://opu.gitbook.io/oop/2019-2020-archive/arkhiv-1/labs/lab_5/zadanie-na-laboratornuyu-rabotu.md).

# Задание на лабораторную работу

## Задания для выполнения:

### 1. Цепочка наследования. В данном задании необходимо выполнить следующие действия:

1\. Создайте класс `Person`, который должен содержать конструктор, геттеры\сеттеры и следующие поля:

* фамилия;
* имя;
* возраст.

Переопределите метод `toString()`, который должен возвращать строку следующего формата:

```
Человек <фамилия> <имя>, возраст: <возраст>
```

2\. Создайте класс `Student`, который должен наследоваться от класса `Person`. Добавьте конструктор, геттеры\сеттеры и следующие поля:

* группа;
* номер студенческого билета.

Переопределите метод `toString()`, который должен возвращать строку следующего формата:

```
Студент группы <группа>, <фамилия> <имя>, возраст: <возраст>. Номер студенческого билета: <номер>
```

3\. Создайте класс `Lecturer`, который должен наследоваться от класса `Person`. Добавьте конструктор, геттеры\сеттеры и следующие поля:

* кафедра;
* зарплата.

Переопределите метод `toString()`, который должен возвращать строку следующего формата:

```
Преподаватель кафедры <кафедра>, <фамилия> <имя>, возраст: <возраст>. Зарплата: <зарплата>
```

4\. Используя восходящее преобразование, создайте в классе `Main` несколько объектов классов `Student` и `Lecturer`, после чего создайте массив, который бы мог включать объекты классов `Person`, `Student`, `Lecturer`. Заполните массив объектами этих классов.

5\. Используя цикл, обратитесь к элементам массива и выведите в консоль, с помощью метода `toString()`, информацию от каждого объекта.

### 2. Модификация программы Draw

Скачайте архив с проектом по этому адресу - <http://bit.ly/2y1N0AV>

Данная программа позволяет рисовать простые фигуры. С помощью кнопок на верхней панели выбираете нужную фигуру, после чего в поле рисования зажимаете кнопку мыши и рисуете фигуру нужных размеров.

![](https://1377473627-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LnhxGhlv6e_zwoZYywB%2F-Lq7JwehxUD0eMksGMiZ%2F-Lq7KfFKAAyXlshP3jNZ%2Fassets_-LLMA-cFvx_keJaoUgkS_-LNevn6bMpMryy_iPvIv_-LNfRojmSSYXsHDE7Gqx_draw_1.png?alt=media\&token=06fce897-09fe-426b-893a-09080ae0f44d)

#### Задание состоит в следующем:

1. Откройте проект, прочитайте комментарии, разберитесь как работает приложение;
2. **Используя механизм полиморфизма**, модифицируйте программу, добавив возможность **выбирать и рисовать эллипсы**;
3. **Задание на дополнительный балл**. Добавьте в программу кнопку **Clear**, по нажатию на которую программа должна стирать все фигуры.

{% hint style="warning" %}
При сдаче лабораторной работы, вы должны быть готовыми показать, где и для каких целей используется полиморфизм и восходящее преобразование.
{% endhint %}
