Spec-Zone.ru › Ada 95
Справочник по Ada 95

3.2 Типы и подтипы

Статическая семантика

Тип характеризуется набором значений и набором примитивных операций, которые реализуют основные аспекты его семантики. Объект заданного типа — это сущность во время выполнения, которая содержит (имеет) значение типа.
Типы сгруппированы в классы типов, отражающие сходство их значений и примитивных операций. Существует несколько определенных языком классов типов (см. ПРИМЕЧАНИЯ ниже). Элементарные типы — это те, значения которых логически неделимы; составные типы — это те, значения которых состоят из компонентных значений.
Элементарные типы — это скалярные типы (дискретные и вещественные) и типы доступа (значения которых обеспечивают доступ к объектам или подпрограммам). Дискретные типы — это либо целочисленные типы, либо определяются перечислением их значений (перечисляемые типы). Вещественные типы — это либо типы с плавающей точкой, либо типы с фиксированной точкой.
Составные типы — это типы записей, расширения записей, типы массивов, типы задач и защищенные типы. Приватный тип или расширение приватного типа представляет частичный вид (см. 7.3) типа, обеспечивая поддержку абстракции данных. Частичный вид — это составной тип.
Некоторые составные типы (и их частичные виды) имеют специальные компоненты, называемые дискриминантами, значения которых влияют на наличие, ограничения или инициализацию других компонентов. Дискриминанты можно рассматривать как параметры типа.
В этом международном стандарте используется термин подкомпонент вместо термина «компонент», чтобы обозначить либо компонент, либо компонент другого подкомпонента. Там, где другие подкомпоненты исключены, используется термин «компонент» вместо него. Аналогично, часть объекта или значения используется для обозначения всего объекта или значения или любого набора его подкомпонентов.
Множество возможных значений для объекта данного типа может быть подвергнуто условию, которое называется ограничением (включается случай нулевого ограничения, который не задает никаких ограничений); правила, по которым значения удовлетворяют данному виду ограничения, приведены в 3.5 для range_constraintов, 3.6.1 для index_constraintов и 3.7.1 для discriminant_constraintов.
Подтип заданного типа — это комбинация типа, ограничения значений типа и определенных атрибутов, специфичных для подтипа. Заданный тип называется типом подтипа. Аналогично, связанное ограничение называется ограничением подтипа. Множество значений подтипа состоит из значений его типа, которые удовлетворяют его ограничению. Такие значения принадлежат подтипу.
Подтип называется неограниченным подтипом, если его тип имеет неизвестные дискриминанты или если его тип допускает ограничения диапазона, индекса или дискриминантов, но подтип не накладывает такого ограничения; в противном случае подтип называется ограниченным подтипом (поскольку он не имеет неограниченных характеристик).
ПРИМЕЧАНИЯ
2 Любой набор типов, замкнутый относительно вывода (см. 3.4), можно назвать «классом» типов. Однако, только определенные классы используются в описании правил языка — обычно те, которые имеют свой собственный набор примитивных операций (см. 3.2.3) или которые соответствуют набору типов, которые соответствуют заданному виду формального типа обобщения (см. 12.5). Вот примеры «интересных» классов, определенных языком: элементарные, скалярные, дискретные, перечисляемые, символьные, логические, целочисленные, знакомые целые числа, модульные, вещественные, с плавающей точкой, с фиксированной точкой, обычные с фиксированной точкой, десятичные с фиксированной точкой, числовые, доступа, доступа к объекту, доступа к подпрограмме, составные, массивы, строки, (немеченные) записи, меченные, задачи, защищенные, не ограниченные. Для определения типов в каждом из этих классов используется специальная синтаксическая конструкция.
Эти классы, определенные языком, организованы так:
все типы
элементарные
скалярные
дискретные
перечисляемые
символьные
логические
другие перечисляемые
целые
знакомые целые
модульные целые
вещественные
с плавающей точкой
с фиксированной точкой
обычные с фиксированной точкой
десятичные с фиксированной точкой
доступа
доступа к объекту
доступа к подпрограмме
составные
массивы
строки
другие массивы
немеченные записи
меченные
задачи
защищенные
Классы «численные» и «неограниченные» представляют другие измерения классификации и не соответствуют вышеприведенной строго иерархической картине.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API