
- •Лабораторная работа по uml n2 «Работа со связями»
- •1. Ассоциации
- •2. Ограничения ассоциаций
- •В этом примере ограничение ассоциации Обслуживает указывает на то, что БанковскийСлужащий обслуживает клиентов в порядке очереди
- •3. Классы ассоциаций
- •4. Связи
- •5. Кратность
- •6. Квалификатор ассоциации
- •7. Рефлексивные ассоциации
- •8. Наследование и обобщение
- •9. Изучение наследования
- •10. Абстрактные классы
- •11. Зависимости
- •12. Объекты-агрегаты
- •17. Ограничения агрегаций
- •18. Композитные объекты
- •19. Контексты
- •20. Интерфейсы и реализации
- •Класс связан с интерфейсом отношением реализации, которое обозначается пунктирной линией с незакрашенным треугольником, примыкающим к интерфейсу и указывающим на него
- •21. Области видимости
- •Общедоступные и защищенные операции для автомобиля
- •22. Статические и динамические классы
- •Вопросы и ответы
- •Задание
21. Области видимости
Понятие области видимости тесно связано с интерфейсом и реализацией. Термин видимость применяется по отношению к атрибутам и операциям и задает типы других классов, которые могут использовать заданные атрибуты или операции класса (или операции интерфейса). Выделяют три области видимости. Элементы открытой области (public) могут использовать другие классы. Атрибуты и операции защищенной области (protected) могут использовать только наследники этого класса. Атрибуты и операции закрытой (private) области используются только самими классами. Для телевизионной аппаратуры операции изменить Громкость () и изменитьКанал () общедоступны, а операция отобразитьКартинкуНаЭкране () — закрыта. Для автомобиля операции увеличить Скорость () и тормозить () — открыты, а операция обновитьКилометраж() относится к защищенной области.
Несложно догадаться, что реализация предполагает открытость всех операций интерфейса. Ограничивать доступ к операциям не имеет смысла, потому что они применяются для реализации множества классов.
Для обозначения открытой области видимости перед обозначением атрибута или операции ставится символ "+", элементы защищенной области помечаются символом "#", а члены закрытой области — символом "-". Примеры вышеупомянутых обозначений открытых, защищенных и закрытых операций для телевизора и автомобиля приведены на рис. 23.
Рис. 23. Общедоступные и закрытые операции для телевизора;
Общедоступные и защищенные операции для автомобиля
22. Статические и динамические классы
С атрибутами и операциями связано понятие статических и динамических классов. Для динамического класса (instance scope) каждый экземпляр имеет собственное значение атрибутов и операций. Все экземпляры статического класса (classifier scope) обладают одним общим значением для каждого атрибута или операции. В последнем случае имена атрибутов и операций подчеркиваются. Статический класс используется в том случае, когда заданная группа экземпляров должна совместно использовать значения закрытого атрибута. Динамические классы встречаются гораздо чаще.
Резюме
Если без отражения взаимосвязей модель классов является набором прямоугольников, составляющих словарь предметной области, то при их наличии проявляется взаимосвязь терминов словаря, что позволяет получить частичный снимок моделируемого мира. Ассоциации представляют собой общую концептуальную связь между классами. Каждый класс в ассоциации играет свою роль, а кратность показывает, сколько объектов одного класса связано с одним объектом другого класса. Возможны разные типы кратности. Графическим эквивалентом ассоциации является линия между прямоугольными изображениями классов с указанием ролей и кратностей на ее концах. Как и класс, ассоциация может иметь атрибуты и операции.
Класс может наследовать атрибуты и операции другого класса. Наследующий класс является дочерним по отношению к родительскому, от которого он наследуется. При изучении наследования в исходной модели были обнаружены классы, имеющие общие атрибуты и операции. Абстрактные классы предназначены только для использования в качестве базовых для наследования и не порождают своих объектов. Наследование изображается направленной к родительскому классу линией между родительским и дочерним классом.
Взаимосвязь при использовании одного класса другим называется зависимостью. Наиболее общий случай зависимости состоит в использовании в сигнатуре операции одного класса другим классом. Зависимость изображается пунктирной линией со стрелкой, соединяющей связанные классы и исходящей из зависимого класса.
Завершая изучение классов и типов их взаимосвязей, необходимо остановиться на некоторых дополнительных типах взаимоотношений. Агрегация задает ассоциацию "часть-целое". "Целый" класс состоит из классов-компонентов. Компонент может быть частью нескольких агрегатов. Композит представляет собой строгую форму агрегации, в которой компонент может быть частью только одного целого. Обозначения UML для агрегации и композиции очень схожи. На линии связи части и целого со стороны агрегата добавляется ромб. При обычной агрегации используется полый ромб, а при композиции — закрашенный.
Контекстная диаграмма строится для отдельного класса системы. Композитная контекстная диаграмма напоминает подробную схему фрагмента карты большего масштаба. На ней изображают диаграмму классов внутри большого прямоугольника, соответствующего изображению агрегатного класса. Контекстная диаграмма системы предназначена для отображения связи композитной диаграммы класса с другими объектами системы.
Реализация — это ассоциация между классом и интерфейсом, представляющая набор операций, используемых несколькими другими классами. Графически интерфейс представляется как класс без атрибутов. Чтобы отличить его от класса, чьи атрибуты просто не включены в диаграмму, над именем интерфейса размещают стереотип «интерфейс» или (второй вариант) имена интерфейсов начинают с прописной буквы "I". Реализация представляется в UML в виде пунктирной линии, соединяющей класс и интерфейс. На этой линии со стороны интерфейса размещают закрашенный треугольник, указывающий на интерфейс. Другим способом представления реализации является соединение класса сплошной линией с небольшим кружком, изображающим интерфейс.
В терминах областей видимости все операции интерфейсов общедоступны или открыты (public), так что любой класс может их использовать. Существует еще две области видимости: защищенная (protected) (атрибуты и операции из этой области могут использоваться дочерними классами) и закрытая (private) (атрибуты и операции используются только самим классом). Символ "+" означает общедоступную область видимости, "#" соответствует защищенной, а "-" — закрытой.