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

       

Качество (логика).


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

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

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

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

Теперь мы можем с уверенностью сказать, что именно качество является абстракцией, описывающей значимые сущности. Основанием для этого является то, что качества сравниваются путем сравнения значений - именно этот признак мы использовали для того, что бы отделить значимые сущности от вещей (как мы говорили ранее, значимые сущности, это сущности которые сравниваются "как значения"). Другими словами, значимые сущности есть ни что иное, как значения качеств описывающих вещи реального мира.

Итак, современная объектная концепция утверждает, что объект является единственной абстракцией позволяющей описать сущности предметного мира. Совершенно очевидно, что это утверждение является неполным. Мир состоит из взаимодействующих вещей и именно через взаимодействие вещь проявляет себя как единая сущность. Поэтому вместе с абстракцией "объект", описывающей вещи, должна использоваться абстракция "качество" необходимая для того, что бы описать способность вещей к взаимодействиям.


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

Качества можно сравнивать на основании следующих принципов:

1. между собой могут сравниваться значения только одного и того же качества. Только такое сравнение является осмысленным.

2. единственным способом сравнения качеств является сравнение значений качества. Качества, описываемые одинаковыми значениями, являются одинаковыми и никак иначе не отличаются друг от друга.

Следствием этого является то, что

3. все значения и переменные одного и того же качества должны иметь абсолютно одинаковую структуру (даже когда эта структура сложная). Если это не утверждение не выполняется (т.е. структура значений различается), то прямое сравнение этих значений невозможно и, следовательно, эти значения нельзя рассматривать как значения одного и того же качества.

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

1. можно сравнивать объекты разных классов. На самом деле, верней была бы фраза "можно пытаться сравнить объекты разных классов". Дело в том, что объекты в любом случае должны сравниваться в терминах качеств, поскольку вещи сравниваются именно в этих терминах. А для этого сравнения в первую очередь необходимо, что бы объекты описывались одинаковыми качествами.

2. два разных объекта, даже если их состояние (значение) абсолютно одинаково, все равно являются разными, отличаются друг от друга. Единственным критерием, позволяющим однозначно отличить один объект от другого, является объектный идентификатор - OID.


Только в том случае, когда объекты имеют одинаковый OID, можно сказать, что речь идет об одном и том же объекте.

3. объекты ,имеющие разную структуру, тем не менее, могут относиться к одному классу. Это верно по крайне мере в следующих случаях:

  • объекты относятся к классам один из которых является наследником другого. Объект класса-наследника, который заведомо может иметь гораздо более сложную структуру, чем родительский класс, в любом случае является объектом также и родительского класса - фактически именно в этом и заключается наследование.
  • объекты содержат атрибуты с неоднозначной структурой. Таким атрибутом, например, может быть группа повторения (массив, набор, и т.д.). Естественно, что когда структура атрибутов четко не определена (например, когда число элементов в разных группах повторения отличается), ни о каком единообразии структуры говорить нельзя.

    Таким образом, тип "качество" и тип "класс" являются логически разными. Следовательно, в системе типов должны существовать две разные (ортогональные) компоненты, каждая из которых представлена своей, отличной от другой системой типов. Любой тип определенный и описанный в одной из компонент, может рассматриваться в ортогональной компоненте только как базовый. В дальнейшем будем называть эти компоненты "объектной" и "качественной", а типы, описываемые в них, соответственно "объектные типы" (классы) и "качественные типы". Для адекватного моделирования реального мира информация о нем должна описываться в обеих этих компонентах одновременно.


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