Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Видимость

Одна из деталей, наиболее существенных для атрибутов и операций классифика­торов, - их видимость. Видимость свойства говорит о том, может ли оно использо­ваться другими классификаторами. Естественно, это подразумевает видимость само­го классификатора. Один классификатор может «видеть» другой, если тот находится в области действия первого и между ними существует явное или неявное отношение (см. главы 5 и 10). В языке UML можно определить три уровня видимости:

  • public (открытый) - любой внешний классификатор, который «видит» данный, может пользоваться его открытыми свойствами. Обозначается зна­ком + (плюс) перед именем атрибута или операции;

  • protected (защищенный) - любой потомок данного классификатора (см. главу 5) может пользоваться его защищенными свойствами. Обозначается знаком # (диез);

  • private (закрытый) - только данный классификатор может пользоваться закрытыми свойствами. Обозначается символом - (минус).

На рис. 9.3 показаны открытые, защищенные и закрытые атрибуты и методы для класса Toolbar.

Видимость свойств классификатора определяют для того, чтобы скрыть детали его реализации и показать только те особенности, которые необходимы для осуществления обязанностей, продекларированных абстракцией. В этом и заклю­чается основная причина сокрытия информации, без чего не обойтись при созда­нии надежной и гибкой системы. Если символ видимости явно не указан, обычно предполагается, что свойство является открытым. Отношения дружественности (Friendship) позволяют классификатору показывать другим свои закрытые дета­ли (см. главу 10).

Примечание Видимость в UML соответствует общепринятой семантике боль­шинства языков программирования, таких как C++, Java, Ada и Eiffel

Область действия

Еще одной важной характеристикой атрибутов и операций классификатора является область действия (Scope). Задавая область действия некоторого свойства, тем самым указывают, будет ли оно проявлять себя по-разному в каждом эк­земпляре (см. главу 13) классификатора, или одно и то же значение свойства будет разделяться (то есть совместно использоваться) всеми экземплярами. В UML опре­делены два вида областей действия:

  • instance (экземпляр) - у каждого экземпляра классификатора есть соб­ственное значение данного свойства;

  • classifier (классификатор) - все экземпляры классификатора совместно

  • используют общее значение данного свойства.

На рис. 9.4 (упрощенный вариант предыдущего рисунка) показано, что имя свойства, которое имеет область действия classifier, подчеркивается. Если подчеркивание отсутствует, предполагается область действия instance.

Как правило, свойства моделируемых классификаторов имеют область действия экземпляра. Свойства с областью действия классификатора чаще всего применяют­ся для описания закрытых атрибутов, общих для всех экземпляров, например для

генерации уникальных идентификаторов или в операциях, создающих экземпля­ры класса.

Примечание Область действия classifier соответствует статическим amрибутам и операциям языка C++.

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