9.6. Что мы узнали 225
здесь то, что «access» разрешает одному пакету доступ ко всему откры
тому содержимому другого пакета. Однако каждый пакет определяет
пространство имен, и с установлением отношения «access» пространст
ва имен остаются изолированными. Это означает, что элементы кли
ентского пакета должны использовать имена путей (pathnames), когда
хотят обратиться к элементам пакетапоставщика. Более подробное
обсуждение данного вопроса представлено в глОднако иве 11.
9.5.3.2. Зависимость «import»
Зависимость «import» концептуально аналогична «access», за исключе
нием того, что пространство имен поставщика объединяется с про
странством имен клиента. Это обеспечивает возможность элементам
клиента организовывать доступ к элементам поставщика без необхо
димости указывать в именах элементов имя пакета. Однако иногда это
может приводить к конфликтам имен, если имена элемента клиента
и элемента поставщика совпадают. Очевидно, что в этом случае необ
ходимо использовать полные имена. В главе 11 этот вопрос обсуждает
ся более подробно.
9.5.3.3. Зависимость «permit»
Зависимость «permit» (разрешить) обеспечивает возможность управля
емого нарушения инкапсуляции, но в целом этого отношения следует
избегать. Клиентский элемент имеет доступ к элементупоставщику не
зависимо от объявленной видимости последнего. Часто зависимость
«permit» устанавливается между двумя родственными классами, когда
клиентскому классу выгодно (вероятно, по причинам производительно
сти) иметь доступ к закрытым членам поставщика. Не все языки про
граммирования поддерживают зависимости «permit». C++ позволяет
классу объявлять друзей, которые имеют разрешение на доступ к его
закрытым членам. Но эта возможность была (и, наверное, благоразум
но) изъята из Java и C#.
9.6. Что мы узнали
В этой главе мы начали обсуждение отношений, которые связывают
воедино модели UML. Мы узнали следующее:
• Отношения – это семантические соединения между сущностями.
• Соединения между объектами называются связями.
• Связь возникает, когда объект сохраняет объектную ссылку на
другой объект.
• Объекты реализуют поведение системы через взаимодействие:
• взаимодействие возникает, когда объекты обмениваются со
общениями по связям;
• когда объект получает сообщение, он выполняет соответству
ющую операцию.