Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП(ПОИТ)(Сурков).doc
Скачиваний:
24
Добавлен:
03.05.2019
Размер:
937.98 Кб
Скачать

Контрольная работа №2 Указания по выбору варианта

Выбор вариантов теоретических вопросов и контрольного задания осуществляется студентом самостоятельно на основании двух последних цифр номера зачетной книжки из данных табл. 1.

Теоретическая часть (вопросы)

  1. Принципы модульного программирования на языке C++. Пространства имен.

  2. Перегрузка идентификаторов. Предопределенные аргументы в подпрограммах.

  3. Классы в языке C++. Наследование. Конструкторы и деструкторы. Создание объектов по значению (на стеке) и по ссылке (в динамической памяти). Стандартные конструкторы.

  4. Порядок конструирования и разрушения объектов. Агрегирование объектов. Операторы new и delete. Размещающий оператор new. Вложенные определения классов. «Друзья» класса. Статические члены класса.

  5. Множественное наследование. Проблема повторяющихся базовых классов. Типовой пример применения множественного наследования — observer.

  6. Виртуальные методы. Абстрактые методы и классы. Подстановочные функции.

  7. Операторы приведения типа в языке C++. Информация о типе времени выполнения программы — RTTI.

  8. Ссылки. Рекомендации по работе со ссылками. Типичные ошибки при работе со ссылками.

  9. Обработка исключительных ситуаций на языке C++. Защита от утечки ресурсов. Оболочечные объекты (auto_ptr).

  10. Перегрузка операторов. Перегрузка бинарных операторов. Перегрузка унарных операторов. Перегрузка операторов преобразования типа.

  11. Шаблоны функций. Перегрузка шаблонов функций. Шаблоны классов. Специализации шаблонов. Создание новых типов данных на базе шаблонов.

  12. Стандартная библиотека шаблонов. Потоковый ввод-вывод. Строки. Контейнеры. Итераторы. Алгоритмы. Утилиты. Диагностика. Локализация. Определения для языка программирования C++. Числовые шаблоны.

  13. Перспективные технологии объектно-ориентированного программирования.

Практическая часть

Контрольное задание №1. Пример использования объектно-ориентированного программирования в языке C++

Спроектировать и реализовать программное средство на языке C++. В данном программном средстве должен быть реализован механизм (концепция) из таблицы 2.

Методические указания

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

Для выполнения работы использовать язык программирования C++.

При работе использовать материал представленный в теоретической части данного ЭУМКД.

Индивидуальные практические работы

Рабочей программой дисциплины «Объектно-ориентрированное программирование» предусмотрено выполнение двух индивидуально практических работ. Каждая индивидуально-практическая работа состоит из практической части. В этой части необходимо выполнить поставленное задание. Обычно это проектирование и реализация программного средства.

Индивидуальная практическая работа №1

Указания по выбору варианта

Для данной индивидуальной практической работы выбор варианта не предусмотрен.

Практическая часть

Контрольное задание №1. Основы ООП – сложный полиморфизм. Инкапсуляция. Наследование (расширение). Полиморфизм. Понятие Интерфейса и Реализации.

Разработать иерархию классов для представления геометрических фигур: прямая, ломанная, прямоугольник, эллипс, многоугольник. Разработать контейнер для хранения фигур.

Контейнер для хранения фигур реализовать в виде интерфейса с общими методами для всех фигур. Классы каждой из фигур должны быть реализацией данного интерфейса.

Главный код программы должен содержать создание экземпляров каждого из классов, и сохранение их в одномерном массиве типа интерфейса (коллекции фигур). Написать код работы с массивами, который проверяет работу каждого экземпляра.

Методические указания

При работе использовать материал представленный в теоретической части данного ЭУМКД.

Индивидуальная практическая работа №2

Указания по выбору варианта

Для данной индивидуальной практической работы выбор варианта не предусмотрен.

Практическая часть

Контрольное задание №1. Полиморфизм в иерархии классов. Множественное наследование. Агрегация. Механизмы взаимодействия между объектами. Приемы проектирования: фабрики классов.

Разработать иерархию классов для организации виртуальной файловой системы. Иерархия включает проектирование не менее четырех интерфейсов: IVFSObject, IFile, IDirectory, IVFS. IVFSObject – является предком IFile и IDirector, а так же содержит общий для них набор методов. Каждый экземпляр записи виртуальной файловой системы реализует методы интерфейса IVFSObject. В свою очередь интерфейсы IFile и IDirectory расширяют набор методов IVFSObject, каждый согласно своей функциональности. Интерфейс IVFS содержит методы доступа к метаинформации конкретного драйвера виртуальной файловой системы. В частности, он должен содержать методы получения таких данных как название используемого драйвера файловой системы, используемая кодировка в именах файлов и т.д. Кроме того, IVFS содержит метод доступа к корневому элементу файловой системы.

Разработка виртуальной файловой системы включает создание не менее трех драйверов в виде соответствующего набора классов. Это означает, что необходимо создать группу классов, реализующих каждый спроектированный интерфейс для своего типа драйвера представления данных. Таким образом, основной код программы не будет зависеть от типа драйвера, способа представления, хранения и организации файловой системы в памяти, так как будет ориентирован на использование экземпляров интерфейсных типов переменных. За счет такого подхода достигается полиморфизм исходного кода, который использует экземпляры разработанных классов. В качестве примера типов драйверов можно выбрать следующие представления реализаций файловой системы в памяти: native -работа с системными вызовами ОС, block – хранение файловой системы в виде одной записи (бинарного файла) на логическом диске ОС, ftp – доступ к файловой системе с использование сетевого протокола передачи файлов.

Для реализации выбора при создании экземпляра класса конкретного типа драйвера представления файловой системы необходимо использовать фабрику классов. Решение о выборе типа возвращаемого экземпляра фабрика принимает на основании входных параметров или внешнего конфигурационного файла.

Дополнительно рекомендуется реализовать методы монтирования и демонтирования различных файловых систем между собой по аналоги с UFS (файловой системы unix), таким образом, что каждый объект файловой системы может также является точкой монтирования IMountPoint, которая также является расширением IVFSObject.

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

Методические указания

При работе использовать материал представленный в теоретической части данного ЭУМКД.

6