- •2 Выделение объектов проблемной области: объектно-ориентированная модель задачи, информационная и математическая модели объектов Пример. Представление доски в аудитории в виде объекта
- •Выводы:
- •3 Концептуальная модель класса объектов
- •4 Инкапсуляция атрибутов и методов в классе объектов Понятие инкапсуляции
- •Инкапсуляция в концептуальной модели ооп
- •Реализация членов-функций
- •Указатель this: назначение и использование
- •Проблема защиты членов-данных класса
- •Защита на уровне уровня доступа
- •Защита на уровне значений
- •10 Защита членов-данных, заданных указателями и ссылками
- •11 Защита членов-данных объекта, передаваемого в качестве параметра функции или возвращаемого функцией
- •Реализация и семантика (смысл) чдодвоКов
- •2.11.2 Инициализация чдодвоКов
- •14 ??? Использование членов класса, общих для всех объектов класса, для учета и идентификации объектов класса.
- •15 ??? Использование членов класса, общих для всех объектов класса, для обеспечения тестирования и отладки оо программ
- •2.12.1 Свойства ctorов, предназначенные для реализации модели ооп
- •Автоматический вызов ctorа
- •18 ??? Создание объектов прямым заданием значений членов-данных
- •19 ??? Создание объектов копированием и преобразованием
- •20 ??? Создание объектов класса, использующего объекты других классов в качестве членов-данных
- •22 Проектирование класса по контракту
- •23 Отношение наследования в концептуальной модели ооп.
- •25 Управление доступом в производном классе к членам базового класса
- •27,28 Создание объектов производного класса и задание их начальных состояний
- •29 Назначение виртуальных функций
- •Назначение вф
- •30 Задание виртуальных функций
- •31 Вызов виртуальных функций.
- •32 Виртуальные деструкторы
- •33 Организация вычислений в концептуальной модели ооп
- •Преимущества и недостатки множественного наследования
- •38 Понятие "полиморфизм" в модели ооп. Виды полиморфизма
- •Виды полиморфизма
Виды полиморфизма
1) В ООП используются и реализуются 4 вида полиморфизма:
а) «чистый» («правильный») полиморфизм;
б) полиморфизм включения;
в) параметрический полиморфизм;
г) полиморфизм специализации.
2) Для всех видов полиморфизма будем пользоваться следующими свойствами:
а) Количество и структура функций, с помощью которых реализуется вид.
б) Наличие способов реализации полиморфных параметров.
в) Наличие ограничений на полиморфизм параметров.
г) Способ вызова полиморфных методов.
д) Наличие и способ реализации в языке C++.
3) «Чистый» полиморфизм
Определение 30
Полиморфная функция — функция, которая имеет хотя бы один полиморфный параметр.
а) «Чистый» полиморфизм: полиморфная функция одна, параметр один (возможно, принимающий разные типы). Функция обеспечивает действия, заданные классом, к которому относится переданный параметр.
б) Один метод имеет одно тело, которое во время выполнения вызова интерпретируется по правилам того класса, которому принадлежит аргумент этого действия.
Аргумент действия — реальный объект, в отличие от параметров, которые являются формальными.
в) Параметр должен быть полиморфным объектом, а аргумент — может быть полиморфным объектом.
г) Ограничение на полиморфные параметры состоит в том, что значения аргументов должны быть объектами классов из определенного списка.
д) Вызов метода осуществляется с помощью имени этого метода. При этом на месте полиморфного параметра должен стоять полиморфный аргумент.
е) В C++ «чистый» полиморфизм не реализован.
4) Полиморфизм включения:
а) Методов может быть несколько. Все они имеют одно и то же имя и список пара-метров. Методы являются методами классов, связанных отношением наследования. Полиморфизм включения реализуется набором этих методов.
б) Полиморфным параметром является сам объект одного из классов, входящих в ие-рархию наследования.
в) Полиморфные объекты должны быть объектами класса, входящего в иерархию на-следования.
г) В C++ реализовано с использованием виртуальных функций, которые вызываются по указателю или ссылке на объекты.
5) Параметрический полиморфизм:
а) В качестве параметров в методе используется неопределенный класс, который выставлен в качестве параметра, который может быть конкретизирован.
б) В качестве полиморфного параметра используется неопределенный класс, который конкретизирован.
в) Нужно, чтобы реализации имели одинаковый набор параметров, тела могут быть любыми.
г) Вызов полиморфного метода осуществляется вызовом соответствующего метод с указанием конкретного класса, имя которого занимает имя неопределенного класса.
д) В языке C++ реализовано с помощью шаблонных классов.
6) Полиморфизм специализации:
а) Реализуется с помощью нескольких функций, количество которых не ограничено, но конечно.
б) Каждый метод должен иметь списки параметров, различимые либо количеством, либо типами входных параметров.
в) Ограничение: списки параметров не должны совпадать.
г) Вызов по имени с заданием соответствующего списка аргументов.
д) В C++ реализовано с помощью механизма переопределения функций (например, задание нескольких конструкторов).
39 Параметрический полиморфизм и полиморфизм специализации: реализация в языке С++
См. 38
40 Чистый полиморфизм и полиморфизм включения: реализация в языке С++
См. 38