- •Проектирование информационных систем
- •Обеспечение видимости посредством атрибутов
- •Обеспечение видимости посредством параметров
- •Локальная видимость
- •Глобальная видимость
- •Вопрос 2. Модель проектирования: создание диаграммы классов
- •Классы из модели предметной области и модели проектирования
- •Создание диаграммы классов для pos-системы тт Алгоритм построения диаграмм классов
- •Добавление имен методов
- •Выбор имен методов
- •Имена методов: create
- •Имена методов: методы доступа
- •Имена методов: сложные объекты
- •Имена методов: синтаксис с учетом языка
- •Добавление дополнительной информации о типах
- •Добавление ассоциаций и информации о навигации
- •Добавление зависимостей
Обеспечение видимости посредством параметров
Видимость между объектами А и В посредством параметров (parameter visibility) существует в том случае, если объект В передается в качестве параметра метода объекту А. Это "временная" видимость, поскольку она существует только в контексте данного метода. После видимости, обеспечиваемой с помощью атрибутов, это второй по распространенности тип обеспечения видимости в объектно-ориентированных системах.
В качестве примера можно привести процесс передачи сообщения makeLineItem экземпляру объекта Sale, когда экземпляр объекта productSpecification передается в качестве параметра. В контексте метода makeLineItem между объектами Sale и ProductSpecification существует видимость, обеспечиваемая с помощью параметров (рис. 1.3).
Рисунок 1.3 – Видимость, обеспечиваемая с помощью параметров
Зачастую видимость, обеспечиваемую посредством параметров, преобразуют в видимость, обеспечиваемую посредством атрибутов. Например, при создании нового экземпляра SalesLineItem объектом Sale методу инициализации (в языках C++ и Java это конструктор (constructor)) в качестве параметра передается экземпляр ProductSpecification. В методе инициализации значение этого параметра присваивается атрибуту и видимость устанавливается посредством атрибутов (рис. 1.4).
Рисунок 1.4 – Преобразование видимости посредством параметров в видимость
посредством атрибутов
Локальная видимость
Локальная видимость (locally declared visibility) между объектами А и В существует в том случае, если объект В объявлен в качестве локальной переменной в методе объекта А. Это относительно "временная" видимость, поскольку она существует только в контексте одного метода. Это третий по распространенности способ обеспечения видимости между объектами в объектно-ориентированных системах. Такая форма видимости между объектами достигается двумя следующими способами.
Создается новый локальный экземпляр и присваивается в качестве значения локальной переменной.
Локальной переменной присваивается объект, возвращаемый другим методом.
Как и в случае с обеспечением видимости посредством параметров, зачастую локальная видимость преобразуется в видимость посредством атрибутов.
В качестве примера второго варианта можно рассматривать метод enterItem класса Register (рис. 1.5).
Существует вариант второго способа, когда переменная явно не объявляется в методе, но неявно существует как возвращаемое значение метода. Например,
Рисунок 1.5 – Локальная видимость
Глобальная видимость
Глобальная видимость (global visibility) между объектами А и В существует в том случае, когда объект В является глобальным по отношению к А. Это относительно постоянная видимость, поскольку она поддерживается до тех пор, пока существуют объекты А и В. Это наиболее редкий способ обеспечения видимости между объектами в объектно-ориентированном программировании.
Один из способов достижения глобальной видимости состоит в присваивании экземпляра объекта глобальной переменной. Однако такой подход возможен не во всех языках (например, возможен в C++, но не в Java). Более предпочтительный способ состоит в использовании шаблона Singleton.
В языке UML существуют обозначения для иллюстрации различных типов видимости на диаграммах кооперации (рис. 1.6). Однако они являются необязательными и зачастую не используются. Их применяют только в том случае, когда требуется уточнить способ обеспечения видимости.
Рисунок 1.6 – Реализация различных способов обеспечения видимости