Классика баз данных - статьи

       

Типы и классы


Следует поддерживать типы или классы

Это весьма деликатный вопрос: имеются две основные категории объектно-ориентированных систем – те, которые поддерживают классы, и те, которые поддерживают типы. К первой категории относятся такие системы, как Smalltalk [Goldberg and Robson 83], Gemstone [Maier, et al. 84], Vision [Caruso and Sciore 81], все системы семейства Smalltalk: Orion [Banerjee et al. 87], Flavors [Bobrow and Steifik 81], G-Base [G-Base 88], Lore [Caseau 89] и, вообще говоря, все системы, ведущие свое происхождение от языка Lisp. Представителями второй категории являются такие системы, как C++ [Stroustrup 86], Simula [Simula 67], Trellis/Owl [Schaffert, и др. 86], Vbase [Atwood 85] и O2 [Bancilhon et al. 88].

В объектно-ориентированной системе тип обобщает общие черты множества объектов с одинаковыми характеристиками. Он соответствует понятию абстрактного типа данных. Он делится на две части: интерфейс и реализация (реализации). Пользователям типа видна только интерфейсная часть, а реализация объекта видна только проектировщику типа. Интерфейс состоит из списка операций вместе с их сигнатурами (т. е. типами входных параметров и типом результата).

Реализация типа состоит из части данных и части операций. Часть данных описывает внутреннюю структуру данных объекта. В зависимости от мощности системы часть данных может быть более или менее сложной. Часть операций состоит из процедур, которые реализуют операции интерфейсной части.

В языках программирования типы являются средствами увеличения продуктивности программиста за счет обеспечения корректности программ. Принуждая пользователя объявлять типы переменных и выражений, которые он манипулирует, система судит о корректности программ на основе этой информации о типах. Если система типов тщательно разработана, то система может произвести проверку типов во время компиляции, иначе некоторые проверки могут быть отложены до времени выполнения. Таким образом, типы главным образом используются во время компиляции для проверки корректности программ.

Содержание  Назад  Вперед