TMyObject = class (TObject)
MyField: TMyObject;
constructor Create;
end;
TObjectRef = class of TObject;
…
var
ObjectRef: TObjectRef;
s: string;
begin
ObjectRef:=TMyObject; {присваиваем тип, а не экземпляр!}
s:=ObjectRef.ClassName; {строка s содержит 'TMyObject'}
end;
Таким образом, в Delphi определена специальная ссылка TClass, совместимая по присваиванию с любым наследником TObject. Аналогично объявлены классы: TPersistentClass и ТСотроnentClass.
13. СТРУКТУРНАЯ ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ
Под исключительной ситуацией (raise) здесь понимается ситуация, которая не позволяет без особых дополнительных мер продолжить выполнение программы, например деления на ноль, переполнения разрядной сетки, извлечения квадратного корня из отрицательного числа и т. д.
При традиционной обработке ошибок, ошибки, обнаруженные в процедуре, обычно передаются наружу (в вызывавшую процедуру) в виде возвращаемого значения функции, параметров или глобальных переменных (флагов). Каждая вызывающая процедура должна проверять результат вызова на наличие ошибки и выполнять соответствующие действия. Часто это просто выход в более верхнюю вызывающую процедуру и т. д.
Структурная обработка исключительных ситуаций — это программный механизм, позволяющий программисту при возникновении ошибки (исключительной ситуации — exception) связаться с кодом программы, подготовленным для обработки такой ошибки. В Delphi система называется структурной, поскольку обработка ошибок определяется областью "защищенного" кода. Такие области могут быть вложенными. Выполнение программы не может перейти на произвольный участок кода. Выполнение программы может перейти только на обработчик исключительной ситуации активной программы.
Модель исключительных ситуаций в Object Pascal является не-возобновляемой (non-resumable). При возникновении исключительной ситуации вы уже не сможете вернуться в точку, где она возникла, для продолжения выполнения программы (это позволяет сделать лишь возобновляемая (resumable) модель).
Для обработки исключительных ситуаций в язык Object Pascal добавлено новое ключевое слово "try", которое используется для обозначения первой части защищенного участка кода. Существуют два типа защищенных участков:
1) try..except;
2) try..finally.
Первый тип используется для обработки исключительных ситуаций. Его синтаксис:
try
Statement1;
Statement2;
…
except
on Exception1 do Statement;
on Exception2 do Statement;
…
else
Statements; {default exception-handler}
end;
Для уверенности в том, что ресурсы, занятые вашим приложением, освободятся в любом случае, можете использовать конструкцию второго типа. Код, расположенный в части finally, выполняется в любом случае, даже если возникает исключительная ситуация. Соответствующий синтаксис:
try
Statement1;
Statement2;
finally
Statements; {These statements always execute}
end;
Приложение 5
ОСНОВНЫЕ ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
Абстрагирование от проблемы — игнорирование ряда подробностей с тем, чтобы свести задачу к более простой задаче.
Абстрактная машина Дейкстры — применяется в проектировании архитектуры системы, самый нижний уровень абстракции — это уровень аппаратуры. Каждый уровень реализует абстрактную машину с все большими возможностями.
Абстрактный родительский класс — родительский класс, не имеющий экземпляров объектов.
Абстракция — мысленное отвлечение, обособление от тех или иных сторон, свойств или связей предметов и явлений для выявления существенных их признаков.
Абстракция сущности — произвольная абстракция. Объект представляет собой полезную модель некой сущности в предметной области.
Автоматизированная система (АС) — организационно-техническая система, обеспечивающая выработку решений на основе автоматизации информационных процессов в различных сферах деятельности (управление, проектирование, производство и т. д.) или их сочетаниях, система, состоящая из персонала и комплекса средств автоматизации его деятельности, реализующая информационную технологию выполнения установленных функций.
Автономное тестирование (тестирование модуля) (module testing) — контроль отдельного модуля в изолированной среде (например, с помощью ведущей программы), инспекция текста модуля на сессии программистов, которая иногда дополняется математическим доказательством правильности модуля.
Агрегированный объект — объект, составленный из подобъектов. Подобъекты называются частями агрегата, и агрегат отвечает за них.
Алгоритм — строго однозначно определенная для исполнителя последовательность действий, приводящих к решению задачи.
Альфа-тестирование (системное тестирование, лабораторные испытания) — фаза тестирования, выполняемая разработчиками для подтверждения, что все фрагменты правильно интегрированы в систему, а сама система работает надежно.
Анализ (от греч. analysis — разложение, расчленение) — прием умственной деятельности, связанный с мысленным (или реальным) расчленением на части предмета, явления или процесса. В теории проектирования анализ — это процесс определения функционирования по заданному описанию системы.
Артефакт реализации — нечто, что нельзя обнаружить в постановке решаемой задачи, но необходимое для составления программы.
Архитектура системы — структура объединения нескольких программных средств в одно целое.
АС — см. автоматизированная система.
Аттестация (certification) — авторитетное подтверждение правильности программы.
Бета-тестирование — это фаза общего тестирования, при которой программное изделие поставляется ограниченному кругу конечных пользователей для более жесткого тестирования.
Блочно-иерархический подход — частный эвроритм системного подхода, при котором процесс проектирования и представления о самом объекте расчленяется на иерархические уровни. На высшем уровне используется наименее детализированное представление, отражающее самые общие черты и особенности проектируемой системы. На каждом новом последовательном уровне разработки степень подробности рассмотрения возрастает, при этом система рассматривается не в целом, а отдельными блоками..
Визуальное моделирование — процесс графического представления модели с помощью некоторого стандартного набора графических элементов.
Внедрение — стадия, по завершении которой программная документация размножена в нужном количестве, программа установлена и сопровождается, пользователи обучены.
Восстанавливаемость программного обеспечения — свойство, характеризующее возможность приспосабливаться к обнаружению ошибок и их устранению.