Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Циклические ссылки между модулямиСодержание книги
Поиск на нашем сайте Структура модуля Модули предназначены для разбиения текста программы на несколько файлов. В модулях описываются переменные, константы, типы, классы, процедуры и функции. Для того чтобы эти объекты можно было использовать в вызывающем модуле (которым может быть и основная программа), следует указать имя файла модуля (без расширения .pas) в разделе uses вызывающего модуля. Файл модуля (.pas) или откомпилированный файл модуля (.pcu) должен находиться либо в том же каталоге, что и основная программа, либо в подкаталоге Lib системного каталога программы PascalABC.NET. Модуль имеет следующую структуру: unit имя модуля; interface раздел интерфейса implementation раздел реализации initialization раздел инициализации finalization раздел финализации end. Имеется также упрощенный синтаксис модулей без разделов интерфейса и реализации. Первая строка обязательна и называется заголовком модуля. Имя модуля должно совпадать с именем файла. Раздел интерфейса и раздел реализации модуля могут начинаться с раздела uses подключения внешних модулей и пространств имен .NET. Имена в двух разделах uses не должны пересекаться. Раздел интерфейса включает объявление всех имен, которые экспортируются данным модулем в другие модули (при подключении его в разделе uses). Это могут быть константы, переменные, процедуры, функции, классы, интерфейсы. Реализация методов классов может быть дана прямо в разделе интерфейса, но это не рекомендуется. Раздел реализации содержит реализацию всех процедур, функций и методов, объявленных в разделе интерфейса. Кроме этого, в разделе реализации могут быть описания внутренних имен, которые не видны вне модуля и используются лишь как вспомогательные. Раздел инициализации и раздел финализации представляют собой последовательность операторов, разделяемых символом ;. Операторы из раздела инициализации модуля выполняются до начала основной программы, операторы из раздела финализации модуля - после окончания основной программы. Порядок выполнения разделов инициализации и разделов финализации подключенных модулей непредсказуем. Как раздел инициализации, так и раздел финализации могут отсутствовать. Вместо разделов инициализации и финализации может присутствовать только раздел инициализации в виде begin Например: unit Lib; interface uses GraphABC; const Dim = 5; function RandomColor: integer; implementation function RandomColor: integer; initialization Циклические ссылки между модулями возможны при определенных ограничениях. Раздел uses Раздел uses имеет вид uses список имен; Имена в списке перечисляются через запятую и могут быть либо именами подключаемых внешних модулей PascalABC.NET, либо пространствами имен .NET. Например: uses System, System.Collections.Generic, MyUnit; Здесь MyUnit - модуль PascalABC.NET, представленный в виде исходного текста или откомпилированного .pcu-модуля, System и System.Collections.Generic - пространства имен .NET. В модуле или основной программе, которая содержит раздел uses, можно использовать все имена из подключаемых модулей PascalABC.NET и пространств имен .NET. Основное отличие между модулями и пространствами имен .NET состоит в том, что модуль содержит код, а пространства имен .NET содержат лишь имена - для использования кода его необходимо подключить с помощью директивы компилятора #reference ИмяСборки, где ИмяСборки - имя dll-файла, содержащего .NET-код. Другое не менее важное отличие состоит в том, что в модуле или основной программе нельзя использовать имена, определенные в другом модуле, без подключения этого модуля в разделе uses. Напротив, если сборка .NET подключена директивой #reference, то можно использовать ее имена, явно уточняя их пространством имен, не подключая это пространство имен в разделе uses. Например: begin По умолчанию в каждой секции uses неявно первым подключается модуль PABCSystem, содержащий стандартные константы, типы, процедуры и функции. Даже если секция uses отсутствует, модуль PABCSystem подключается неявно. Кроме того, по умолчанию с помощью неявной директивы #reference подключаются сборки system.dll и mscorlib.dll, содержащие основные .NET-типы. Поиск глобальных имен осуществляется вначале в текущем модуле или основной программе, затем во всех подключенных модулях и пространствах имен, начиная с самого правого в секции uses и заканчивая самым левым. При этом считается, что пространство имен более правого модуля вложено в пространство имен более левого. Таким образом, конфликта имен не происходит. Если необходимо использовать имя из конкретного модуля или пространства имен, следует использовать запись ИмяМодуля.Имя или ИмяПространстваИменNET.Имя В качестве имени модуля может выступать также имя основной программы если у нее присутствует заголовок program. Упрощенный синтаксис модуля Упрощенный синтаксис модулей без разделов интерфейса и реализации имеет вид: unit имя модуля; раздел описаний end. или unit имя модуля; раздел описаний begin раздел инициализации end. В разделе описаний описываются константы, переменные, процедуры, функции, классы, интерфейсы. Все имена экспортируются. Упрощенный синтаксис модулей удобно использовать при начальном обучении - модуль отличается от программы только заголовком и, возможно, отсутствием раздела операторов. Циклические ссылки модулей в интерфейсных частях запрещены. Например, следующая ситуация ошибочна: unit A; unit B; Таким образом, невозможно определить два общедоступных класса в разных модулях с объектными полями, ссылающимися друг на друга. Однако, если одна ссылка находится в интерфейсной части, а вторая - в части реализации, или обе - в частях реализации, то циклические ссылки в этом случае разрешены: unit A; unit B;
|
||
|
Последнее изменение этой страницы: 2024-06-27; просмотров: 46; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.01 с.) |