Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
oop12.doc
Скачиваний:
17
Добавлен:
06.02.2016
Размер:
1.13 Mб
Скачать

4.Варианты заданий

Определить и реализовать класс MCircle. Определить и реализовать операции над данными этого класса. Написать и выполнить программу использования этого класса для реализации интерфейса пользователя.

Порядок выполнения работы.

1. Определить и реализовать класс MCircle.

2. Разработать программу, которая выводит на экран меню пользователя и выполняет вызов предыдущих 6-ти лабораторных работ.

3. Выполнить тестирование программы.

Рекомендуемая литература

  1. Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. 2-е изд. Rational Санта-Клара, Калифорния / Перевод с английского под редакцией И. Романовского и Ф. Андреева [электронный ресурс].

  2. Страуструп Б. Язык программирования С++. Специальное издание, М.:ООО Бином-Пресс, 2005г.

  3. Электронный конспект лекций по курсу «ООП».

Приложение A

СИСТЕМА ОБОЗНАЧЕНИЙ

(приведена из книги Гради Буча [1])

Каждый класс должен иметь имя; если имя слишком длинно, его можно сократить или увеличить сам значок на диаграмме. Имя каждого класса должно быть уникально в содержащей его категории. Для некоторых языков, в особенности - для C++ и Smalltalk, мы должны требовать, чтобы каждый класс имел имя, уникальное в системе.

 

Рис. А-2. Значок класса.

На некоторых значках классов полезно перечислять несколько атрибутов и операций класса. "На некоторых", потому что для большинства тривиальных классов это хлопотно и не нужно. Атрибуты и операции на диаграмме представляют прообраз полной спецификации класса, в которой объявляются все его элементы. Если мы хотим увидеть на диаграмме больше атрибутов класса, мы можем увеличить значок; если мы совсем не хотим их видеть - мы удаляем разделяющую черту и пишем только имя класса.

Рис. А-3. Значок абстрактного класса.

 

Рис. А-4. Значки отношений между классами.

  • 0..1 - Ноль или одна

  • 3..7 - Указанный интервал

  • 1..3, 7 - Указанный интервал или точное число

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

Обозначения оставшихся трех типов связи уточняют

Рис. А-5 показывает, как описывается в этих обозначениях задача обслуживания тепличной гидропонной системы. Эта диаграмма представляет только малую часть структуры классов системы. Мы видим здесь класс GardeningPlan (план выращивания), который имеет атрибут, названный crop (посев), одну операцию-модификатор execute (выполнить) и одну операцию-селектор canHarvest (можно собирать?). Имеется ассоциация между этим классом и классом EnvironmentalController (контроллер среды выращивания): экземпляры плана задают климат, который должны поддерживать экземпляры контроллера.

 

Рис. А-5. Диаграмма классов гидропонной системы.

Эта диаграмма также показывает, что класс EnvironmentalController является агрегатом: его экземпляры содержат в точности по одному экземпляру классов Heater (нагреватель) и Cooler (охлаждающее устройство), и любое число экземпляров класса Light (лампочка). Оба класса Heater и Cooler являются подклассами абстрактного запускающего процесс класса Actuator, который предоставляет протоколы startUp и shutDown (начать и прекратить соответственно), и который использует класс Temperature.

Рис. А-10. Значок утилиты классов.

Как показано на Рис. А-10, утилита классов обозначается обычным значком класса с украшением в виде тени. В этом примере утилита классов PlanMetrics (параметры плана) предоставляет две важные операции: expectedYield (ожидаемый урожай) и timeToHarvest (время сбора урожая). Утилита обеспечивает эти две операции на основе услуг, предоставляемых классами нижнего уровня - GardeningPlan (план) и CropDatabase (база данных об урожае). Как показывает диаграмма, PlanMetrics зависит от CropDatabase: получает от нее информацию об истории посевов. В свою очередь, класс PlanAnalyst использует услуги PlanHetrics.

Рис. А-10 иллюстрирует

Вложенность. Классы могут быть физически вложены в другие классы, а категории классов - в другие категории и т.д. Обычно это нужно для того, чтобы ограничить видимость имен. Вложение соответствует объявлению вложенной сущности в окружающем ее контексте. Мы изображаем вложенность физически вложенным значком; на Рис. А-11 полное имя вложенного класса - Nutritionist::NutrientProfile.

Рис. А-11. Значок вложенности.

В соответствии с правилами выбранного языка реализации, классы могут содержать экземпляры вложенного класса или использовать его. Языки обычно не допускают наследования от вложенного класса.

Мы изображаем способ доступа следующими украшениями связи:

  • <нет украшения> - открытый (по умолчанию)

  • | - защищенный

  • || - закрытый

  • ||| - реализация

Мы ставим их как "засечки" на линии связи у источника. Например, на Рис. А-12 показано, что класс GrainCrop множественно наследует от классов Crop (посев) (открытый суперкласс) и FoodItem (пища) (защищенный суперкласс).

 

Рис. А-12. Значок управления доступом.

Типы отношении. В некоторых языках встречаются настолько всепроникающие типы отношений, с настолько фундаментальной семантикой, что было бы оправдано введение новых символов. В C++, например, имеется три таких конструкции:

  • static - переменная (или функция) класса;

  • virtual - совместно используемый базовый класс в ромбовидной структуре наследования;

  • friend - класс, которому даны права доступа к закрытым и защищенным элементам другого класса.

Рис. А-13. Значки отношений.

Логично использовать для них такое же украшение в виде треугольного значка, как и для абстрактного класса, но с символами S, V или F соответственно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]