компьютерного проектирования. Во всех случаях пользователю необходимо предоставить команду SAVE, сохраняющую состояние текущей сессии в файле. Хранимая информация должна быть достаточной для продолжения работы, так что она должна включать все важные структуры данных системы. Механизм
head.store (save_file)
Уже одной этой причины достаточно для рекомендации выбора ОО-окружения в сравнении с другими более традиционными средами разработки.
Составные объекты и развернутые типы
Обсуждение структуры объектов времени выполнения показало важную роль ссылок. Для завершения картины необходимо выяснить, как работать со значениями, представляющими собой не ссылки на объекты, а непосредственно сами объекты.
Ссылок не достаточно
До сих пор все значения целочисленных, булевых и других аналогичных типов рассматривались как ссылки на объекты. Однако по двум причинам необходимы сущности, значениями которых являются объекты:
[x]. В предыдущей лекции была поставлена важная цель - построение полностью унифицированной системы типов. В этой схеме базовые типы (
[x]. Даже в случае сложных, определенных программистом объектов, может оказаться предпочтительным включение в объект
Развернутые типы
Удовлетворить потребность в составных объектах очень просто. Пусть
class C feature
...
end
Класс
Теперь предположим, что нам необходима сущность
x : expanded C
Эта нотация использует новое ключевое слово expanded (развернутый). Нотация expanded
Таким образом, к структуре, определенной в предыдущих разделах, добавлено понятие составного объекта (composite object). Объект
class COMPOSITE feature
ref: C
sub: expanded C
end
Класс
Рис. 8.19. Составной объект с одним подобъектом
Поле
Удобно несколько расширить нотацию. Иногда при проектировании класса, например
expanded class E feature
... Далее все аналогично любому другому классу ...
end
Так определенный класс называется развернутым классом. Такое объявление класса никак не отражается на экземплярах класса, они остаются такими же, как если бы класс был объявлен просто
