Дисциплина "Объектно-ориентированное программирование" Весенний семестр 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 "Общих требований к выполнению цикла лабораторных работ".