Cтраница 2
Причина состоит в том, что процесс компиляции включает объявления модуля определения в модуле реализации. Если повторяются объявления, отличающиеся от объявлений процедур, то компилятор сообщит о противоречии в именах идентификаторов и остановится. То же самое относится к программе-клиенту. Она не должна повторять объявления модуля определения. [16]
Раздел strict protected содержит объявления, которые будут доступны из процедур и функций данного класса и классов, наследующих данному. Из других процедур и функций даже этого модуля такие объявления, как и объявления раздела strict private, не видны. Delphi автоматически заносит в раздел strict protected объявление процедуры Dispose, освобождающей ресурсы, не требуемые для дальнейшей работы приложения ( см. подробное описание деталей этого процесса в гл. [17]
Следует обратить внимание на следующую особенность реализации программы. Процедура, которая вычерчивает элемент а, помимо самой себя ( для вычерчивания элемента а кривой более низкого порядка), вызывает процедуры d и ь, описание ( текст) которых в тексте программы находится после процедуры а. Чтобы компилятор не вывел сообщение об ошибке, в текст программы помещено объявление процедуры с ключевым словом forward, означающим, что это только объявление, а описание ( реализация) находится дальше. Таким образом, уже в процессе компиляции процедуры а компилятор знает, что имена ь и d означают процедуры. [18]
В приведенной таблице речь идет о специальных модификаторах ( директивах) рекомендаций, указаний ( hint), введенных в Delphi. Они могут применяться в объявлениях типов, переменных, классов, записей, полей классов и записей, в объявлениях процедур, функций, методов или в объявлении модуля. Обычно модификатором platform помечаются элементы, которые специфичны для той или иной операционной системы, например, Windows или Linux. Модификатором library помечаются элементы, которые специфичны для используемой библиотеки компонентов. А модификатором deprecated помечаются элементы, устаревшие или оставленные только для обратной совместимости с более ранними версиями. [19]
В объявлении класса невозможно задать значения полей по умолчанию. Конструкторы - это специальные методы, создающие и инициализирующие объект. Объект создается выделением для него памяти в динамически распределяемой области памяти heap ( см. разд. Объявление конструктора выглядит так же, как объявление процедуры, но предваряется ключевым словом constructor. В качестве имени конструктора обычно задают имя Create. В приложениях VCL в классах, наследующих прямо или опосредованно классу TComponent, в конструктор обычно передают в качестве параметра владельца объекта. [20]
То, что объявляется в этом разделе, будет доступно только из процедур и функций данного класса. Из других процедур и функций даже этого модуля такие объявления не будут видны. В раздел strict private автоматически заносится объявление объекта Components типа System. Этот объект нужен только для самой ИСР Delphi. Автоматически заносится в раздел также объявление процедуры InitializeComponent, инициализирующей компоненты формы. А в процессе проектирования в этот раздел автоматически заносятся объявления всех компонентов, размещаемых вами на форме, и объявления всех вводимых вами обработчиков событий. [21]
Знания могут содержать процедурную часть - программы. Но применение этих программ управляется знаниями, в частности связывание параметров и запуск программ могут происходить автоматически внутри системы, использующей знания, без ведома того, кто запустил процесс, использующий знания. Уже Алгол 68 [77] вывел подпрограммы ( процедуры, функции) на уровень данных. Сложнее обстоит дело с автоматическим запуском подпрограмм. Требуется описать структуру объекта таким образом, чтобы модификация элемента Ъ могла осуществляться только указанным образом. Язык определений данных КОДАСИЛ [108], допускающий объявления процедур базы данных и элементов вида ACTUAL RESULT, дает один вариант решения этой задачи. Ее решение в языке программирования с использованием механизма абстракции данных будет приведено в разд. [22]
H, который содержит описания основных классов библиотеки и сводит воедино все включаемые файлы, необходимые для базового функционирования MFC: AFX. H, содержащий описания классов общего назначения, макросы, базовые типы данных MFC и подключающий стандартные библиотеки времени выполнения языка С, и файл AFXRES. H, куда включены стандартные идентификаторы ресурсов. По мере изложения материала мы ближе рассмотрим классы, определяемые во включаемых файлах MFC. Здесь же отметим изменения, которые претерпел основной включаемый файл Windows - WINDOWS. Как и раньше, каждое приложение Windows должно содержать этот файл. Отличие заключается в том, что в нынешнем виде он уже не представляет собой огромного монстра, а разбит на четыре сравнительно небольших файла: WINDEF. H, содержащий определения базовых типов; WINBASE. H, включающие объявления процедур GDI и USER, а также определения констант и макросов для соответствующих модулей системы. [23]