- •Проектирование информационных систем
- •Лабораторная работа № 6
- •Учебные вопросы:
- •Литература, техническое и программное обеспечение:
- •Вопрос 1. Модель проектирования: диаграммы взаимодействия Диаграммы последовательностей и кооперации
- •Пример диаграммы кооперации: makePayment
- •Основные обозначения для диаграмм взаимодействия: Отображение классов и экземпляров объектов
- •Синтаксис для отображения сообщений
- •Основные обозначения диаграммы кооперации: Отображение связей
- •Отображение сообщений
- •Сообщения, передаваемые самому объекту
- •Создание экземпляров объектов
- •Представление порядка передачи сообщений
- •Представление условных сообщений
- •Представление взаимоисключающих условных маршрутов
- •Представление итерационного процесса или циклов
- •Сообщения, передаваемые классу
- •Вопрос 2. Модель проектирования: области видимости
- •Обеспечение видимости посредством атрибутов
- •Обеспечение видимости посредством параметров
- •Локальная видимость
- •Глобальная видимость
- •Вопрос 3. Модель проектирования: создание диаграммы классов
- •Классы из модели предметной области и модели проектирования
- •Создание диаграммы классов для pos-системы тт Алгоритм построения диаграмм классов
- •Добавление имен методов
- •Выбор имен методов
- •Имена методов: create
- •Имена методов: методы доступа
- •Имена методов: сложные объекты
- •Имена методов: синтаксис с учетом языка
- •Добавление дополнительной информации о типах
- •Добавление ассоциаций и информации о навигации
- •Добавление зависимостей
Вопрос 2. Модель проектирования: области видимости
Диаграммы взаимодействия для системных событий (enterItem и т.д.) иллюстрируют процесс передачи сообщений между объектами. Но чтобы некоторый объект-отправитель мог отослать сообщение объекту-получателю, получатель должен быть виден отправителю, т.е. отправитель должен содержать некую ссылку или указатель на объект-получатель.
Например, для отправки сообщения getSpecification от объекта Register к объекту ProductCatalog необходимо обеспечить видимость экземпляра объекта ProductCatalog для экземпляра объекта Register (рис. 2.1). Для создания диаграммы взаимодействия, на которой сообщение передается от экземпляра объекта Register к экземпляру ProductCataloq, необходимо, чтобы объект ProductCatalog был виден объекту Register. Типичным решением такой проблемы является использование ссылки на экземпляр ProductCatalog в качестве атрибута объекта Register.
При разработке взаимодействующих между собой объектов следует обеспечить необходимый для передачи сообщений уровень видимости.
В языке UML для иллюстрации областей видимости существуют специальные обозначения.
Рисунок 2.1 – Необходимость обеспечения видимости объекта ProductCatalog
для объекта Register1
В обычном понимании область видимости (visibility) обеспечивает способность одного объекта видеть другой объект или ссылаться на него. В более общем смысле это понятие связано с понятием контекста (или области действия): попадает ли один ресурс (например, экземпляр объекта) в контекст другого?
Существует четыре основных способа обеспечения видимости объекта В объектом А:
Посредством атрибутов. Объект В является атрибутом объекта А.
Посредством параметров. Объект В является параметром метода объекта А.
Локальная видимость. Объект В объявлен как локальная переменная в методе объекта А.
Глобальная видимость. Объект В каким-то образом виден глобально.
Обеспечение видимости посредством атрибутов
Видимость посредством атрибутов (attribute visibility) между объектами А и В существует в том случае, когда В является атрибутом А. Такой тип видимости можно назвать постоянным, поскольку видимость между объектами поддерживается до тех пор, пока существуют сами объекты. В объектно-ориентированных системах это очень популярная форма обеспечения видимости.
В качестве примера рассмотрим определение класса Register на языке Java, в котором обеспечивается видимость объекта ProductCataiog посредством атрибутов (переменных-членов Java).
Такая видимость между объектами необходима, поскольку на диаграмме взаимодействия для события enterItem, представленной на рис. 2.2, объект Register отправляет сообщение getSpecification объекту ProductCatalog.
Обеспечение видимости посредством параметров
Видимость между объектами А и В посредством параметров (parameter visibility) существует в том случае, если объект В передается в качестве параметра метода объекту А. Это "временная" видимость, поскольку она существует только в контексте данного метода. После видимости, обеспечиваемой с помощью атрибутов, это второй по распространенности тип обеспечения видимости в объектно-ориентированных системах.
Рисунок 2.2 – Видимость, обеспеченная с помощью атрибутов
В качестве примера можно привести процесс передачи сообщения makeLineItem экземпляру объекта Sale, когда экземпляр объекта productSpecification передается в качестве параметра. В контексте метода makeLineItem между объектами Sale и ProductSpecification существует видимость, обеспечиваемая с помощью параметров (рис. 2.3).
Рисунок 2.3 – Видимость, обеспечиваемая с помощью параметров
Зачастую видимость, обеспечиваемую посредством параметров, преобразуют в видимость, обеспечиваемую посредством атрибутов. Например, при создании нового экземпляра SalesLineItem объектом Sale методу инициализации (в языках C++ и Java это конструктор (constructor)) в качестве параметра передается экземпляр ProductSpecification. В методе инициализации значение этого параметра присваивается атрибуту и видимость устанавливается посредством атрибутов (рис. 2.4).
Рисунок 2.4 – Преобразование видимости посредством параметров в видимость
посредством атрибутов