Объекты

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

Пример использования объектов:

//класс "Питомец"
class Pet {
	obj prop age: int;
}

//класс "Человек"
class Human {
	obj prop age: int;
	rel hasPet(Pet) : {1 -> *} ;
}

//Объект класса "Питомец", представляющий конкретного питомца "Мурзик"
obj murzik : Pet {
	age = 2;
}

//Объект класса "Человек", представляющий конкретного человека "Алиса"
obj alice : Human {
	//конкретные утверждения о значениях свойств и связях между объектами
	// описывают ситуацию
	age = 22;
	hasPet(murzik);
}

В коде классы представлены классом ObjectDef.
Состав базовой хранимой информации:

  • Имя объекта (ObjectDef.name)
  • Имя класса, инстансом которого является данный объект (ObjectDef.className)
  • Определенные для объекта значения свойств (ObjectDef.definedPropertyValues)
  • Утверждения о связях объекта с другими объектами по отношениям (ObjectDef.relationshipLinks)
  • Связанные с объектом метаданные (ObjectDef.metadata)

Объекты являются экземплярами класса

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

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

Корректность данных (валидация)

Корректность объекта состоит из:

Полнота

Класс, экземпляром которого является объект, должен присутствовать в модели.