Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.



scope (область действия)

Множество потенциальных значений члена классификатора, например атрибута, операции или имени роли. Указывает на то, представляет ли он значение в каждом отдельном экземпляре или же значение, общее для всех экземпляров данного классификатора. Если этот термин используется без дополнений, значит, он обозначает область действия-владельца.
См. creation; owner scope; target scope.

Семантика

Область действия является либо целевой, либо областью действия владельца.
Область действия-владельца. Указывает, существует ли отдельный слот атрибута для каждого экземпляра класса, или же вместо этого есть только один именованный слот для всего класса целиком.

экземпляр (instance)
Значение по умолчанию. У каждого экземпляра классификатоpa есть свой собственный слот атрибута или же свое собственное множество ассоциированных объектов. Значения, содержащиеся в одном слоте, не зависят от значений другого слота. Для операции: операция применима к отдельному объекту (обычный тип операции).
класс (class)
Один слот атрибута или одно множество ассоциированных объектов принадлежит непосредственно самому классификатору. При этом доступ к слоту имеют все экземпляры данного классификатора.
Для операции: операция применима ко всему классу, например, операция создания или операция, которая возвращает статистические данные обо всем множестве экземпляров. Применить к отдельному экземпляру такую операцию нельзя.
Целевая область действия. Указывает на то, являются ли значения атрибута или целевые значения ассоциации экземплярами (ситуация по умолчанию) или классификаторами.
экземпляр (instance)
Значение по умолчанию. Каждый слот атрибута или каждая связь ассоциации имеет ссылку на экземпляр целевого классификатора. Количество связей ограничено множественностью
класс (class)
Каждый слот атрибута или каждая связь в ассоциации имеет ссылку на сам нелепой класс. Таким образом, информация в ассоциации фиксируется во время моделирования и не изменяется во время выполнения, поэтому ее не нужно хранить в каждом объекте, В результате связи касаются самого класса, а не его экземпляров. Это может оказаться удобным для моделирования информации, касающейся программной реализации, однако в большинстве случаев такая возможность просто игнорируется

Обсуждение

Атрибуты или ассоциации с областью действия в масштабе класса содержат общие значения для всего класса, поэтому их нужно использовать с большой осторожностью или же не употреблять, вовсе, несмотря на то, что они есть в большинстве объектно-ориентированных языков программирования. Проблема состоит в том, что такие значения представляют собой глобальную информацию, что вообще противоречит духу объектно-ориентированного проектирования. Кроме того, существование таких общих значений весьма проблематично в распределенной системе, так как они требуют наличия централизованной точки доступа в ситуациях, когда объекты класса могут быть размещены на нескольких машинах. Мы бы советовали использовать не класс в виде объекта, находящегося в определенном состоянии, а явные объекты, в которых содержится любая необходимая информация. Это более выгодно с точки зрения цены и качества модели.
Все конструкторы (операции создания, операции фабрик объектов) должны иметь исходную область действия в масштабе класса, так как у них нет пока экземпляров, на которых они могли бы функционировать. Такая ситуация - необходимый и оправданный случай использования области действия в масштабе класса. Во всех прочих видах операций с этой исходной областью действия будут возникать такие же проблемы, как у атрибутов - другими словами, централизованную общую информацию, касающуюся экземпляров класса, в распределенной системе использовать неудобно.
Целевая область действия имеет весьма ограниченное употребление. Ее используют только при некоторых особых обстоятельствах, во время написания программного кода.

Алфавитный указатель