Лабораторная работа 3

Дисциплина "Объектно-ориентированное программирование"
Весенний семестр 2004/2005 уч.г.
ТРЕБОВАНИЯ
к выполнению лабораторной работы N 3
"ПОСТРОЕНИЕ КЛАССОВ С ИСПОЛЬЗОВАНИЕМ ПРОСТОГО И
МНОЖЕСТВЕННОГО НАСЛЕДОВАНИЯ"
1. Условия выполнения разработкм
1.1. В лабораторной работе N 3 развиваются проблемные модели
и классы, разработанные и прошедшие тестирование при
выполнении лабораторной работы N 2.
1.2. Задание на лабораторную работу N 3 формулируется
ИНДИВИДУАЛЬНО для каждого студента и требует построения
новых проблемных моделей и классов путем модификации
ранее разработанных за счет применения простого и
множественного наследования.
2. Основные этапы разработки
2.1. Формулирование способов построения новых проблемных
моделей и новых классов, представляющих эти модели,
путем применения простого и множественного наследования.
2.2. Построение системы НОВЫХ объектов предметной области,
порожденных применением наследования, и соответствующих
им классов.
В процессе объектно-ориентированного анализа НОВОЙ
проблемной задачи:
- определяются и обосновываются информационные
и математические модели НОВЫХ объектов, действий
и связей между ними; при этом должны быть
обеспечены однозначная идентификация каждого
НОВОГО объекта и учет общего количества объектов
класса, существующих в любой момент выполнения
программы, использующей объекты;
- формируются НОВЫЕ (по отношению к набору классов,
используемых в лабораторной работе 2) классы
объектов и задаются отношения между классами,
которые наглядно отображаются с помощью
обозначений, принятых в языке UML;
- выбираются и обосновываются сценарии наследования
для построения НОВЫХ моделей и классов;
- определяется и обосновывается состав и структура
набора виртуальных функций, включая виртуальный
деструктор;
- проектируются конструкторы производных классов;
при этом обосновываются:
- необходимость в конструкторах,
- их конкретные функции и
- организация инициализации членов базовых
классов.
2.3. Проектирование НОВЫХ классов объектов на языке С++ на основе
контрактов.
Для каждого НОВОГО класса:
- формируется набор членов-данных;
- определяются члены-данные, требющие защиты, и
выбираются средства защиты;
- формируется набор интерфейсных и внутренних членов-
функций;
- для каждой функции определяется необходимость и
способы защиты ее параметров, а также необходимость
и способ защиты членов-данных класса со стороны
функции;
- для каждой интерфейсной функции, включая конструкторы
и деструктор, должны быть сформулированы пред- и
постусловия;
- формулируются инварианты;
- разрабатывается контракт.
2.4. Проектирование системы описаний классов как системы
файлов на языке С++.
2.5. Разработка методики тестирования классов и тестовых
наборов данных.
2.6. Разработка внешней спецификации тестирующей программы.
Программа должна обеспечить тестирование классов
как самостоятельных компонентов для применения в
других разработках.
2.7. Разработка тестирующей программы на языке С++.
2.8. Определение количественных характеристик разработки,
обусловленных применением наследования:
- количество и максимальное число уровней в иерархиях
наследования;
- количество НОВЫХ классов, построенных в выполняемой
работе;
- количество использованных ранее разработанных классов
и количество тех из них, для которых потребовавалось
внесение изменений;
- размер (в строках текста на С++) НОВЫХ программных
компонентов:
- суммарный размер НОВЫХ классов,
- размер НОВОЙ тестирующей программы.
3. Подготовка отчета по лабораторной работе
Отчет должен быть выполнен в соответствии с требованиями
раздела 4 "Общих требований к выполнению цикла
лабораторных работ".