Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Использование полиморфизма в объектно-ориентированном программировании



В ООП применяется понятие полиморфизм. Полиморфизм в ООП означает возможность применения одноименных методов с одинаковыми или различными наборами параметров в одном классе или в группе классов, связанных отношением наследования. Есть и другие определения: полиморфизм (множество форм) - средство для придания различных значений одному и тому же сообщению в зависимости от типа обрабатываемых данных. Например, если аргументы оператора целого типа, то используется целочисленное деление. Если же один или оба аргумента - значения с плавающей точкой, то используется деление с плавающей точкой. Таким образом, некая величина, переменная или выражение, принадлежащее в данном языке одному типу, называется мономорфной. Если же одно и то же значение может принадлежать разным типам, то налицо полиморфизм. Кратко смысл полиморфизма можно передать фразой: «Один интерфейс – множество реализаций». Полиморфизм позволяет писать более абстрактные программы и повысить коэффициент повторного использования кода. Общие свойства объектов объединяются в систему, которую могут называть по-разному — интерфейс, класс. Общность имеет внешнее и внутреннее выражение. Внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именем методов, и типами аргументов, и их количеством). Внутренняя общность — одинаковая функциональность методов. Её можно описать интуитивно или выразить в виде строгих законов, правил, которым должны подчиняться методы. Возможность приписывать разную функциональность одному методу (функции, операции) называется перегрузкой метода (функций, операций). Пример: класс геометрических фигур (фигура, эллипс, квадрат…) может иметь методы для геометрических трансформаций (смещение, поворот, трансформация). Понятие полиморфизма тесно связано с понятием позднего связывания (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; Прочитано: 385 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...