50
8.2. Раздел за реализация (implementation part)
 TypeDeclaration |
 VarDeclaration |
 PFDeclaration }.
В описанието на даден модул, независимо дали е раздел от обикновен модул,
модул-описание или е модул-само-описание, се декларират (описват) обектите, които
се експортират навън от него. Описанието на константи, променливи и типове не се
отличава по нищо от описанието, което би било дадено в обикновена процедура.
Описание на етикети не е разрешено, а описанието на процедури и функции е сведено
само до задаване на заглавната част от описанието (не трябва да се задава тяло на
процедурата или директивата FORWARD).
Описаните в тази част обекти стават видими за импортиращия (използващия) ги
модул или програма. Освен това, за импортиращия модул (програма) те са и
единствените достъпни за използване обекти от този модул (обектите, дефинирани в
реализационната част, са невидими).
Чрез тази схема се реализира разделно-модулната компилация, като се запазва
строгата типизация. Компилаторът продължава да контролира съвместимостта на
типовете и броя на параметрите на процедурите и функциите. Самата реализация
остава скрита за импортиращия модул. Нещо повече, в UniPascal е възможна промяна
на реализацията (изменение и прекомпилация), без да е необходима прекомпилация на
използващите я модули.
Следва пример на модул, реализиращ стек от цели числа. За работата на стека
са необходими следните четири операции:
*
поставяне на елемент в стека;
*
изваждане на елемент от стека;
*
проверка за празен стек;
*
проверка за пълен стек.
Проверката за пълен или празен стек ще реализираме чрез логически функции.
interface unit STACK;
function full: boolean;
function empty: boolean;
procedure push(x: integer);
function pull: integer;
end { STACK }.
При така зададеното описание на модула STACK, той може да се използва от
програмата, като съставителят й не знае предварително колко е голям стекът и как е
реализиран.
8.2. Раздел за реализация (implementation part)
ImplmntPart =
[UsesClause]
Block.
Разделът за реализация практически не се отличава от обикновена програма.
Разликите се състоят в следното:
*
не е необходимо (и не трябва) да се декларират отново обектите, описани
в частта за описание. По правилата за видимост те се виждат като глобални
идентификатори;
<<  <  GO  >  >>

Вернуться к началу сайта