Производные типы и подтипы в Ada

Каковы различия?

5
задан Chris Conway 20 April 2010 в 19:26
поделиться

3 ответа

Из Викиучебники :

Подтипы данного типа будут совместимы друг с другом.

Производный тип - это новый полноценный тип, созданный на основе существующего. Как и любой другой тип, он несовместим со своим родителем; однако он наследует примитивные операции, определенные для родительского типа.

2
ответ дан 13 December 2019 в 19:23
поделиться

Основное отличие состоит в том, что производный тип отличается типа . Вы не можете просто назначить одно другому или использовать их вместе в выражении. С другой стороны, подтип совместим по присваиванию со своим исходным типом. Вы используете их вместе без необходимости вводить какой-либо код для изменения типов.

У подтипа будет более узкий диапазон, чем у базового типа, поэтому могут быть проверки диапазона (из которых, я считаю, Constraint_Error может быть увеличена). Так что вам все равно нужно быть осторожным.

1
ответ дан 13 December 2019 в 19:23
поделиться

Прежде всего, терминология: это «Ада», а не «АДА» - он назван в честь «Ады Лавлейс»; это не аббревиатура.

Подтип совместим со своим базовым типом, поэтому вы можете смешивать операнды базового типа с операндами базового типа. Например:

subtype Week_Days is Integer range 1..7;

Поскольку это подтип, вы можете (например) добавить 1 к дню недели, чтобы получить следующий день недели.

Производный тип - это полностью отдельный тип, который имеет те же характеристики, что и его базовый тип. Нельзя смешивать операнды производного типа с операндами базового типа. Если, например, вы использовали:

type Week_Day is new Integer range 1..7;

, то вы не смогли бы добавить целое число к дню недели, чтобы получить другой день недели. Чтобы выполнять манипуляции с производным типом, вы обычно определяете эти манипуляции самостоятельно (например, создаете пакет). В то же время производный тип «наследует» все операции своего базового типа (даже некоторые из них, которые могут не иметь смысла), поэтому вы все равно получаете добавление.

8
ответ дан 13 December 2019 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: