Что имеется в виду, когда мы говорим "тип"?
Выражаясь нестрого, тип - это именованное множество значений (т.е. все возможные значения данного типа) вместе с ассоциированным набором операций, которые можно применять к этим значениям. Например, тип SMALLINT мог бы состоять из всех целых чисел в диапазоне от -32,768 до +32,767, а ассоциированным набором операций могли бы быть "+", "-", "*", "=", "
Данный тип может быть определенным либо системой, либо пользователем. Часть определения любого типа представляет собой спецификацию всех возможных значений этого типа. Такие значения могут быть произвольно сложными. Реальное или физическое представление таких значений всегда скрывается от пользователя. Такими значениями можно оперировать только посредством операций, определенных для данного типа. В состав этих операций входит операция selector, которая позволяет "выбрать" -- или специфицировать -- произвольное значение данного типа (посредством соответствующего вызова селектора), и операция equality, которая дает возможность проверить, являются ли два значения данного типа на самом деле одним значением. Некоторые типы являются подтипами других супертипов. Если B - подтип A, то все операции и ограничения, применимые к A, применимы и к B (наследование); однако B может иметь свои собственные операции и ограничения, не применимые к A.
Заметим, что в реляционном мире типы обычно называются "доменами"; в объектном мире они обычно называются "классами". В этой серии я буду использовать термин "тип" (большей частью).
Содержание раздела