![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
В ООП применяется понятие полиморфизм. Полиморфизм в ООП означает возможность применения одноименных методов с одинаковыми или различными наборами параметров в одном классе или в группе классов, связанных отношением наследования. Есть и другие определения: полиморфизм (множество форм) - средство для придания различных значений одному и тому же сообщению в зависимости от типа обрабатываемых данных. Например, если аргументы оператора целого типа, то используется целочисленное деление. Если же один или оба аргумента - значения с плавающей точкой, то используется деление с плавающей точкой. Таким образом, некая величина, переменная или выражение, принадлежащее в данном языке одному типу, называется мономорфной. Если же одно и то же значение может принадлежать разным типам, то налицо полиморфизм. Кратко смысл полиморфизма можно передать фразой: «Один интерфейс – множество реализаций». Полиморфизм позволяет писать более абстрактные программы и повысить коэффициент повторного использования кода. Общие свойства объектов объединяются в систему, которую могут называть по-разному — интерфейс, класс. Общность имеет внешнее и внутреннее выражение. Внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именем методов, и типами аргументов, и их количеством). Внутренняя общность — одинаковая функциональность методов. Её можно описать интуитивно или выразить в виде строгих законов, правил, которым должны подчиняться методы. Возможность приписывать разную функциональность одному методу (функции, операции) называется перегрузкой метода (функций, операций). Пример: класс геометрических фигур (фигура, эллипс, квадрат…) может иметь методы для геометрических трансформаций (смещение, поворот, трансформация). Понятие полиморфизма тесно связано с понятием позднего связывания (late binding).
Пример:
TPoint = class {базовый класс}
procedure SetAPare (AnewVaiue: TPare);
property APoint: TPare write SetAPare;
end;
TLocation = class (TPoint) {наследует поля TPoint}
Visible: Boolean;
procedure Hide; virtual; abstract; {объявление абстрактных процедур}
procedure Show; virtual; abstract; {объявление абстрактных процедур}
procedure MoveTo (AnewLocation: TPare); virtual;
{на всякий случай, если появится фигура, для которой MoveTo не подойдет}
end;
TCircle = class (TLocation)
Name: string;
Radius: word;
procedure Hide; override; {реализация абстрактных методов 1-м способом}
procedure Show; override; {реализация абстрактных методов 1-м способом}
end;
TSquare = class (TLocation)
Name: string;
Side: word;
procedure Hide; override; {реализация абстрактных методов другим способом}
procedure Show; override; {реализация абстрактных методов другим способом}
End;
Дата публикования: 2015-02-03; Прочитано: 395 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!