Наследование и полиморфизм
Практическое занятие "Объектно-ориентированное программирование"
Цель занятия
Научиться самостоятельно создавать классы в C# и выполнять операции наследования и полиморфизма.
Практическая задача
Рассмотрим практический пример. Нам необходимо описать структуру данных, которая будет описывать некоторую персону в нашей организации. При этом в нашей вымышленной организации все сотрудники относятся к двум категориям - "руководители" и "исполнители". Пусть личная карточка этих персон должна содержать следующую информацию:
для исполнителей:
- Личный номер
- Фамилия имя отчество
- должность
- оклад
- надбавка
- номер отдела
для руководителей:
- Личный номер
- Фамилия имя отчество
- должность
- оклад
- надбавка
- ранг руководителя
Мы видим, что первые пять пунктов личной карточки совпадает как у
исполнителей, так и у руководителей. Поэтому имеет смысл создать
основной класс который будет описывать общую персону, а
затем с помощью механизма наследования мы создадим еще два
класса-потомка
и
. В нашем примере мы будем
рассматривать лишь один метод:
. Этот метод должен
возвращать сумму, которую получает данный сотрудник. Для простоты
мы будем считать, что эта сумма складывается из оклада и надбавки.
Реализуем наши классы.

Поскольку в будущем процедура вычисления выплаты сотруднику может
быть изменена мы использовали ключевое слово .
Предположим, в другом классе у нас есть метод, который принимает в
качестве параметра экземпляр класса
.

Внутри этого метода происходит вызов метода .
Предположим, теперь, что В нашей организации появились
руководители высшего звена, для которых вводится дополнительная
выплата -
. Мы хотим описать этих топ-менеджеров
таким образом, чтобы использовать класс - наследник от класса
. Реализуем это:

С помощью механизма полиморфизма мы можем использовать в качестве
параметра в методе экземпляры класса
.
При этом при расчете выплат будет учитываться и дополнительная
выплата
.