В самом широком смысле под объектами обычно понимают некоторые сущности, которые существуют во времени, развиваются, но при этом остаются сами собой.
Хорошим примером объекта может служить человек, который рождается, растет, развивается и умирает, все же оставаясь, в каком-то смысле, тем же самым человеком.
Другой знаменитый пример принадлежит Гераклиту (расцвет творческих сил которого приходится приблизительно на 504-501 гг. до н.э.). Гераклит учил, что нельзя дважды войти в одну и ту же реку, ибо "на входящих в ту же самую реку набегают все новые и новые воды" [Гер 500]. Таким образом, река тоже может служить хорошим примером объекта.
Под значениями в широком смысле обычно понимают некоторые сущности, которые не меняются, не развиваются и, в этом смысле, находятся вне времени. Неизвестно, существуют ли значения в реальной жизни, но они являются излюбленным предметом изучения в математике. Примером значения, например, может служить число 25.
Конечно, значение можно считать частным, вырожденным случаем объекта (а именно, застывшим объектом, не способным к развитию), но мы все же обычно будем называть "объектами" только такие объекты, которые не являются значениями.
Иметь дело с объектами труднее, чем со значениями, ибо они могут изменяться. Поэтому объекты очень часто снабжают именами. Основным свойством имени является то, что оно однозначно связано с объектом (однозначно идентифицирует этот объект). В отличие от самих объектов, имена являются типичными значениями, поскольку они не меняются из-за того, что изменяется сам объект. Например, несмотря на то, что состояние реки Волга непрерывно изменяется, это никак не сказывается на слове "Волга".
Другим примером (полного) имени могут служить паспортные данные человека: фамилия, имя, отчество, дата и место рождения и т.д.
В рамках языка Рефал термины "объект" и "значение" имеют более специальный смысл. Любое значение в языке Рефал представляет собой некоторое объектное выражение.
Любой объект в языке Рефал представляет собой "контейнер", который может содержать объектные выражения и другую информацию.
Объекты создаются во время компиляции или в процессе работы Рефал-программы. При создании объекта одновременно с ним создается символ-ссылка, который мы будем называть именем объекта или ссылкой на этот объект. Основное свойство имени объекта заключается в том, что оно должно отличаться от всех других символов-ссылок, существующих в момент создания объекта. Благодаря этому, между символами-ссылками и объектами существует однозначное соответствие: каждому символу-ссылке соответствует ровно один объект, а равным символам-ссылкам соответствует один и тот же объект.
Наглядно взаимосвязь между именем объекта, объектом и содержимым объекта можно изобразить следующим образом:
R --> [ ... ]
Рефал Плюс имеет дело с объектами следующих типов.
Объекты-функции содержат скомпилированные определения функций. Они создаются во время компиляции программы. Все остальные объекты могут создаваться как статически (т.е. во время компиляции программы), так и
динамически (т.е. в процессе исполнения программы).Объекты-ящики предназначены для хранения объектных выражений. Каждый ящик содержит ровно одно объектное выражение.
Объекты-таблицы предназначены для хранения конечных множеств упорядоченных пар. Каждая пара содержит два объектных выражения, первое из которых является ключом, а второе - значением, связанным с этим ключом. Все ключи в таблице должны быть попарно различны. Таким образом, каждому ключу в таблице однозначно соответствует связанное с ним значение.
Объекты-каналы дают возможность выполнять операции ввода-вывода.
Объекты-векторы предназначены для хранения конечных последовательностей объектных выражений.
Объекты-строки предназначены для хранения конечных последовательностей литер.