11.1.8. Управление доступом к методам

11.1.8. Управление доступом к методам

В Ruby объект определяется, прежде всего, своим интерфейсом: теми методами, которые он раскрывает внешнему миру. Но при написании класса часто возникает необходимость во вспомогательных методах, вызывать которые извне класса опасно. Тут-то и приходит на помощь метод private класса Module.

Использовать его можно двумя способами. Если в теле класса или модуля вы вызовете private без параметров, то все последующие методы будут закрытыми в данном классе или модуле. Если же вы передадите ему список имен методов (в виде символов), то эти и только эти методы станут закрытыми. В листинге 11.5 показаны оба варианта.

Листинг 11.5. Закрытые методы

class Bank

 def open_safe

  # ...

 end

 def close_safe

  # ...

 end

 private :open_safe, :close_safe

 def make_withdrawal(amount)

  if access_allowed

   open_safe

   get_cash(amount)

   close_safe

  end

 end

 # Остальные методы закрытые.

private

 def get_cash

  # ...

 end

 def access_allowed

  # ...

 end

end

Поскольку методы из семейства attr просто определяют методы, метод private определяет и видимость атрибутов.

Реализация метода private может показаться странной, но на самом деле она весьма хитроумна. К закрытым методам нельзя обратиться, указав вызывающий объект; они вызываются только от имени неявно подразумеваемого объекта self. То есть вызвать закрытый метод из другого объекта не удастся: просто не существует способа указать объект, от имени которого данный метод вызывается. Заодно это означает, что закрытые методы доступны подклассам того класса, в котором определены, но опять же в рамках одного объекта.

Модификатор доступа protected налагает меньше ограничений. Защищенные методы доступны только экземплярам того класса, в котором определены, и его подклассов. Для защищенного метода разрешается указывать вызывающий объект, так что к ним можно обращаться из других объектов (при условии, что вызывающий и вызываемый объекты принадлежат одному классу). Обычно защищенные методы применяются для определения методов доступа, чтобы два объекта одного типа могли взаимодействовать. В следующем примере объекты класс Person можно сравнивать по возрасту, но сам возраст недоступен вне класса Person:

class Person

 def initialize(name, age)

  @name, @age = name, age

 end

 def <=>(other)

  age <=> other.age

 end

 attr_reader :name, :age

 protected :age

end

p1 = Person.new("fred", 31)

p2 = Person.new("agnes", 43)

compare = (p1 <=> p2) # -1

x = p1.age            # Ошибка!

Чтобы завершить картину, модификатор public делает метод открытым. Неудивительно!..

И последнее: методы, определенные вне любого класса и модуля (то есть на верхнем уровне программы), по умолчанию закрыты. Поскольку они определены в классе Object, то видимы глобально, но обращаться к ним с указанием вызывающего объекта нельзя.

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

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

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

Использование представлений для управления доступом к данным

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Использование представлений для управления доступом к данным Представление (view) — это, по сути, определение запроса, хранящегося в базе данных. Оно подобно определению запроса в базах данных Microsoft Jet, однако отличается местом хранения: располагается в базе данных и


4.2 Функции физического уровня, управление доступом к физическому носителю и уровень связи данных

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

4.2 Функции физического уровня, управление доступом к физическому носителю и уровень связи данных В этой главе мы рассмотрим работу IP поверх различных технологий нижнего уровня. Однако сначала обратимся к происходящим на этих уровнях событиям (см. рис. 4.1). Рис. 4.1. Функции


14.6.1 Команды управления доступом

Из книги Информатика: аппаратные средства персонального компьютера автора Яшин Владимир Николаевич

14.6.1 Команды управления доступом Команды и параметры, которые определяют доступ пользователя к хранилищу файлов удаленного хоста, определены в таблице 14.1.Таблица 14.1 Команды авторизации пользователя для доступа к архиву


6.3. Организация данных на устройствах с прямым и последовательным доступом

Из книги Настройка Windows 7 своими руками. Как сделать, чтобы работать было легко и удобно автора Гладкий Алексей Анатольевич

6.3. Организация данных на устройствах с прямым и последовательным доступом Под организацией данных на устройствах с прямым и последовательным доступом понимается способ их размещения (запись) на соответствующих носителях информации в этих устройствах с последующим


Центр управления сетями и общим доступом

Из книги Сетевые средства Linux автора Смит Родерик В.

Центр управления сетями и общим доступом В подавляющем большинстве случаев для работы с локальной сетью нужно перейти в Центр управления сетями и общим доступом. Именно здесь содержатся почти все основные инструменты, необходимые для настройки и администрирования


Средства управления доступом

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Средства управления доступом Одно из преимуществ xinetd состоит в том, что эта программа объединяет в себе функции суперсервера и средства управления доступом, характерные для TCP Wrappers. Кроме того, настройка xinetd выполняется достаточно просто. Средства управления доступом


Управление доступом к rlogind

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Управление доступом к rlogind Если вы обращаетесь к rlogind с узла, не относящегося к списку узлов, пользующихся доверием, вам придется ввести пользовательское имя и пароль. Однако не исключено, что вы захотите регистрироваться на удаленном узле, не задавая имя и пароль. Для


Управление доступом к каталогам поддерева chroot

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

Управление доступом к каталогам поддерева chroot Поддерево chroot реализует одностороннюю защиту — программы, выполняющиеся в рамках поддерева, не имеют доступа к ресурсам за его пределами. Поэтому вы можете ограничить доступ и в другом направлении. Для этого надо указать в


16.3.11. Директивы управления доступом к отдельным каталогам

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

16.3.11. Директивы управления доступом к отдельным каталогам Вы можете определить отдельные параметры для каждого каталога вашего сервера — оформление каталога, параметры доступа к этому каталогу.Блок директив DirectoryБлок директив Directory определяет свойства каталога (см.


Управление доступом

Из книги SQL за 24 часа автора

Управление доступом Основное преимущество средства алиасов в том, что оно может быть использовано в комбинации с параметром DatabaseAccess = NONE из файла firebird.conf для ограничения доступа к файлам баз данных - доступ разрешен только к файлам, указанным в aliases.conf.Алиасы баз данных


Группы с ограниченным доступом

Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

Группы с ограниченным доступом С помощью данной политики можно добавить в группу временного пользователя (для повышения его прав на некоторое время). При этом после перезагрузки данный пользователь будет удален из группы. Тем самым администратор может делегировать на


Глава 4 Управление доступом

Из книги Идеальный программист. Как стать профессионалом разработки ПО автора Мартин Роберт С.

Глава 4 Управление доступом Каждый пользователь должен работать в системе под своей учетной записью. Это позволит вам обезопасить свои файлы от чужого вмешательства и по системным журналам определить, когда и кем были произведены разрушительные действия.Обычному


Центр управления сетями и общим доступом

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

Центр управления сетями и общим доступом Пожалуй, один из самых главных и важных механизмов операционной системы. С его помощью организуется подключение компьютера к локальной сети и Интернету. Здесь настраиваются параметры сетевых адаптеров, сетевых служб и


Доверяйте своим методам

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

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