Сложные объекты
Сложные объекты строятся из более простых при помощи конструкторов. Простейшими объектами являются целые числа, символы, символьные строки произвольной длины, булевские переменные и числа с плавающей точкой (можно было бы добавить другие атомарные типы). Имеются различные конструкторы сложных объектов: конструкторы кортежей, множеств, мультимножеств, списков, массивов и т.д. Минимальный набор конструкторов, который должна иметь система, – это конструкторы множеств, списков и кортежей (множества обеспечивают естественный способ представления наборов объектов реального мира; кортежи представляют естественный способ представления свойств сущностей; списки и массивы сохраняют порядок, который имеет место в реальном мире).
Конструкторы объектов должны быть ортогональными, т.е. любой конструктор должен быть применим к любому объекту. (Конструкторы реляционной модели не являются ортогональными, потому что конструкция множества может быть применена только к кортежам, а конструкция кортежа – только к атомарным значениям.)
Для поддержки сложных объектов необходимы соответствующие операторы. То есть операции со сложным объектом должны транзитивно распространяться на все его компоненты. Примерами могут быть выборка или удаление сложного объекта целиком или создание “глубокой” копии (в отличие от “поверхностной” копии, в которой компоненты не копируются: в копии корня объекта указываются ссылки на компоненты копируемого объекта).