Пояснения

Слайд 42. Правило области значений определяемого типа

Пояснения

 

Понятие «определяемый тип» (TYPE) выражает поименованный тип данных языка EXPRESS, заданный на основе какого-либо другого типа данных. Назначением определяемого типа является расширение выразительных возможностей языка EXPRESS за счет создания типа с новыми свойствами. Определяемый тип обязательно задается на основе какого-либо другого типа данных, называемого исходным типом. В качестве исходного типа могут выступать простой тип, агрегированный тип, другой определяемый тип или составной тип. При этом область значений вновь создаваемого определяемого типа задается на основе области значений исходного типа. Она может либо полностью совпадать с областью значений исходного типа, либо являться подмножеством области значений исходного типа.


 

В случае, когда область значений вновь создаваемого определяемого типа является подмножеством области значений исходного типа, на область значений исходного типа должны быть наложены ограничения, выражаемые так называемыми «правилами области значений». В объявлении определяемого типа могут быть заданы несколько правил области значений. Каждое такое правило представляет собой некоторое условие вхождения значения из области значений исходного типа в область значений определяемого типа. Таким образом, правило области значений следует рассматривать как своего рода фильтр, отсеивающий неподходящие значения. Каждое правило области значений содержит выражение, которое в результате своего вычисления должно дать значение логического типа: FALSE (ложь), TRUE (истина), UNKNOWN (неопределенность) или неопределенное значение «?».

Принцип отбора значений исходного типа, входящих в область значений определенного типа состоит в том, что в выражение каждого правила вместо ключевого слова «SELF» подставляется некоторое значение исходного типа. Значение удовлетворяет правилу, если выражение дает в результате любое значение, кроме FALSE (ложь). Таким образом, значение исходного типа входит в область значений определенного типа в том случае, если ни одно из правил не нарушено, т.е. выражения всех правил дали в результате любое значение, кроме FALSE (ложь).

Структура определяемого типа представлена на примере. Здесь объявляется определенный тип «month» (месяц), представляющий номер месяца. Этот тип задается на основе целочисленного типа INTEGER и накладывает ограничения на его область значений: номер месяца должен быть больше либо равен единице и меньше либо равен двенадцати. Объявление определяемого типа начинается с ключевого слова TYPE и завершается ключевым словом END_TYPE. После начала объявления типа идет имя типа (в данном случае – «month», т.е. месяц) и указание исходного типа (в данном случае – целочисленный тип INTEGER).

Объявление правил области значений типа начинается с ключевого слова «WHERE» и продолжается вплоть до окончания объявления типа. Как уже говорилось, в рамках одного типа могут быть объявлены несколько правил области значений. Каждое правило может иметь метку (которая, впрочем, необязательна), причем эта метка должна быть уникальной в рамках типа. После метки следует выражение, определяющее условие выполнения правила. Это выражение обязательно содержит ключевое слово «SELF», выражающее значение исходного типа, для которого проверяется правило.


Слайд 43. Сущность (ENTITY)