Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СИСТЕМОТЕХНИЧЕСКОЕ ПРОЕКТИРОВАНИЕ.doc
Скачиваний:
73
Добавлен:
01.05.2014
Размер:
1.47 Mб
Скачать

Область видимости и время жизни переменных и констант

Области видимости:

  • глобальная (gl);

  • модуль (м);

  • процедура (pr);

  • дерево вызовов (call-pr).

Место объявления:

  • головной модуль программы (gl);

  • модуль (м);

  • процедура (pr).

Время жизни переменной:

  • глобальная (gl);

  • модуль (m);

  • процедура (pr).

Классы переменных :

  • public;

  • private;

  • static;

  • local.

На рис.6.1. представлена таблица, характеризующая место объявления, область видимости и время жизни переменных различных классов.

Класс переменной

Место объявления

Облась видимости

Время жизни

public

gl

m

pr

gl

m

gl

?

?

private

gl

m

pr

m

?

call-pr

m

?

pr

static

gl

m

pr

m

m

?

gl

gl

?

local

gl

m

pr

m

m

pr

gl

m

pr

Рис.6.1.

Процедуры

По количеству выполняемых действий будем различать

  • однофункциональные процедуры;

  • многофункциональные процедуры.

По связи с внешними данными будем различать

  • контекстно-свободные процедуры - процедуры, которые не имеют свзи по входу - выходу с внешними данными;

  • контекстно-связанные процедуры - процедуры, которые имеют свзи по входу - выходу с внешними данными.

Управляющие параметры для многофункциональных процедур - параметры-команды.

Пакеты, модуль (Unit)

Секции модуля

unit <имя модуля>

Interface

uses

<спецификация использования>;

<спецификация предоставления>;

Implementation

<описание элементов модуля>

[initialization

<описание блока инициализации>]

end.

Декларативный пакет- пакет, который не предоставляет и не использует процедур.

Процедурный пакет- пакет, который предоставляет в окружение процедуры и/или функции.

Пакет с внутренним контекстом- пакет, который имеет в своем теле переменные, глобальные по времени существования.

Пакет с внешним контекстом- пакет, процедуры которого используют внешние данные.

Контекстно-независимый пакет- пакет, который не имеет в своем теле переменных, глобальных по времени существования и процедуры которого не используют внешних данных.

Процедуры настройки контекста пакета .

Рабочие процедуры пакета.

Сохранение и восстановление контекста в долговременной памяти.

Моделирование объектов.

Возможная форма спецификации пакетов представлена в приложении 2.

Задачи и обмены Вэаимодействия задач

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

Для эадач, эапрашивающих точку входа, выэов ее не отличается от выэова процедуры и выполняется операцией вида 'эапрос'.

Для эадачи - владельца ресурса с соответствующей точкой входа обработка эапросов к точке входа осуществляется путем выполнения операции типа 'ответ'. Операция вида 'ответ' может содержать формальные параметры. Тогда соответствующая операция вида 'эапрос' будет содержать фактические параметры.

Запросы к точке входа устанавливаются в очередь и, если не оговорено отдельно, обслуживаются путем выполнения операции вида 'ответ' в порядке поступления.

В простейшем случае задача, выполняя оператор вида 'ответ' при отсутствии эапросов ожидает поступления хотя бы одного запроса.

Задача, выполняющая оператор вида 'эапрос', приостанавливается до момента, когда ее эапрос не будет обработан соответствующим оператором вида 'ответ'.

С каждым оператором вида 'ответ' свяэывается предопределенный атрибут <имя_обмена>'N, укаэывающий текущее количество эаявок к соответствующей точке входа.

Для обработки нескольких точек входа вводится специальный оператор вида 'отбор'. Оператор отбора выполняется следующим обраэом:

- при отсутствии эапросов к точкам входа эадача приоста навливается до появления хотя бы одного эапроса хотя бы к одной точке входа;

- при наличии эапросов только к одной точке входа обрабатывается один эапрос;

- при наличии эапросов к двум и более точкам входа случайно выбирается один иэ операторов ответа и обрабатывается один эапрос.

Ветви оператора отбора могут помечаться дополнительными условиями, которые должны выполняться для выбора нужной ветви.

Классы

Объявление класса имеет следующую структуру:

<имя класса> = class [(<имя родительского класса>)]

protected

{объявление защищенных элементов класса}

private

{объявление закрытых элементов класса}

published

{объявление опубликованных элементов класса}

public

{объявление открытых элементов класса}

/**automated

{объявление автоматизированных элементов класса}**/

Секция protected

Элементы класса, объявленные в этой секции, видимы только в порожденных от него классах. Область видимости защищенных элементов класса не ограничивается пределами модуля.

Секция private

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

Секция public

Элементы класса, объявленные в этой секции, видимы полнлстью и не ограничены пределами своего модупя.

Секция published

Элементы класса, объявленные в этой секции, имеют ту же видимость, что открытые. Для опубликованных элементов класса генерируется динамическая информация о типе (RTTI - RunTime Type Information). RTTI представляет собой специальный интерфейс приложения. Этот интерфейс предоставляет возможность получения во время выполнения приложения некоторых дополнительных видов информации.

Объявление элементов класса включает в себя объявление методов, полей, свойств

Объвление поля класса:

<имя поля>[, <имя поля>] : <имя типа>;

Объвление метода класса - это объявление процедуры или функции:

procedure <имя процедуры> [<список формальных параметров>] ;

function <имя функции> [<список формальных параметров>] : < имя типа> ;

Объявление свойства каласса:

property <имя свойства> : <имя типа> [read <имя метода>] [write <имя метода>];

Свойства события

Свойства события объявляются так же, как и другие свойства. Тип для свойств событий предопределен - TNotifyEvent. С каждым событием связан метод обработки события с указанием соответствующего сообщения из очереди сообщений Windows, которые сигнализируют о наступлении новых событий. Код процедуры обработки события является предметом разработки приложения.