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

       

Чёткая структуризация атомарных литеральных классов,


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

На рис. 3 представлена иерархия атомарных литеральных типов, удовлетворяющая сформулированым критериям. Рисунок требует пояснений. Все литеральные типы унаследованы от базового абстрактного класса AtomicLiteral. Этот класс в свою очередь может быть производным от корневого класса всей иерархии объектной системы. Тем самым реализован КО1, т.к. в единой иерархии присутствуют как классы метамодели объектной системы, так и классы доменов. Для каждой категории (числа, Number) и подкатегории (целые числа (IntegerNumber), дробные числа (FractionNumber)) типов данных введён абстрактный класс, от которого унаследованы реализованные классы (КО4).

Рис. 3. Иерархия литеральных типов объектной системы, отвечающая выделенным критериям

При сохранении (извлечении) экземпляра класса можно с помощью операции is проверить тип его класса и в соответствии с полученным результатом обработать его требуемым образом. Кроме того, для каждой категории типов, например, для целых чисел, выделен абстрактный базовый класс (IntegerNumber), от которого унаследованы конкретные реализации атомарных литеральных типов, входящих в группу (BigInt, Int, SmallInt, TinyInt, Bit). Такая реализация соответствует требованию КО4. Для введения дополнительного типа, позволяющего сохранять значения целых чисел, достаточно создать класс производный от IntegerNumber. Тем самым, реализован КО1, в котором требуется представление возможности определения производных классов от литеральных типов.

Как видно на рис. 3, каждый из присутствующих классов имеет только одного родителя, т.е. при проектировании иерархии использовано одиночное наследование, что позволило упростить реализацию и соответствует требованию КО2.

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