- •Проектирование информационных систем
- •Лабораторная работа № 6
- •Учебные вопросы:
- •Литература, техническое и программное обеспечение:
- •Вопрос 1. Модель проектирования: диаграммы взаимодействия Диаграммы последовательностей и кооперации
- •Пример диаграммы кооперации: makePayment
- •Основные обозначения для диаграмм взаимодействия: Отображение классов и экземпляров объектов
- •Синтаксис для отображения сообщений
- •Основные обозначения диаграммы кооперации: Отображение связей
- •Отображение сообщений
- •Сообщения, передаваемые самому объекту
- •Создание экземпляров объектов
- •Представление порядка передачи сообщений
- •Представление условных сообщений
- •Представление взаимоисключающих условных маршрутов
- •Представление итерационного процесса или циклов
- •Сообщения, передаваемые классу
- •Вопрос 2. Модель проектирования: области видимости
- •Обеспечение видимости посредством атрибутов
- •Обеспечение видимости посредством параметров
- •Локальная видимость
- •Глобальная видимость
- •Вопрос 3. Модель проектирования: создание диаграммы классов
- •Классы из модели предметной области и модели проектирования
- •Создание диаграммы классов для pos-системы тт Алгоритм построения диаграмм классов
- •Добавление имен методов
- •Выбор имен методов
- •Имена методов: create
- •Имена методов: методы доступа
- •Имена методов: сложные объекты
- •Имена методов: синтаксис с учетом языка
- •Добавление дополнительной информации о типах
- •Добавление ассоциаций и информации о навигации
- •Добавление зависимостей
Локальная видимость
Локальная видимость (locally declared visibility) между объектами А и В существует в том случае, если объект В объявлен в качестве локальной переменной в методе объекта А. Это относительно "временная" видимость, поскольку она существует только в контексте одного метода. Это третий по распространенности способ обеспечения видимости между объектами в объектно-ориентированных системах. Такая форма видимости между объектами достигается двумя следующими способами.
Создается новый локальный экземпляр и присваивается в качестве значения локальной переменной.
Локальной переменной присваивается объект, возвращаемый другим методом.
Как и в случае с обеспечением видимости посредством параметров, зачастую локальная видимость преобразуется в видимость посредством атрибутов.
В качестве примера второго варианта можно рассматривать метод enterItem класса Register (рис. 2.5).
Существует вариант второго способа, когда переменная явно не объявляется в методе, но неявно существует как возвращаемое значение метода. Например,
Рисунок 2.5 – Локальная видимость
Глобальная видимость
Глобальная видимость (global visibility) между объектами А и В существует в том случае, когда объект В является глобальным по отношению к А. Это относительно постоянная видимость, поскольку она поддерживается до тех пор, пока существуют объекты А и В. Это наиболее редкий способ обеспечения видимости между объектами в объектно-ориентированном программировании.
Один из способов достижения глобальной видимости состоит в присваивании экземпляра объекта глобальной переменной. Однако такой подход возможен не во всех языках (например, возможен в C++, но не в Java). Более предпочтительный способ состоит в использовании шаблона Singleton.
В языке UML существуют обозначения для иллюстрации различных типов видимости на диаграммах кооперации (рис. 2.6). Однако они являются необязательными и зачастую не используются. Их применяют только в том случае, когда требуется уточнить способ обеспечения видимости.
Рисунок 2.6 – Реализация различных способов обеспечения видимости
Вопрос 3. Модель проектирования: создание диаграммы классов
Хотя в ходе лабораторных работ диаграммы классов создаются после диаграмм взаимодействия, на самом деле они зачастую разрабатываются параллельно. Имена многих классов, методов и типы отношений с помощью шаблонов распределения обязанностей можно определить уже на начальной стадии проектирования, до построения диаграмм взаимодействия. Желательно выполнять проектирование следующим образом: сначала стоит построить схематичные диаграммы взаимодействия, затем создать диаграммы классов, после чего детализировать диаграммы взаимодействия и т.д.
Диаграммы классов можно рассматривать как альтернативу картам CRC, обеспечивающую более удобное графическое представление информации при распределении обязанностей между классами.
Диаграмма классов, представленная на рис. 3.1, иллюстрирует фрагмент программного решения для классов Register и Sale.
Рисунок 3.1 – Пример диаграммы программных классов
Диаграмма классов (design class diagram) иллюстрирует спецификации программных классов и интерфейсов (например, интерфейсов Java, С# и т.д.) в приложении. Обычно на такую диаграмму выносится следующая информация:
Классы, ассоциации и атрибуты;
Интерфейсы со своими операциями и константами;
Методы;
Информация о типах атрибутов;
Способы навигации;
Зависимости.
В отличие от диаграммы классов из модели предметной области, диаграммы классов проектирования отображают определения программных сущностей, а не понятия предметной области.
В RUP не определен отдельный артефакт под названием "диаграмма классов проектирования". Там определена лишь модель проектирования, которая может включать несколько типов диаграмм, в том числе диаграммы классов, взаимодействия и пакетов. Диаграммы классов из модели проектирования RUP иллюстрируют "классы проектирования" в терминах RUP. Поэтому зачастую диаграммы классов из модели проектирования называют просто диаграммами классов проектирования.