СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №3/2013
ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ разом, единственный способ доступа к этим элементам– использование мето дов, объявленных при декларации ти па. Ограничением для методов являет ся то, что их формальные параметры не могут быть типа access или file . Тело типа protected задаёт детали ре ализации данного типа; в теле типа мо гут быть описаны: ● декларации и тела подпрограмм, па кетов; ● декларации типов, подтипов, кон стант, переменных, файлов и alias (переименований); ● декларации атрибутов, специфика ции и др. Пример тела: type COUNTER_TYPE is protected body тело типа variable count : integer := 0; procedure Set ( num : integer) is begin count := num ; end procedure Set; procedure Inc is begin count := count + 1 ; end procedure Inc; impure function Get return integer is begin return count; end function Get; end protected body COUNTER_TYPE; Если тип protected определён в декла ративной части архитектуры, то и де кларация, и тело типа должны быть размещены в этой части. Если же этот тип определён в пакете, то декларация типа должна быть размещена в декла ративной части пакета, а тело типа – в теле пакета. Все подпрограммы, определённые в теле типа protected , имеют полный до ступ к внутренним структурам данных, поэтому они не должны указывать их в качестве формальных параметров. Это значит, что все функции типа protected , имеющие доступ к внутренним дан ным, должны быть объявлены как функции impure . Ключевое слово im pure указывает на функцию с побоч ным эффектом (побочным эффектом является, например, чтение или запись файла). Для таких функций возвраща емые значения могут быть разными для одних и тех же значений аргумен тов [5, 6]. Слово impure является обяза тельным, в отличие от слова pure для «чистой» функции. П РАВИЛА ИСПОЛЬЗОВАНИЯ ТИПА PROTECTED Только методы, имена которых за даны при декларации типа protected , являются видимыми вне данного ти па. Всё, что задаётся внутри тела типа protected , невидимо снаружи. Одна ко все имена, объявленные при дек ларации типа, видны в теле типа pro tected . Это правило аналогично пра вилу видимости имён, объявленных в декларативной части пакета и в теле пакета. Только переменные могут быть типа protected . Общие (shared) переменные могут быть типа protected . Другие пе ременные также могут быть типа pro tected , но, поскольку они доступны только для одного процесса, в котором они были объявлены, то их использо вание не имеет особого смысла. Типы protected не могут быть исполь зованы в качестве элементов файлов, элементов составных типов или типов доступа (access types). Передача значения одной перемен ной типа protected другой перемен 75 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 3 2013 Реклама
RkJQdWJsaXNoZXIy MTQ4NjUy