Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзаменационные вопросы.doc
Скачиваний:
110
Добавлен:
01.05.2014
Размер:
583.17 Кб
Скачать

43. Сравнение видов полиморфизма

При сравнении видов полиморфизма будем обращать внимание на свойства:

  • количество и структура методов, используемых для реализации полиморфизма;

  • наличие и свойство полиморфного параметра;

  • ограничения на полиморфный параметр;

  • способ вызова полиморфного метода;

  • способ реализации в С++.

№ п/п

Виды

полиморф.

Свойства

Чистый

Включения

Параметрический

Специализации

1

Полиморфная функция

Есть

Есть

Есть

Есть

2

Характеристика полиморфного параметра

Полиморфная переменная или выражение

Полиморфная переменная или выражение

Класс

Список параметров

3

Значение полиморфного параметра

Объект

Объект

Имя класса

Список параметров

4

Ограничение на полиморфный параметр

Объект принадлежит классу из списка

Объект принадлежит классам иерархии наследования

Класс принадлежит множеству классов имеющих общий набор операций

Правила переопределения методов

5

Способ вызова полиморфной функции

По имени

По имени с использованием указателя на объект

По имени конкретизацией метода

По имени с заданием нужного списка параметров

6

Заменители полиморфного параметра

Нет

Нет

Нет

Есть

Список параметров

7

Количество не полиморфных функций, реализующих полиморфизм

Нет

Нет

нет

2 и более

8

Реализация в С++

Нет

Виртуальные функции, вызываемые с помощью указателя на объект

Шаблоны функций, шаблоны классов

Правила переопределения

функций

(перегрузка операций)

44. Организация вычислений в концептуальной модели ООП

  1. Обмен сообщениями в модели ООП является реализацией идеи децентрализации управления.

  2. Объектно-ориентированная программа есть описание взаимодействия объектов.

  3. Выполнение объектно-ориентированной программы состоит в обмене сообщениями между объектами.

  4. Объекты существуют и реализуют внутреннее поведение. В какой-то момент времени объект передает сообщение одному или нескольким объектам.

  5. Выполнение ОО программ заканчивается, когда все объекты перестают передавать сообщения.

45. Проектирование обмена сообщениями в программах на языке С++

  1. Сообщение – есть указание другому объекту на выполнение некоторого действия.

  2. Сообщения в общем случае должно содержать 3 составляющих:

  1. объект-получатель сообщения.

  2. селектор сообщения, указание какое действие должен выполнить объект-получатель.

  3. параметры, необходимые для выполнения действия.

  1. Одной из форм передачи сообщения м.б. следующее:

имя_объекта_получателя.селектор(список_параметров)

  1. Каждый объект, получивший сообщение, обязан выполнить действие, т.е предоставить метод для выполнения действия.

  2. Если объект-получатель не может предоставить метод для выполнения заданного действия, то он обязан выработать сообщение об ошибке.

  3. Если у объекта есть метод, который выполняет заданное действие, то этот метод вызывается.

  4. Объект-отправитель сообщает, как будет выполняться запрошенное действие, т.е. какой конкретный алгоритм будет использоваться для выполнения действия.

  5. Действие, задаваемое в сообщении, не является фиксированным в том смысле, что алгоритм может зависеть от объекта, его выполняющего. Различные объекты, получающие одно и то же сообщение, могут выполнять различные действия.

  6. В результате выполнения заданного действия м.б. изменены атрибуты получателя, или атрибуты класса, которому принадлежит объект. В результате исполнения запроса действия заданного сообщением, м.б. выработаны сообщения.

  7. Поведение объекта – совокупность действий получателя сообщения.

46. Реализация в ОО программе на языке С++ "почтового клиента" для обмена сообщениями и его использование

Клиент – важнейшая часть почтовой системы, осуществляющая конечную обработку проблемных сообщений. Клиент взаимодействует с другими клиентами через одни или несколько серверов, выполняя посылку и приём сообщений. Клиент в общем случае должен иметь следующие функции: отправка сообщения, обработка принятого сообщения, регистрация на сервере, дерегистрация на сервере.

47. Реализация в ОО программе на языке С++ "почтового сервера" для обмена сообщениями и его использование

Сервер – важнейшая часть почтовой системы, обеспечивающая взаимодействие клиентов путём обработки и передачи сообщений. Сервер организует учёт клиентов, их регистрацию и проблемное функционирование. Сервер в общем случае должен иметь следующие функции: отправка сообщения, обработка принятого сообщения, перенаправление сообщения, регистрация клиента, дерегистрация клиента.

48. Абстрактные классы: определение, назначение, реализация в языке C++ и использование в ОО программах.

  1. ОО модель предусматривает построение классов двух видов:

  • для которых определены атрибуты и методы(конкретные классы);

  • классы, выражающие общую концепцию (намерение), которое не детализировано.

Конкретные классы позволяют создавать объекты классов.

Классы второго вида не предусматривают создание классов.

  1. С++ позволяет создавать классы второго класса – эти классы называются абстрактными. В С++ абстрактный класс образуется если в нем определена чисто-виртуальная функция или она наследуется. Объектов абстрактный класс С++ иметь не может.

  2. Язык С++ позволяет использование указателей и ссылки на абстрактные классы.

49. Множественное наследование: назначение и использование в ОО программах. Реализация в языке С++

  1. Язык С++ позволяет для класса задать несколько родителей.

  2. В списке классов представления родителей должны быть уникальные классы.

  3. Количество базовых классов при множественном наследовании не ограничено.

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

  5. Область видимости производного класса вложена в область видимости каждого базового класса.

  6. Уровни доступа в множественном наследовании задаются для каждого класса спецификатором наследования.

  7. Сокрытие имен осуществляется, так же как и при простом наследовании.

  8. Инициализация объектов базовых классов осуществляется путем вызова конструкторов базовых классов. Для инициализации подобъектов базового класса рекомендуется использовать список инициализации. Порядок следования конструкторов в списке инициализации не влияет на корректность инициализации.

  9. При открытом наследовании для каждого объекта производного класса определяется отношение подстановки для каждого объекта базового класса.

  10. Множественное наследование исторически считалось не нужным.

  11. Множественное наследование по-настоящему полезно в двух случаях:

  • новый класс должен объединять свойства существующий классов;

  • когда два класса: интерфейс и реализация – получается новый класс, который задает реализацию интерфейса.

35