Зависимости доступа

Зависимости доступа выражают способность доступа одной сущности к другой. Существует три зависимости доступа: «access», «import» и «permit».

Зависимость «access»
Зависимость «access» (доступ) устанавливается между пакетами. В UML пакеты используются для группировки сущностей. Самое главное здесь то, что «access» разрешает одному пакету доступ ко всему открытому содержимому другого пакета. Однако каждый пакет определяет пространство имен, и с установлением отношения «access» пространства имен остаются изолированными. Это означает, что элементы клиентского пакета должны использовать имена путей (pathnames), когда хотят обратиться к элементам пакетаапоставщика. Более подробное обсуждение данного вопроса представлено далее.

Зависимость «import»
Зависимость «import» концептуально аналогична «access», за исключением того, что пространство имен поставщика объединяется с пространством имен клиента. Это обеспечивает возможность элементам клиента организовывать доступ к элементам поставщика без необходимости указывать в именах элементов имя пакета. Однако иногда это может приводить к конфликтам имен, если имена элемента клиента и элемента поставщика совпадают. Очевидно, что в этом случае необходимо использовать полные имена.

Зависимость «permit»
Зависимость «permit» (разрешить) обеспечивает возможность управляемого нарушения инкапсуляции, но в целом этого отношения следует избегать. Клиентский элемент имеет доступ к элементуупоставщику независимо от объявленной видимости последнего. Часто зависимость «permit» устанавливается между двумя родственными классами, когда клиентскому классу выгодно (вероятно, по причинам производительности) иметь доступ к закрытым членам поставщика. Не все языки программирования поддерживают зависимости «permit». C++ позволяет классу объявлять друзей, которые имеют разрешение на доступ к его закрытым членам. Но эта возможность была (и, наверное, благоразумно) изъята из Java и C#.

Запись опубликована в рубрике Компьютеры и интернет с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code