Следующий раздел посвящен механизмам, необходимым для создания объектов и манипулирования их полями, в частности, ссылками.
Инструкция создания
Рассмотрим создание экземпляра класса
class QUOTATION feature
source: BOOK3
page: INTEGER
make_book is
-- Создание объекта BOOK3 и присоединение его к source.
do
... См. ниже ...
end
end
Этот класс описывает цитирование книги в других публикациях. Он содержит два поля: ссылку на цитируемую книгу и число страниц, содержащих ссылки на нее.
Механизм создания экземпляра
Ссылка остается пустой, пока над ней не будут выполнены некоторые действия, - таково общее правило. Изменить значение ссылки можно, создав, например, новый объект. В процедуре
make_book is
-- Создание объекта BOOK3 и присоединение его к source.
do
create source
end
Это иллюстрация простейшей формы инструкции создания: create
Сущность
Данная форма известна как "базовая инструкция создания". Другая форма, включающая вызов процедуры класса, скоро появится. Вот точное определение действия базовой инструкции создания:
Результат базовой инструкции создания
Эффект инструкции создания вида
[x]. (C1) Создание нового экземпляра
[x]. (C2) Инициализация каждого поля OC соответствующими стандартными значениями по умолчанию.
[x]. (C3) Присоединение значения
На этапе C1 создается экземпляр
Значения по умолчанию при инициализации
Для ссылок значение по умолчанию - пустая ссылка.
Для полей
Для полей
Для чисел (типов
Итак, для цели
class BOOK3 feature
title: STRING
date, page_count: INTEGER
author: WRITER
end
результатом инструкции создания create
Рис. 8.10. Созданный и инициализированный объект
После инициализации значения целочисленных полей равны нулю. Ссылочное поле
Общая картина
Важно проследить за последовательностью происходящих событий. Для рассмотренного выше экземпляра
[x]. (B1) Создан экземпляр
[x]. (B2) Спустя некоторое время после B1 вызов вида