Инструкция создания
Инструкция создания
Рассмотрим создание экземпляра класса BOOK3. Это возможно только с помощью подпрограммы класса, являющегося клиентом BOOK3, как, например:
class QUOTATION feature
source: BOOK3
page: INTEGER
make_book is
-- Создание объекта BOOK3 и присоединение его к source.
do
... См. ниже ...
end
end
Этот класс описывает цитирование книги в других публикациях. Он содержит два поля: ссылку на цитируемую книгу и число страниц, содержащих ссылки на нее.
Механизм создания экземпляра 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, состоит в выполнении трех следующих действий:
[x]. (C1) Создание нового экземпляра C(набора полей, по одному на каждый атрибут C). Пусть OC - это новый экземпляр.
[x]. (C2) Инициализация каждого поля OC соответствующими стандартными значениями по умолчанию.
[x]. (C3) Присоединение значения x (ссылки) к OC.
На этапе C1 создается экземпляр C. На этапе C2 устанавливаются предопределенные значения всех полей, зависящие от типа соответствующего атрибута:
Значения по умолчанию при инициализации
Для ссылок значение по умолчанию - пустая ссылка.
Для полей BOOLEAN значение по умолчанию - False.
Для полей CHARACTER значение по умолчанию - символ null.
Для чисел (типов INTEGER, REAL или DOUBLE) значение по умолчанию - ноль в соответствующем данному типу представлении.
Итак, для цели 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)
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
5.2.9.2. Инструкция OPEN
5.2.9.2. Инструкция OPEN OPEN cursor_nameЭта инструкция открывает предварительно объявленный
5.2.9.3. Инструкция FETCH
5.2.9.3. Инструкция FETCH FETCH cursor_name INTO var_name [, var_name] …Эта инструкция выбирает следующую строку (если строка существует), используя определенный открытый курсор, и продвигает указатель курсора.Если больше нет доступных строк, происходит условие No Data со значением SQLSTATE 02000. Чтобы
5.2.10.1. Инструкция IF
5.2.10.1. Инструкция IF IF search_condition THEN statement_list[ELSEIF search_conditionTHEN statement_list] …[ELSE statement_list]END IFIF реализован как базисная условная конструкция. Если выражение search_condition истинно, соответствующий список инструкции SQL выполнен. Если пары search_condition не нашлось, будет выполнен операторный
5.2.10.7. Инструкция WHILE
5.2.10.7. Инструкция WHILE [begin_label:]WHILE search_condition DO statement_listEND WHILE[end_label]Операторный список внутри инструкции WHILE повторен, пока search_condition равно true. Инструкция WHILE может быть помечена. Пример:CREATE PROCEDURE dowhile()BEGINDECLARE v1 INT DEFAULT 5;WHILE v1 > 0 DO…SET v1 = v1 – 1;END
5.6. Инструкция while
5.6. Инструкция while Синтаксис инструкции while следующий:while ( условие )инструкцияПока значением условия является true, инструкция выполняется в такой последовательности:* Вычислить условие.* Выполнить инструкцию, если условие истинно.* Если самое первое вычисление условия
5.8. Инструкция break
0
5.10. Инструкция goto
5.10. Инструкция goto Инструкция goto обеспечивает безусловный переход к другой инструкции внутри той же функции, поэтому современная практика программирования выступает против ее применения.Синтаксис goto следующий:goto метка;где метка – определенный пользователем
4.2. Инструкция по использованию
4.2. Инструкция по использованию Программа GraphExpress, которая прилагается к книге, представляет собой упрощенную аппликацию для проведения простого графологического анализа. Использовать ее может каждый, кто хоть немного ознакомился с признаками почерка. Поэтому и
5.2. Инструкция по использованию
5.2. Инструкция по использованию Программа достаточно проста в использовании и имеет удобный пользовательский интерфейс.Для удобства, перед тем как начать анализ почерка, на чистом листе бумаги напишите все буквы алфавита (прописной и строчный варианты) и/или несколько
Инструкция утверждения
Инструкция утверждения Утверждения, рассматриваемые до сих пор - предусловия, постусловия, инварианты, - это основные составляющие метода. Они устанавливают связь между конструкциями ОО-программных систем и теорией АТД, лежащей в основе метода. Инварианты класса, в