Автор: Пользователь скрыл имя, 23 Января 2012 в 19:25, реферат
Динамические структуры данных – это структуры данных, память под которые выделяется и освобождается по мере необходимости.
Динамические структуры данных в процессе существования в памяти могут изменять не только число составляющих их элементов, но и характер связей между элементами. При этом не учитывается изменение содержимого самих элементов данных. Такая особенность динамических структур, как непостоянство их ра
Механизм создания экземпляра QUOTATION (скоро он будет рассмотрен) предусматривает инициализацию всех его полей. Правило инициализации по умолчанию определяет, что любое ссылочное поле (в данном примере - поле, соответствующее атрибуту source ) после инициализации должно содержать пустую ссылку. Другими словами, создание объекта типа QUOTATION не сопровождается созданием объекта типа BOOK3.
Ссылка остается пустой, пока над ней не будут выполнены некоторые действия, - таково общее правило. Изменить значение ссылки можно, создав, например, новый объект. В процедуре make_book это делается следующим образом:
make_book is
-- Создание объекта BOOK3 и присоединение его к source.
do
create source
end
Это иллюстрация простейшей формы инструкции создания: create x , где x - атрибут охватывающего (enclosing) класса или, как будет показано позже, локальная сущность охватывающей подпрограммы. Далее эта базовая нотация будет расширена.
Сущность x, именованная в инструкции (в данном примере source ), называется целью (target) инструкции создания.
Данная форма известна как "базовая инструкция создания". Другая форма, включающая вызов процедуры класса, скоро появится. Вот точное определение действия базовой инструкции создания:
Результат базовой инструкции создания
Эффект инструкции создания вида create x, где тип цели x является ссылочным типом, основанном на классе C, состоит в выполнении трех следующих действий:
На этапе C1 создается экземпляр C. На этапе C2 устанавливаются предопределенные значения всех полей, зависящие от типа соответствующего атрибута:
Значения по умолчанию при инициализации
Для ссылок значение по умолчанию - пустая ссылка.
Для полей BOOLEAN значение по умолчанию - False.
Для полей CHARACTER значение по умолчанию - символ null.
Для чисел (типов INTEGER, REAL или DOUBL
Итак, для цели source типа BOOK3 в соответствии с объявлением класса
class BOOK3 feature
title: STRING
date, page_count: INTEGER
author: WRITER
end
результатом инструкции
создания create source, выполняемой при вызове
процедуры make_book класса QUO
Рис. 8.10. Созданный и инициализированный
объект
После инициализации значения целочисленных полей равны нулю. Ссылочное поле author и поле title типа STRING, содержат пустые ссылки. Тип STRING, о котором ничего не говорится в правилах инициализации, двойственен, - фактически являясь ссылочным типом, он рассматривается во многих ситуациях как базовый тип. (О строках см. лекцию 13)
Общая картина
Важно проследить за
последовательностью
Правомерен вопрос
- как будет создан сам Q_OBJ (шаг B1)?
Это, оставляя проблему, отодвигает ее
вглубь. Но к этому моменту мы
уже знаем ответ на этот вопрос:
все возвращается к первопричине
- Большому Взрыву. Для выполнения системы
необходимо снабдить ее корневым классом
и процедурой этого класса, названной
процедурой создания. В начале выполнения
автоматически создается один объект
- корневой объект - экземпляр корневого
класса. Корневой объект является единственным
объектом, не создаваемым инструкциями
программного текста; он приходит извне,
как objectus
ex machine (объект
от машины ). Начав
с одного, провидением посланного объекта,
далее уже программа может создавать объекты
нормальным путем через подпрограммы,
выполняющие инструкции создания. Первой
выполняемой подпрограммой является процедура
создания, автоматически применяемая
к корневому объекту. Не всегда, но чаще
всего она содержит по крайней мере одну
инструкцию создания, что в предыдущей
лекции называлось началом грандиозного
фейерверка, процесса, создающего столько
новых объектов, сколько нужно текущему
выполнению.
Литература
http://www.INTUIT.ru