Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Простой полиморфизм

Читайте также:
  1. О жизни такой непростой
  2. Простой категорический силлогизм
  3. Простой категорический силлогизм.
  4. Простой тест на профессионализм
  5. Простой трактат о травах
  6. Технология выполнения простой медицинской услуги

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

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

Термин «полиморфизм» в программировании, в соответствии со своим изначальным смыслом («многообразие»), используется для обозначения встроенного механизма определения соответствия мода функции типу параметров. Такой механизм реализуется не только в средствах ООП.

Различают несколько терминов, связанных с конкретными механизмами реализации полиморфизма для различных случаев:

· чистый полиморфизм - используется для обозначения того, что один код функции может по-разному интерпретироваться в зависимости от типа аргументов; используется в языках высокого уровня абстракции, например, в языке LISP или SMALLTALK;

· перегрузка {полиморфные имена функций) - используется, когда определяется несколько функций с одним именем - одно и то же имя функции может многократно использоваться в разных местах программы; выбор нужной функции может определять типами аргументов, областью видимости (внутри модуля, файла, класса и т.д.); если выбор определяется типом аргументов, то перегрузка называется параметрической; (например, язык C++ позволяет разработчику выполнять параметрическую перегрузку функций вне классов);

· переопределение (простой полиморфизм) - используется в ООП при наличии различных определений методов в иерархии классов, конкретный метод определяется типом объекта при компиляции программы – раннее связывание, методы называются статическими полиморфными;

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

· обобщенные функции или шаблоны - используются в ООП при реализации в языке параметризованных классов (например, в C++), параметрами такого класса являются типы аргументов методов класса (рассмотрены далее).

Пример

Простой полиморфизм (класс Окно_с_текстом). Пусть необходимо разработать на базе класса «Окно» класс «Окно_с_текстом». Для этого к полям класса «Окно» необходимо добавить специальные поля для определения координат первой буквы текста - Xt, Yt и поле, содержащее сам текст - Text. Кроме этого, понадобится специальный метод, который будет обрабатывать сообщение «Нарисовать». Однако у нас уже существует родительский метод «Изобразить», который обрабатывает это сообщение. Следовательно, необходимо заменить родительский метод методом потомка. Механизм полиморфизма позволяет для класса-потомка «Окно_с_текстом» предусмотреть собственный метод «Изобразить» (рис.).

Метод «Инициализировать» также должен быть переопределен, так как он должен инициализировать дополнительные поля класса.

Класс Окно_с_текстом – родитель: класс Окно:


Дата добавления: 2015-09-06; просмотров: 410 | Нарушение авторских прав


Читайте в этой же книге: Объектная декомпозиция | Объекты и сообщения | Т: Классы | Композиция при разработке классов | Наполнение при разработке классов | Делегирование методов | Контейнерные классы | Цикл-пока <очередной элемент> определен | Исключения при разработке классов |
<== предыдущая страница | следующая страница ==>
Конец описания.| Конец описания.

mybiblioteka.su - 2015-2024 год. (0.005 сек.)