ПОЛИМОРФИЗМ - раздел Программирование, ВЫСОКОУРОВНЕВЫЕ МЕТОДЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ
Простой Полиморфизм. При Создании Иерархии Классов Может Обна...
Простой полиморфизм. При создании иерархии классов может обнаружиться, что некоторые свойства объектов, сохраняя название, изменяются по сути.
Для реализации таких иерархий в языке программирования должен быть предусмотрен полиморфизм, обеспечивающий возможность задания различных реализаций некоторого единого по названию метода для классов различных уровней иерархии. В ООП такой полиморфизм называется простым, а методы, имеющие одинаковое название, − статическими полиморфными.
Совокупность полиморфных методов с одним именем для иерархии классов образует единый полиморфный метод иерархии, в котором реализация полиморфного метода для конкретного класса представляет отдельный аспект.
Заметим, что термин «полиморфизм» в программировании, в соответствии со своим изначальным смыслом («многообразие»), используется для обозначения встроенного механизма определения соответствия кода функции типу параметров. Такой механизм реализуется не только в средствах ООП.
Различают несколько терминов, связанных с конкретными механизмами реализации полиморфизма для различных случаев.
Чистый полиморфизм − используется для обозначения того, что один код функции может по-разному интерпретироваться в зависимости от типа аргументов; используется в языках высокого уровня абстракции, например в языке LISP или SMALLTALK.
Перегрузка (полиморфные имена функций) − используется, когда определяется несколько функций с одним именем − одно и то же имя функции может многократно использоваться в разных местах программы; выбор нужной функции может определяться типами аргументов, областью видимости (внутри модуля, файла, класса и т.д.); если выбор определяется типом аргументов, то перегрузка называется параметрической; например язык C++ позволяет разработчику выполнять параметрическую перегрузку функций вне классов.
Переопределение (простой полиморфизм) − используется в ООП при наличии различных определений методов в иерархии классов, конкретный метод определяется типом объекта при компиляции программы {раннее связывание), методы называются статическими полиморфными.
Полиморфные объекты {сложный полиморфизм) − используются в ООП при наличии различных определений методов в иерархии классов − конкретный метод также определяется типом объекта, но в процессе выполнения программы {позднее связывание) методы называются виртуальными полиморфными (рассмотрены далее).
Обобщенные функции или шаблоны − используются в ООП при реализации в языке параметризованных классов (например, в C++), параметрами такого класса являются типы аргументов методов класса (рассмотрены далее).
Рассмотрим простой полиморфизм на примере − класс Окно_с_текстом.Пусть необходимо разработать на базе класса Окно класс Окно_с_текстом. Для этого к полям класса Окно необходимо добавить специальные поля для определения координат первой буквы текста − Xt, Yt и поле, содержащее сам текст − Text. Кроме этого, понадобится специальный метод, который будет обрабатывать сообщение «Нарисовать». Однако у нас уже существует родительский метод Изобразить, который обрабатывает это сообщение. Следовательно, необходимо заменить родительский метод методом потомка.
Механизм полиморфизма позволяет для класса-потомка Окно_с_текстом предусмотреть собственный метод Изобразить (см. рис. 18). Метод Инициализировать также должен быть переопределен, так как он должен инициализировать дополнительные поля класса.
На сайте allrefs.net читайте: "ВЫСОКОУРОВНЕВЫЕ МЕТОДЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ"...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ:
ПОЛИМОРФИЗМ
Что будем делать с полученным материалом:
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
ВЫРАЖЕНИЯ
Выражения состоят из операторов и операндов. Большинство операторов в Конструкторе являются бинарными, то есть содержат два операнда. Остальные операторы являются унарными и содержа
КОММЕНТАРИИ
Часто бывает полезно вставлять в программу текст, который предназначается в качестве комментария только для читающего программу человека и игнорируется компилятором в программе. В C
ВЕТВЯЩИЕСЯ АЛГОРИТМЫ
Циклические и рекурсивные алгоритмы. Операторы циклов for, do, while. В процессе программирования часто возникает необходимость повторять многократно выполнять многократно один и тот же фрагмент пр
МАССИВЫ И РАБОТА С ФАЙЛАМИ
Объявления массивов и указателей. Массив представляет собой набор данных одного типа. Формат определения массива следующий:
тип_данных имя_массива[размер_массива];
УКАЗАТЕЛИ
Указатель является переменной, которая содержит адрес другой переменной или функции. Описание указателя определяет тип данных, на которые ссылается указатель, оно имеет вид:
ОСВОБОЖДЕНИЕ ПАМЯТИ
При компиляции программы память компьютера разбивается на четыре области, содержащие код программы, глобальные данные, стек и динамически распределяемую память ( иногда ее называют heap – куча). He
СТРУКТУРЫ
В отличие от массива, структура позволяет иметь смешанные атрибуты различных типов данных. Структура создается при помощи ключевого слова struct, за которым следует имя_типа (имя ст
ПЕРЕДАЧА СТРУКТУР В ФУНКЦИИ
В функцию информация о структуре может передаваться как по значению, так и по ссылке. В первом случае в функцию передается копия структуры, что может снизить эффективность программы. При передаче п
ОБЪЕДИНЕНИЯ
Объединения – еще один тип данных, которые можно использовать различным образом. К примеру, некоторые данные в одном случае могут рассматриваться как целые, а в другом – как числа с
ИНКАПСУЛЯЦИЯ ИЛИ СКРЫТИЕ ДАННЫХ
Понятие инкапсуляция означает, что функции элементы и структуры данных, определяющие некоторые свойства данного класса, рассматриваются в качестве единого целого. Это подразумевает
СКРЫТИЕ ДАННЫХ В ПОТОМКАХ
При порождении потомка класса у вас есть выбор в определении типа элементов. По умолчанию элементы базового класса автоматически получают приватный тип, если только вы не захотите и
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
В первой главе был дан краткий экскурс в основы программирования на языке С++. Далее будет рассмотрено детальное описание объектно-ориентированных свойств языка.
ООП появилось в результате
ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ
В программировании существуют различные парадигмы, представляющие собой разные подходы к написанию программ. Большинство программистов знакомы лишь с немногими из них, это визуально
ПРОГРАММИРОВАНИЯ
Язык считается объектно-ориентированным, если в нем реализованы первые четыре из рассмотренных выше семи принципов. Кроме этого, в теории программирования принято различать объектно-ориентированные
ИСПОЛЬЗОВАНИЕМ ООП
Процесс разработки программного обеспечения с использованием ООП включает четыре этапа:
анализ; проектирование; эволюция; модификация.
ОБЪЕКТНАЯ ДЕКОМПОЗИЦИЯ
Как уже упоминалось выше, при использовании технологии ООП решение представляется в виде результата взаимодействия отдельных функциональных элементов некоторой системы, имитирующей
ОБЪЕКТЫ И СООБЩЕНИЯ
В предыдущем разделе было показано, что под объектом применительно к ООП понимается отдельно реализуемая часть предметной области задачи. Разрабатываемая программа, таким образом, с
Конец описания.
Создавая объекты типа Окно, инициализируя их в соответствии с условием и посылая им сообщение «Нарисовать окно», получим разные окна на экране, причем параметры этих окон будут хран
Конец описания.
Как уже говорилось выше, объединение полей данных и процедур и функций, работающих с этими данными, в единый пакет при наличии специальных правил доступа к элементам пакета называет
НАСЛЕДОВАНИЕ
В ООП существует возможность конструирования новых более сложных классов из уже имеющихся посредством добавления полей и определения новых методов (принцип иерархичности). При этом исходный класс,
Конец описания.
Класс Окно_меняющее_цвет содержит все поля родительского класса и все его методы. Дополнительно объекты типа Окно_меняющее_цвет могут менять цвет окна на указанный в сообщении «Изме
СОЗДАНИЕ ПОЛИМОРФНЫХ ОБЪЕКТОВ
Полиморфными объектами или полиморфными переменными называются переменные, которым в процессе выполнения программы может быть присвоено значение, тип которого отличается от типа пер
КОМПОЗИЦИЯ
Ранее было указано, что в результате объектной декомпозиции второго и более уровней могут быть получены объекты, находящиеся между собой в отношении включения (см. рис. 12). Классы
Конец описания.
Метод Инициализировать, класса-потомок, при этом должен получить двойной список параметров по сравнению с методом Инициализировать класса-родитель. Первым набором инициализируются р
НАПОЛНЕНИЕ
Включение объектов в некоторый класс можно реализовать и с использованием указателей на эти объекты. В отличие от объектного поля, которое включает в класс точно указанное количеств
ТЕХНОЛОГИЯ ООП ПРОГРАММИРОВАНИЯ
В соответствии с обычным значением слова «технология» под технологией программирования будем понимать совокупность производственных процессов, приводящую к созданию требуемог
ПРОГРАММНЫХ СРЕДСТВ
Окружающий нас мир состоит из объектов и отношений между ними. Согласно данным словаря В. Даля объект (предмет) - это все, что представляется чувствам (объект вещественный) или уму (объект умственн
К РАЗРАБОТКЕ ПРОГРАММНОГО СРЕДСТВА
При объектном подходе этап внешнего описания ПС оказывается существенно более емким и содержательным по сравнению с реляционным подходом. Определение требований заключается в неформальном описании
МЕТОДЫ КОНТРОЛЯ КАЧЕСТВА
Как контролировать качество системы? Как точно узнать, что программа делает именно то, что нужно, и ничего другого? Как определить, что она достаточно надежна, переносима, удобна в
ОШИБКИ В ПО
Ошибками в ПО, вообще говоря, являются все возможные несоответствия между демонстрируемыми характеристиками его качества и предписанными требованиями и, иногда, ожиданиями по
К главе 1
1.1 Какие типы данных поддерживает С++?
1.2 Из каких компонент состоит выражение С++?
1.3 Какие виды арифметических операторов вы знаете?
К главе 2
2.1 Какие парадигмы программирования вы знаете?
2.2 Поясните архитектуру процедурного программирования.
2.3 Поясните архитектуру модульного програ
К главе 3
3.1 Что такое программная инженерия?
3.2 Что такое программное средство (ПС)?
3.3 Что такое ошибка в ПС?
3.4 Что такое надежность
Хотите получать на электронную почту самые свежие новости?
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Новости и инфо для студентов