В общем, могут быть разные способы достижения одной и той же цели. Это означает, что следующие ответы не обязательно являются единственной возможностью, но они первые, которые приходят мне в голову.
1. Человек (P) может быть мужчиной (M) или женщиной (F), но не обоими сразу.
2. Человек должен быть мужчиной или женщиной.
Для этих двух утверждений необходимо принять важное решение при моделировании. Являются ли Male и Female подклассами класса Person, или вы используете какое-либо свойство, например hasSex, который связывает человека с полом? Если вы используете подход подкласса, вы можете сделать это, объявив, что
Человек - это не пересекающийся союз Мужской и Женский.
Это означает, что каждый экземпляр Person является экземпляром Male или экземпляром Female, и что классы Male em > и Female не пересекаются, поэтому ничто не является экземпляром обоих. (Конечно, если вы можете говорить о не-личностных вещах, о мужском и женском, тогда вы не захотите использовать именно этот подход.)
Если вы используете такое свойство, как hasSex, то это либо свойство объекта, либо свойство данных. В первом случае вам понадобится класс Sex с двумя индивидуумами мужчина и женщина, и вы бы объявили, что они отличаются от друг друга, и вы можете сделать hasSex функциональным свойством и объявить его диапазон как класс Sex. Отчасти это, конечно, зависит от того, насколько общие ваши классы и свойства. Если вы не объявляете диапазон для свойства, вы все равно захотите использовать какой-то класс ограничений в качестве суперкласса Person. Например.,
Человек = 1 hasSex. {Мужчина, женщина}
Человек hasSex. {Мужчина, женщина}
Эти аксиомы говорят, что каждый человек имеет ровно одно значение из {male, female} как значение для свойства * hasSex *, и что каждое значение, которое человек имеет для hasSex, должно быть из {male, female} .
3. У мужчины нет платьев
4. У женщины есть хотя бы одно платье (D)
Если вы используете общее свойство has, которое может применяться не только к платьям (в отличие, например, от свойства hasDress, которое применяется только к платьям), и у вас есть класс для Dress, это просто:
Мужчина = 0 имеет. Платье
Женщина ≥1 имеет. Платье
person
Joshua Taylor
schedule
02.03.2014