Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Переопределение методов и полиморфизм




Можно переопределить (override) метод суперкласса на уровне подкласса.

Рис.1.22. Переопределение метода иерархии класса Employee

Для расчета премии для всех сотрудников определен метод Bonus (премия). Расчет премии зависит от специализации сотрудника. Каждый сотрудник, за исключением пилотов, получает премию 5% от годовой зарплаты. Пилоты получают премию на основе налетанных часов (ACCUM), а не на основе годовой зарплаты. Определяя метод Bonus в подклассе Pilot, мы определяем метод Bonus класса Employee для всех объектов подкласса Pilot. При этом переопределение метода Bonus в подклассе Pilot не повлияет на расчет премии в подклассе Mechanic.

В отличие от переопределения методов, полиморфизм (polymorphism) позволяет различным объектам реагировать на одно и то же сообщение различными способами. Полиморфизм - очень важная функция ОО-систем, поскольку его существование позволяет объектам вести себя в соответствии с их специфическими свойствами.

В терминах ОО полиморфизм означает:

возможность использования одинаковых имен для методов, определенных в различных классах иерархий;

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

Рис.1.23. Полиморфизм в иерархии класса Employee

На базе иерархии класса Employee система рассчитывает ежемесячные выплаты пилотам и механикам, посылая одно и то же сообщение MonthPay объекту Pilot или Механик. Объект возвращает корректное значение выплаты, даже если в MonthPay включается оплата полета flypay, принадлежащая объекту Пилот, и overtimepay (оплата сверхурочных), свойственная объекту Механик. Порядок расчета ежемесячной зарплаты для обоих подклассов один и тот же: годовой оклад делится на 12 месяцев.

Выражение SuperMonthPay в методе MonthPay класса Pilot указывая, что объект наследует метод MonthPay суперкласса. Другие объектно-ориентированные языки программирования, например, С++, используют запись с точкой: Employee. MonthPay.

Особенности полиморфизма:

определение метода MonthPay класса Pilot переопределяет и расширяет метод MonthPay суперкласса Employee;

метод MonthPay, определенный в суперкласс Employee, повторно используется подклассами Pilot и Mechanic.

Полиморфизм усиливает переопределение метода, расширяя возможности многократного использования кода, что необходимо при модульном программировании и проектировании.

 




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 387; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.