Динамические структуры, структуры объект и программирование с использованием этих объктов

Автор: Пользователь скрыл имя, 23 Января 2012 в 19:25, реферат

Краткое описание

Динамические структуры данных – это структуры данных, память под которые выделяется и освобождается по мере необходимости.
Динамические структуры данных в процессе существования в памяти могут изменять не только число составляющих их элементов, но и характер связей между элементами. При этом не учитывается изменение содержимого самих элементов данных. Такая особенность динамических структур, как непостоянство их ра

Файлы: 1 файл

sam rabota.docx

— 151.59 Кб (Скачать)

Механизм создания экземпляра QUOTATION (скоро он будет рассмотрен) предусматривает инициализацию всех его полей. Правило инициализации по умолчанию определяет, что любое ссылочное поле (в данном примере - поле, соответствующее атрибуту source ) после инициализации должно содержать пустую ссылку. Другими словами, создание объекта типа QUOTATION не сопровождается созданием объекта типа BOOK3.

Ссылка остается пустой, пока над ней не будут  выполнены некоторые действия, - таково общее правило. Изменить значение ссылки можно, создав, например, новый  объект. В процедуре make_book это делается следующим образом:

make_book is

      -- Создание объекта BOOK3 и присоединение  его к source.

   do

      create source

   end

Это иллюстрация  простейшей формы инструкции создания: create , где - атрибут охватывающего (enclosing) класса или, как будет показано позже, локальная сущность охватывающей подпрограммы. Далее эта базовая нотация будет расширена.

Сущность x, именованная в инструкции (в данном примере source ), называется целью (target) инструкции создания.

Данная форма известна как "базовая инструкция создания". Другая форма, включающая вызов процедуры  класса, скоро появится. Вот точное определение действия базовой инструкции создания:

Результат базовой инструкции создания

Эффект инструкции создания вида create x, где тип цели является ссылочным типом, основанном на классе C, состоит в выполнении трех следующих действий:

  • (C1) Создание нового экземпляра (набора полей, по одному на каждый атрибут ). Пусть OC - это новый экземпляр.
  • (C2) Инициализация каждого поля OC соответствующими стандартными значениями по умолчанию.
  • (C3) Присоединение значения (ссылки) к OC.

На этапе C1 создается  экземпляр C. На этапе C2 устанавливаются предопределенные значения всех полей, зависящие от типа соответствующего атрибута:

Значения  по умолчанию при  инициализации

Для ссылок значение по умолчанию - пустая ссылка.

Для полей BOOLEAN значение по умолчанию - False.

Для полей CHARACTER значение по умолчанию - символ null.

Для чисел (типов INTEGERREAL или DOUBL) значение по умолчанию - ноль в соответствующем данному типу представлении.

Итак, для цели source типа BOOK3 в соответствии с объявлением класса

class BOOK3 feature

   title: STRING

   date, page_count: INTEGER

   author: WRITER

end

результатом инструкции создания create source, выполняемой при вызове процедуры make_book класса QUOTATION, будет объект изображенный на рис.8.10.

 
Рис. 8.10.  Созданный и инициализированный объект

После инициализации  значения целочисленных полей равны  нулю. Ссылочное поле author и поле title типа STRING, содержат пустые ссылки. Тип STRING, о котором ничего не говорится в правилах инициализации, двойственен, - фактически являясь ссылочным типом, он рассматривается во многих ситуациях как базовый тип. (О строках см. лекцию 13)

Общая картина

Важно проследить за последовательностью происходящих событий. Для рассмотренного выше экземпляра BOOK3 происходит следующее:

  • (B1) Создан экземпляр QUOTATION. Пусть Q_OBJ - этот экземпляр и имеется сущность a, значение которой ссылка, присоединенная к Q_OBJ.
  • (B2) Спустя некоторое время после B1 вызов вида a.make_book приводит к выполнению процедуры make_book с Q_OBJ в качестве цели.

Правомерен вопрос - как будет создан сам Q_OBJ (шаг B1)? Это, оставляя проблему, отодвигает ее вглубь. Но к этому моменту мы уже знаем ответ на этот вопрос: все возвращается к первопричине - Большому Взрыву. Для выполнения системы  необходимо снабдить ее корневым классом  и процедурой этого класса, названной  процедурой создания. В начале выполнения автоматически создается один объект - корневой объект - экземпляр корневого  класса. Корневой объект является единственным объектом, не создаваемым инструкциями программного текста; он приходит извне, как objectus ex machine (объект от машины ). Начав с одного, провидением посланного объекта, далее уже программа может создавать объекты нормальным путем через подпрограммы, выполняющие инструкции создания. Первой выполняемой подпрограммой является процедура создания, автоматически применяемая к корневому объекту. Не всегда, но чаще всего она содержит по крайней мере одну инструкцию создания, что в предыдущей лекции называлось началом грандиозного фейерверка, процесса, создающего столько новых объектов, сколько нужно текущему выполнению. 
 
 

Литература

http://www.INTUIT.ru

Информация о работе Динамические структуры, структуры объект и программирование с использованием этих объктов