Лабораторная работа 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 "Общих требований к выполнению цикла
           лабораторных работ".