Subtypes and Supertypes Setting the Scene

Что имеется в виду, когда мы говорим "тип"?


Выражаясь нестрого, тип - это именованное множество значений (т.е. все возможные значения данного типа) вместе с ассоциированным набором операций, которые можно применять к этим значениям. Например, тип SMALLINT мог бы состоять из всех целых чисел в диапазоне от -32,768 до +32,767, а ассоциированным набором операций могли бы быть "+", "-", "*", "=", "

  • Данный тип может быть определенным либо системой, либо пользователем.
  • Часть определения любого типа представляет собой спецификацию всех возможных значений этого типа.
  • Такие значения могут быть произвольно сложными.
  • Реальное или физическое представление таких значений всегда скрывается от пользователя.
  • Такими значениями можно оперировать только посредством операций, определенных для данного типа.
  • В состав этих операций входит операция selector, которая позволяет "выбрать" -- или специфицировать -- произвольное значение данного типа (посредством соответствующего вызова селектора), и операция equality, которая дает возможность проверить, являются ли два значения данного типа на самом деле одним значением.
  • Некоторые типы являются подтипами других супертипов.
  • Если B - подтип A, то все операции и ограничения, применимые к A, применимы и к B (наследование); однако B может иметь свои собственные операции и ограничения, не применимые к A.

    Заметим, что в реляционном мире типы обычно называются "доменами"; в объектном мире они обычно называются "классами". В этой серии я буду использовать термин "тип" (большей частью).



    Содержание раздела