Грани доступа

Существуют три значения грани доступа access, которые могут быть присвоены слоту: read-write, read-only, initialize-only. Грань read-write устанавливается по умолчанию и объявляет, что значение слота можно читать и изменять. Грань read-only объявляет, что из слота можно только читать. Единственный способ установить значение этого слота — использование грань default в определении класса. Грань initialize-only аналогична гра­ни read-only за исключением того, что слот также может быть установлен с помощью переопределения при вызове make-instance (см разд. 11.5.1) и в обработчике сообщений init (см. подразд. "Инициализация объекта" разд. 11.3.3). Заметьте, что слот read-only, который имеет статическое зна­чение по умолчанию, будет неявно иметь общую грань хранения.

Создайте следующую версию класса а и обработчик сообщения для записи в слот bar.

Пример 11.19. Класс А с различными значениями грани доступа для слотов

(defclass A (is-a USER)

(role concrete)

(slot foo (create-accessor write)

(access read-write))

(slot bar (access read-only)

(default abc))

(slot woz (create-accessor write)

(access initialize-only)))

(defmessage-handler A put-bar (?value)

(dynamic-put (sym-cat bar)?value))

Выполните действия, перечисленные в примере 11.20.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: