Псевдонимы в ПО и за его пределами
Псевдонимы в ПО и за его пределами
Предварительное рассмотрение свидетельствует о том, что сами ссылки и их разделение необходимы во многих случаях. Некоторые стандартные структуры данных содержат циклически связанные элементы, которые невозможно реализовать без ссылок. В представлениях списков и деревьев удобно предоставить возможность узлам содержать ссылки на своих соседей или родителей. На рис.8.24 приведен циклический список, использующий обе эти идеи. Открыв любую книгу по фундаментальным структурам данных и алгоритмам, можно найти массу таких примеров. В объектной технологии хотелось бы использовать и более сложные структуры.
Рис. 8.24. Связный циклический список
На самом деле необходимость в ссылках, присоединении и разделении ссылок возникает и в не слишком сложных ситуациях. Вернемся к одному из вариантов класса описывающего книгу
class BOOK3 feature
... Остальные компоненты ...
author: WRITER
end
Здесь необходимость разделения ссылок обусловлена тем, что две книги или более могут быть написаны одним и тем же автором. Во многих примерах данной лекции подразумевается разделение, - так в случае PERSON у нескольких персон может быть один лендлорд. Это вопрос потребностей моделирования, а не реализации.
Если b1 и b2 два экземпляра BOOK3 одного автора, то b1.author и b2.author - псевдонимы, то есть ссылки, присоединенные к одному объекту, и использование любой из них в качестве цели вызова даст в точности одинаковый эффект. Рассмотренные в таком свете динамические псевдонимы выглядят скорее не как потенциально опасная возможность программирования, а как факт из реальной жизни. Это цена, которую необходимо заплатить за возможности использования нескольких имен при обращении к одному объекту.
Можно легко найти нарушения приведенного выше свойства "БЕЗ СЮРПРИЗОВ", не обращаясь к области ПО. Пусть для некоторой книги b определены следующие свойства и операции:
[x]. NOT_NOBEL (b) обозначает: "автор никогда не получал Нобелевскую премию".
[x]. NOBELIZE (b) обозначает: "Присудить Нобелевскую премию автору книги b".
Теперь предположим, что rb обозначает книгу "Красное и черное", а cp - "Пармская обитель". Последующие действия вполне корректны:
[СЮРПРИЗ В ОСЛО]
-- Предположим, что сейчас выполняется NOT_NOBEL(rb)
NOBELIZE(cp)
-- Теперь свойство NOT_NOBEL(rb) уже несправедливо!
Операция над cp изменяет свойство другой сущности rb, которая не упоминается в инструкции! Последствия могут быть весьма значительными (редкая книга Нобелевского лауреата будет переиздана, ее цена возрастет и т.д.). В данной ситуации, не связанной с ПО, произошло в точности то же, что и в предыдущем программном примере после операции x.set_true, повлиявшей на состояние y без упоминания y.
Таким образом, динамические псевдонимы вовсе не являются результатом гнусных трюков программистов со ссылками и указателями. Это следствие свойственного человеку стремления давать имена вещам ("объектам" в наиболее общем смысле этого слова), а иногда и несколько имен одному предмету. В классической риторике эти явления известны как полионимия (polyonymy), например, использование имен "Кибела" (Cybele), "Деметра" (Demeter) и "Церера" (Ceres) "для одной и той же богини, и антономазия (antonomasia) - возможность ссылаться на объект, косвенно именуя его, как, например, в фразе "прекрасная дочь Агамемнона", обращаясь к прекрасной Елене из Трои.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
26.5. Псевдонимы параметров
26.5. Псевдонимы параметров Одним из основных преимуществ использования библиотеки popt по сравнению с функцией getopt() является возможность использования псевдонимов параметров. Благодаря ним пользователь может определить параметры, которые popt будет расширять их на другие
Глава 16 Край и за его пределами
Глава 16 Край и за его пределами Хотя Minecraft – это игра-песочница, созданная для бесконечного исследования, в ней есть особый режим, в котором необходимо достичь победного конца. Чтобы закончить игру и победить, вы должны дойти до измерения под названием Край.
За пределами Края
За пределами Края После победы над Драконом у вас есть возможность сразиться с последним врагом – Иссушителем. И, конечно, после окончания игры можно посетить бесконечное количество миров, исследовать бесчисленное количество карт и построить множество
5.14 Псевдонимы имен
5.14 Псевдонимы имен Часто по соглашению можно присвоить компьютеру дополнительно к его реальному имени некоторый псевдоним (или краткое имя — nickname). Например, хост nicol.jvnc.net обеспечивает пересылку файлов, службу gopher и службу World Wide Web (WWW). По соглашению, ему дополнительно
За пределами транзакций
За пределами транзакций Мы рассмотрели общие вопросы, связанные с транзакциями, а также особенности их практического применения в базе данных. В самом начале главы было сказано, что все действия в InterBase выполняются в контексте транзакций.Однако существуют объекты, про
Глава 23. Псевдонимы
Глава 23. Псевдонимы Псевдонимы в Bash -- это ни что иное, как "горячие клавиши", средство, позволяющее избежать набора длинных строк в командной строке. Если, к примеру, в файл ~/.bashrc вставить строку alias lm="ls -l | more", то потом вы сможете экономить свои силы и время, набирая команду lm,
ГЛАВА 21 За пределами предприятия
ГЛАВА 21 За пределами предприятия В главе 1 «Предприятия нового тысячелетия» описывается понятие совместного, основанного на сотрудничестве менеджмента. Значимость этого понятия мы можем ощутить, если выйдем за границы предприятия. В последней главе этой книги мы
За пределами программ
За пределами программ Подчеркнем теперь важность понятия АТД для областей, лежащих вне непосредственной области его предполагаемого применения.Подход, основанный на АТД, говорит нам, что серьезное интеллектуальное исследование должно отвергать всякую попытку понять
Динамические псевдонимы
Динамические псевдонимы Для x и y ссылочного типа при непустом значении y присваивание x := y или соответствующее присоединение в результате вызова приведут к тому, что x и y будут присоединены к одному и тому же объекту. Рис. 8.23. Разделение как результат присоединенияВ
1.3.4. Псевдонимы
1.3.4. Псевдонимы Говоря языком пользователя операционной системы Windows, псевдоним — это ярлык, т. е. средство быстрого доступа к файлу, папке, программе. Аналогично ярлыку, псевдонимы по внешнему виду отличаются от источника (оригинала) черной стрелкой, расположенной в