и ещё специфицирования
Да, конечно.
"ФИО кладовщика в накладной должно совпадать с ФИО кладовщика склада на момент создания накладной" - разве это не требование?
Требование и что?
Присвоение происходит в момент, когда объекта не было и он появляется, или в момент, когда объект был "новый" и стал "не новый"?
Конструктор создает новый объект - это очевидно, вопрос реанимации объекта в рамках нашей дискуссии? если да, то
1 - возможно создание ранее не существующего объекта. В этом случае его атрибуты принимают значения по умолчанию, если это никак не задано, то Null. Реляционная теория призывает не создавать пустых атрибутов, но типичная ситуация иная, тем более в рамках реализации.
2 - возможна реанимация ранее существующего объекта, т.е. загрузка его в оперативную память, например для отображение данных для формы редактирования. В любом случае объект проходит разные циклы превращения и 2 случай как исходный может включать 1, работа конструктора в таком случае может быт параметризирована (си ++ допускает множество конструкторов)
Может эти моменты совпадают?
Хотелось бы понять что Вы под этим подразумеваете
Создание объекта - это рантайм режим, но речь идет не о конкретном объекте, а об общих правилах создания объектов.Конструктор возвращает уже "не новый" объект - все ограничения должны выполняться (у "нового" ограничения могут и не выполняться - некоторые свойства (атрибуты и полюса) имеют "Null" значение)?
Не понимаю, к чему Вы клоните. Общие правила создания объектов задаются классом, его структурой и методами класса, спецификой его конструктора. Умолчательные значения тоже суть работа конструктора, только в данном случае поднята повыше на абстрактном уровне.
Если провести аналогию с базами данных. Для атрибутов у вас ест правила валидации (default value, validation rules и стандартные процедуры обеспечения целостности, которые определяют значения индексов, первичный и внешних ключей), для любых нестандартных моментов можно использовать триггеры.
Например ясно что если вы поставите ограничение внешнего ключа, то в накладной никак не может оказаться кладовщик, отсутствующий в таблице Кладовщики, но если вам нужно определить, что в накладной должен быть кладовщик работающий в момент формирования накладной, то тут без сложный правил проверки написанных как триггер, не обойдешься.