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

       

при сравнении двух значений проверяются


  • при сравнении двух значений проверяются сами эти значения, и, кроме того,
  • значения никак не могут участвовать в связи, поскольку это понятие определено только для объектов классов.

    В дополнение к скалярным типам данных, заимствованным из UML, в OCL предопределены структурные типы, которые являются разновидностями коллекций (collection):

  • Математическое множество (set), т.е. неупорядоченная коллекция, не содержащая одинаковых элементов;
  • Мультимножество (bag), т.е. коллекция, которая может содержать повторяющиеся элементы;
  • Последовательность (sequence), т.е. упорядоченная коллекция, которая может содержать повторяющиеся элементы.

    В OCL элементами каждого из трех типов коллекций могут быть либо объекты, либо значения.

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

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

    context <class_name> inv: <OCL выражение>

    где <class-name> является именем класса, для которого определяется инвариант, inv – ключевое слово, говорящее о том, что определяется именно инвариант, а не другой вид ограничений, и context – ключевое слово, которое говорит о том, что контекстом следующего после двоеточия OCL-выражения являются объекты класса <class-name>, то есть OCL-выражение должно принимать истинное значение для всех объектов этого класса.


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