Пример 11.17. Использование граней хранения


(defclass A (is-a USER)

(role concrete)

(slot foo (create-accessor write)

(storage shared)

(default 1))

(slot bar (create-accessor write)

(storage shared)

(default-dynamic 2) )

(slot woz (create-accessor write)

(storage local)))

(make-instance a of A)

(send [a] print)

(send [a] put-foo 56)

(send [a] put-bar 104)

Результат этих действий приведен на рис. 11.4.

Выполните действия, представленные в примере 11.18. (Несмотря на то, что в данном примере используются еще нерассмотренные нами обработчики сообщений, он должен быть интуитивно понятен.) Результат — на рис. 11.5.

Пример 11.18. Просмотр содержимого общих и локальных слотов

 

(make-instance b of A)

(send [b] print)

(send [b] put-foo 34)

(send [b] put-woz 68)

(send [a] print)

(send [b] print)

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

 

Рис. 11.4. Создание объекта с общими и локальными слотами и присвоение значений

Рис. 11.5. Результат просмотра содержимого общих и локальных слотов

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

Существуют три значения грани доступа 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.



Дата добавления: 2021-12-14; просмотров: 277;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.