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