UML динамическая ассоциация классов - PullRequest
1 голос
/ 04 апреля 2019

У меня есть класс с именем pet, который динамически связан либо с 1 dog, либо с cat, но не с обоими одновременно.

Как называется этот тип динамической ассоциации? Как я могу представить это на диаграмме классов UML, пояснив, что каждый pet связан с одним dog или cat, но не с обоими одновременно?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

Это то, что вы после просто наследования? Домашнее животное представляется мне абстрактным понятием, где как Собака и Кошка были бы конкретными понятиями.Мое первоначальное решение в вашей ситуации, вероятно, было бы иметь абстрактный класс Pet (который не может быть создан), который специализируется на Dog и Cat (который может).

Если вы действительно заинтересованычтобы иметь экземпляр Pet , который связан с экземпляром Cat или Dog, то вам, вероятно, все равно придется управлять этим по наследству.Возможно, что-то вроде этого: enter image description here

0 голосов
/ 07 апреля 2019

Формулировка вашего вопроса немного забавна, когда вы читаете его как модель реального мира (модель домена ).

В реальном мире домашнее животное не связано с животным. Скорее, домашнее животное IS животное. Следовательно, класс pets является (ролевым) подклассом animals в доменной модели, основанной на значении термина «домашнее животное» в английском языке.

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

Может быть, вы не заинтересованы в том, чтобы сначала создать модель предметной области, прежде чем создавать (1019) * модель проектирования (независимую от технологии), которую затем можно превратить, например, в модель класса Java или C #.

Может быть, вы хотите перейти к модели класса C ++ напрямую, не пытаясь сначала понять основные понятия предметной области.

Вы можете сделать это, но я не думаю, что это хорошая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...