- •2. Появление ооп: необходимость в трансформируемых типах данных.
- •3. Появление ооп: необходимость обеспечения распределения вычислений в пространстве и во времени. Основные идеи ооп.
- •Классы объектов
- •Инкапсуляция атрибутов и методов класса
- •Системы классов: агрегация и композиция
- •Создание объектов и задание их начальных состояний
- •27. Создание объектов класса, использующих объекты других классов в качестве членов-данных
- •Возможности прямого доступа к членам базового класса, обусловленных только размещение в секциях базового класса и вложением видимости.
- •На возможности прямого доступа к членам базового класса существенное влияние оказывают спецификаторы доступа.
- •Трансформация секций базового класса, обусловленная видом наследования.
- •Виды сценариев наследования
- •43. Сравнение видов полиморфизма
43. Сравнение видов полиморфизма
При сравнении видов полиморфизма будем обращать внимание на свойства:
-
количество и структура методов, используемых для реализации полиморфизма;
-
наличие и свойство полиморфного параметра;
-
ограничения на полиморфный параметр;
-
способ вызова полиморфного метода;
-
способ реализации в С++.
№ п/п |
Виды полиморф.
Свойства |
Чистый |
Включения |
Параметрический |
Специализации |
1 |
Полиморфная функция |
Есть |
Есть |
Есть |
Есть |
2 |
Характеристика полиморфного параметра |
Полиморфная переменная или выражение |
Полиморфная переменная или выражение |
Класс |
Список параметров |
3 |
Значение полиморфного параметра |
Объект |
Объект |
Имя класса |
Список параметров |
4 |
Ограничение на полиморфный параметр |
Объект принадлежит классу из списка |
Объект принадлежит классам иерархии наследования |
Класс принадлежит множеству классов имеющих общий набор операций |
Правила переопределения методов |
5 |
Способ вызова полиморфной функции |
По имени |
По имени с использованием указателя на объект |
По имени конкретизацией метода |
По имени с заданием нужного списка параметров |
6 |
Заменители полиморфного параметра |
Нет |
Нет |
Нет |
Есть Список параметров |
7 |
Количество не полиморфных функций, реализующих полиморфизм |
Нет |
Нет |
нет |
2 и более |
8 |
Реализация в С++ |
Нет |
Виртуальные функции, вызываемые с помощью указателя на объект |
Шаблоны функций, шаблоны классов |
Правила переопределения функций (перегрузка операций) |
44. Организация вычислений в концептуальной модели ООП
-
Обмен сообщениями в модели ООП является реализацией идеи децентрализации управления.
-
Объектно-ориентированная программа есть описание взаимодействия объектов.
-
Выполнение объектно-ориентированной программы состоит в обмене сообщениями между объектами.
-
Объекты существуют и реализуют внутреннее поведение. В какой-то момент времени объект передает сообщение одному или нескольким объектам.
-
Выполнение ОО программ заканчивается, когда все объекты перестают передавать сообщения.
45. Проектирование обмена сообщениями в программах на языке С++
-
Сообщение – есть указание другому объекту на выполнение некоторого действия.
-
Сообщения в общем случае должно содержать 3 составляющих:
-
объект-получатель сообщения.
-
селектор сообщения, указание какое действие должен выполнить объект-получатель.
-
параметры, необходимые для выполнения действия.
-
Одной из форм передачи сообщения м.б. следующее:
имя_объекта_получателя.селектор(список_параметров)
-
Каждый объект, получивший сообщение, обязан выполнить действие, т.е предоставить метод для выполнения действия.
-
Если объект-получатель не может предоставить метод для выполнения заданного действия, то он обязан выработать сообщение об ошибке.
-
Если у объекта есть метод, который выполняет заданное действие, то этот метод вызывается.
-
Объект-отправитель сообщает, как будет выполняться запрошенное действие, т.е. какой конкретный алгоритм будет использоваться для выполнения действия.
-
Действие, задаваемое в сообщении, не является фиксированным в том смысле, что алгоритм может зависеть от объекта, его выполняющего. Различные объекты, получающие одно и то же сообщение, могут выполнять различные действия.
-
В результате выполнения заданного действия м.б. изменены атрибуты получателя, или атрибуты класса, которому принадлежит объект. В результате исполнения запроса действия заданного сообщением, м.б. выработаны сообщения.
-
Поведение объекта – совокупность действий получателя сообщения.
46. Реализация в ОО программе на языке С++ "почтового клиента" для обмена сообщениями и его использование
Клиент – важнейшая часть почтовой системы, осуществляющая конечную обработку проблемных сообщений. Клиент взаимодействует с другими клиентами через одни или несколько серверов, выполняя посылку и приём сообщений. Клиент в общем случае должен иметь следующие функции: отправка сообщения, обработка принятого сообщения, регистрация на сервере, дерегистрация на сервере.
47. Реализация в ОО программе на языке С++ "почтового сервера" для обмена сообщениями и его использование
Сервер – важнейшая часть почтовой системы, обеспечивающая взаимодействие клиентов путём обработки и передачи сообщений. Сервер организует учёт клиентов, их регистрацию и проблемное функционирование. Сервер в общем случае должен иметь следующие функции: отправка сообщения, обработка принятого сообщения, перенаправление сообщения, регистрация клиента, дерегистрация клиента.
48. Абстрактные классы: определение, назначение, реализация в языке C++ и использование в ОО программах.
-
ОО модель предусматривает построение классов двух видов:
-
для которых определены атрибуты и методы(конкретные классы);
-
классы, выражающие общую концепцию (намерение), которое не детализировано.
Конкретные классы позволяют создавать объекты классов.
Классы второго вида не предусматривают создание классов.
-
С++ позволяет создавать классы второго класса – эти классы называются абстрактными. В С++ абстрактный класс образуется если в нем определена чисто-виртуальная функция или она наследуется. Объектов абстрактный класс С++ иметь не может.
-
Язык С++ позволяет использование указателей и ссылки на абстрактные классы.
49. Множественное наследование: назначение и использование в ОО программах. Реализация в языке С++
-
Язык С++ позволяет для класса задать несколько родителей.
-
В списке классов представления родителей должны быть уникальные классы.
-
Количество базовых классов при множественном наследовании не ограничено.
-
Порядок перечисления базовых классов при задании влияет только на вызов конструктора при создании объекта. Подобъекты базового класса создаются в том порядке в котором перечислены базовые классы.
-
Область видимости производного класса вложена в область видимости каждого базового класса.
-
Уровни доступа в множественном наследовании задаются для каждого класса спецификатором наследования.
-
Сокрытие имен осуществляется, так же как и при простом наследовании.
-
Инициализация объектов базовых классов осуществляется путем вызова конструкторов базовых классов. Для инициализации подобъектов базового класса рекомендуется использовать список инициализации. Порядок следования конструкторов в списке инициализации не влияет на корректность инициализации.
-
При открытом наследовании для каждого объекта производного класса определяется отношение подстановки для каждого объекта базового класса.
-
Множественное наследование исторически считалось не нужным.
-
Множественное наследование по-настоящему полезно в двух случаях:
-
новый класс должен объединять свойства существующий классов;
-
когда два класса: интерфейс и реализация – получается новый класс, который задает реализацию интерфейса.