Книга: Основы объектно-ориентированного программирования
Ссылка на себя
Ссылка на себя
Ничто не препятствует объекту O1 в определенный момент выполнения системы содержать ссылку, присоединенную к самому O1. Такая ссылка на себя может быть косвенной. В ситуации на рис.8.7 объект, имеющий значением поля name: "Almaviva", сам является своим лендлордом (прямая циклическая ссылка). Фигаро любит Сюзанну, которая любит Фигаро (косвенная циклическая ссылка).
Рис. 8.7. Прямые и косвенные ссылки на себя
Такие циклы в динамических структурах возможны, только если клиентские отношения между соответствующими классами также содержат прямые или косвенные циклы. Объявление класса
class PERSON1 feature
name: STRING
loved_one, landlord: PERSON1
end
содержит прямой цикл (PERSON1 - клиент PERSON1).
Обратное утверждение неверно - присутствие цикла в объявлении класса не означает, что циклы обязательно появятся в структурах времени выполнения. Можно объявить класс
class PERSON2 feature
mother, father: PERSON2
end
Класс является собственным клиентом. Однако если он моделирует соответствующие именам атрибутов отношения между людьми, то структуры времени выполнения никогда не будут содержать циклов, поскольку ни один человек не может быть собственным родителем или предком.
- 1.3.5. Рекламная рассылка по подписке
- 6.5 Структуры со ссылками на себя
- 8.4.1. Поздравь себя
- Вкладывайте в себя деньги
- Проверьте себя
- Почему и как я уволил себя
- Я левша, как мне настроить для себя мышь?
- Я слышал, что через сеть на компьютер проникают вирусы. Как обезопасить себя?
- 4.1.5. Права доступа к ссылкам
- 10.7.3. Рассылка файлов
- Прямая почтовая рассылка
- Вариант 4. Договориться о бесплатном размещении анонсов в чужих рассылках