Объекты
Объекты представляют собой конкретные сущности, присутствующие в задаче/предметной области. Тогда как классы определяют, что может быть в предметной области, конкретное множество и состояние объектов определяет конкретную ситуацию, возникшую в предметной области.
Так, основной смысл объектов состоит в том, что значения их свойств и связи их между собой по отношениям создают описание некоторой конкретной ситуации.
Пример использования объектов:
//класс "Питомец"
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
). Такой класс может быть только один - множественное наследование в системе не поддерживается.
Объект, являющийся инстансом класса, считаются инстансом любого из его родительских классов.
От своего класса (а также его родительских классов) объект получает все определенные в них значения классовых свойств, а также получает возможность (и необходимость) иметь значения по всем определенных в них объектных свойствах и быть связанным с другими объектами связями по определенным в них отношениях.
Подробнее см.:
Корректность данных (валидация)
Корректность объекта состоит из:
- Корректности всех значений его свойств;
- Корректности всех его связей по отношениям;
- А также собственной корректности объекта, описанной ниже.
Полнота
Класс, экземпляром которого является объект, должен присутствовать в модели.