Понятие идентичности объекта играет важную роль для баз данных, особенно объектно-ориентированных. Смотри лекцию 13 курса "Основы объектно-ориентированного проектирования", посвященную таким базам данных, и библиографию к ней.
Графические обозначения метода BON (Business Object Notation) разработаны Jean-Marc Nerson и Kim Walden [Walden 1995]. James McKim и Richard Bielak детально рассмотрели преимущества альтернативных порождающих процедур [Bielak 1994].
Риски, связанные с нетипизированными указателями и ссылочными операциями, уже долгое время волнуют специалистов в области методологии программирования, порождая намеки на то, что в области данных это аналог ненавистной операции goto в области управления выполнением кода. В удивительно малоизвестной статье Nori Suzuki [Suzuki 1982] обсуждается возможность избежать в рамках строгого подхода с использованием высокоуровневых операций проблем с динамическими псевдонимами (как избавляются от применения goto, используя приемы "структурного программирования"). Хотя по признанию автора выводы неутешительны, данная статья весьма полезна.
Я признателен Ross Scaife из Университета Кентукки за помощь по вопросам риторики. См. его страницу http://www.uky.edu/ArtsSciences/Classics/rhetoric.html.
Напишите классы BOOK and WRITER описывающие книги и их авторов, используя заготовки из данной лекции. Обратите внимание на необходимость включения всех важных подпрограмм, а не только атрибутов.
Напишите класс PERSON включающий простое понятие личности с атрибутами mother, father и sibling (следующий по старшинству брат или сестра, если они есть). Включите подпрограммы возвращающие списки имен родителей, двоюродных братьев и сестер, дядюшек и тетушек, свекра и свекрови, тестя и тещи данного лица. Совет: пишите рекурсивные процедуры, но внимательно избегайте бесконечных рекурсий для отношений, например, двоюродный брат или сестра, являющихся циклическими.
Предположим, вы часто используете сравнение в форме x.is_equal (y), и хотите упростить нотацию, используя преимущества инфиксной записи (применимой здесь, поскольку наша функция имеет один аргумент). Для инфиксного компонента используйте некоторый оператор \[ \S, \] вызов тогда будет записываться в виде \[ x \S y \] . Это маленькое упражнение потребует выбора для оператора \[ \S, \] подходящего для данной ситуации символа, совместимого с правилами инфиксных операторов. Конечно, здесь может существовать много возможных ответов, выбор одного из которых частично (но только частично) дело вкуса. (См. "Компоненты-операторы", "Статические структуры: классы" )