Унифицированный доступ

Унифицированный доступ

На первый взгляд один из аспектов приведенной выше классификации может вызывать беспокойство. Во многих случаях необходимо иметь возможность работать с объектом, например с точкой p1, не заботясь о том, какое внутреннее представление используется для p1 - декартово, полярное или иное. Необходимо ли для этого отличать атрибуты от функций?

Ответ зависит от того, с какой точки зрения рассматривать данную проблему - разработчика, автора данного класса POINT или клиента, создавшего класс, использующий POINT. Для разработчика разница между атрибутами и функциями принципиально важна и имеет смысл. Ему необходимо принимать решения о том, какие компоненты будут реализованы как данные в памяти и какие будут доступны в результате вычислений. Но заставлять клиента осознавать эту разницу, было бы серьезной ошибкой. Клиент должен обращаться к значениям x или ? для точки p1, не заботясь и не имея информации о том, как реализованы соответствующие запросы.

Решение проблемы дает принцип унифицированного доступа (Uniform Access principle), введенный в дискуссии о модульности (лекция 3). Принцип декларирует, что клиент должен иметь возможность доступа к свойствам объекта, используя одинаковую нотацию, вне зависимости от того, как это свойство реализовано - в памяти или как результат вычислений (в пространстве или во времени, в виде атрибута или подпрограммы). Этому важному принципу необходимо следовать при разработке нотации для обращения к компонентам класса. Так выражение, обозначающее значение компонента x объекта p1 будет всегда записываться в виде:

p1.x

вне зависимости от того, осуществляется ли доступ к полю данных объекта или выполняется подпрограмма.

При использовании такой нотации неопределенность может возникать только для запросов без аргументов, которые могут быть реализованы и как функции и как атрибуты. Команда должна быть процедурой, запрос с аргументами должен быть функцией, так как атрибуты не могут иметь аргументов.

Принцип унифицированного доступа необходим для гарантирования автономности компонентов ПО. Он защищает право создателя класса свободно экспериментировать с различными способами реализации, не создавая помех клиентам. (СМ. "Использование утверждений для документирования: краткая форма класса", лекция 11)

Pascal, C и Ada нарушают этот принцип, предоставляя различную нотацию для вызова функций и для доступа к атрибутам. Это объяснимо для таких не ОО-языков (хотя еще в 1966 г. синтаксис Algol W предшественника Pascal удовлетворял этому принципу). Более новые языки, такие как C++ и Java, также не следуют этому принципу. Отход от этого принципа может служить причиной того, что изменения внесенные во внутренние представления (например переход от полярной системы координат к декартовой или иные) повлекут за собой неработоспособность многих клиентских классов. Это является одной из причин нестабильности программных разработок.

Принцип унифицированного доступа является источником определенных требований и к подготовке документации. Последовательное применение этого принципа должно гарантировать, например, что в официальной документации не содержится сведений о том, является ли данный запрос без аргументов функцией или атрибутом. Это одно из требований к стандартной методике документирования классов, известной как краткая форма класса.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Коммутируемый доступ

Из книги автора

Коммутируемый доступ Коммутируемый доступ в Интернет (dial-up) – самый распространенный вследствие своей невысокой стоимости. Для его формирования необходимо наличие телефонной линии (стационарного телефонного номера) и модема.Модем следует выбирать исходя из качества


6.2.4. Общий доступ

Из книги автора

6.2.4. Общий доступ Чаще всего, на сервере необходима директория, через которую любой пользователь сможет обмениваться файлами с другими участниками сети. Для настройки такой папки используется секция [tmp]:;[tmp]; comment = Temporary file space; path = /tmp; read only = no; public = yesПо умолчанию секция


10.3.1. Доступ

Из книги автора

10.3.1. Доступ Такие директивы определяют основные права доступа к FTP-серверу. Давайте рассмотрим основные из них:? class имя type адреса — позволяет организовать классы пользователей по их типу и адресу. В нашем конфигурационном файле указана следующая строка:class all anonymous,guest,real


10.3.3. Доступ по операциям

Из книги автора

10.3.3. Доступ по операциям Помимо этого, в файле ftpaccess может быть описание основных операций и прав доступа к ним. В общем виде это выглядит следующим образом:Действие yes|no пользовательВ качестве действия можно указать одно из следующих значений: chmod, delete, overwrite, rename или umask.


Доступ к принтерам

Из книги автора

Доступ к принтерам Часто кому-то бывает необходимо распечатать информацию, а принтера у него под рукой нет. Если вы подключены к сети и у вас есть принтер, то вы можете стать настоящим спасителем, если предоставите его в общее пользование. Тем более что сделать это не


Доступ к GUI

Из книги автора

Доступ к GUI После завершения установки и перезагрузки компьютера можно переходить к GUI Asterisk. URL, используемый для доступа к GUI Asterisk, - это IP-адрес или имя хоста, которое выводится на экран после перезагрузки компьютера. Введите этот IP-адрес в адресной строке броузера. С


21.7.1. Доступ к Интернет

Из книги автора

21.7.1. Доступ к Интернет Прежде всего определимся, нужен ли вашему игровому залу доступ к Интернет. Если нужен, то для каких целей. В большинстве случаев он нужен для того, чтобы посетители могли использовать так называемые Online-версии игр или подсоединяться к всемирным


2.3.2 Доступ с терминала

Из книги автора

2.3.2 Доступ с терминала В начале 70-х гг. многие производители компьютеров создавали модели терминалов, которые были совместимы только с их собственными компьютерными системами. Министерство обороны США закупало оборудование у различных производителей и, естественно,


2.4.1 Доступ к файлам

Из книги автора

2.4.1 Доступ к файлам Файловые серверы дают пользователю возможность работать с удаленными файлами так, как если бы они располагались на локальной системе. Первоначально файловые серверы получили распространение в локальных сетях персональных компьютеров как средство


Уверенный доступ

Из книги автора

Уверенный доступ Если под зарегистрированным доменным именем размещаются какие-то ресурсы, то домен нужно привязать к определенным серверам DNS, обеспечивающим преобразование символьных имен внутри домена в адреса компьютеров, обслуживающих ресурсы. Например, адрес


16.2 Доступ к файлам

Из книги автора

16.2 Доступ к файлам В предыдущей главе я уже рассказал про права доступа к файлам, поэтому лишь кратко напомню: в Linux можно с помощью механизма разграничения прав ограничить доступ к файлу на редактирование или же просто полностью запретить доступ к содержимому. Например,


Удаленный доступ

Из книги автора

Удаленный доступ Удаленным доступом (DialUP) называют получение доступа к разрешенным папкам компьютера с помощью модема или виртуального частного соединения (VPN). Поскольку VPN является не таким уж частым гостем на домашних компьютерах пользователей, то в данной главе будет


Доступ к сайтам

Из книги автора

Доступ к сайтам Чтобы убрать ограничение на доступ к сайтам в IE достаточно удалить все параметры из раздела


Неограниченный доступ

Из книги автора

Неограниченный доступ По умолчанию все компоненты доступны для всех клиентов. Для классаclass S1 featuref ...g ......endкомпоненты f, g, ... доступны всем клиентам S1. Это означает, что если в классе C объявлена сущность x класса S1, то вызовx.f ... является допустимым, если выполнены все другие