Каждый UML
правильно до тех пор, как мы знаем, что это интерпретация (потому что мы не можем следовать стандартам для UML
)
О ваш вопрос:.
является ли моя агрегация отношения моего класса (между ArrayCoordinate
и плитки) является правильным (особенно направление стрелки)?
Даже если я знаю, что ваш UML
был спроектирован на визуальной студии, я действительно не знаю подробностей проектирования, и я отвечу на общие диаграммы UML
.
Ответ зависит от того, как вы интерпретируете свои собственные UML
. В большинстве случаев, когда существует связь 1-n между классом A и классом B, есть стрелка, идущая из класса A, указывающая на класс B, она может иметь * близкий класс B (указывая, что существует много те B) и может также включать имя в стрелку, указывающее имя поля, которое поддерживает эту агрегацию. Если имя указано в стрелке, обычно вы можете удалить его из полей UML
, чтобы у вас не было избыточной информации (репликации). Однако ваш UML
не имеет ни имени на стрелке, ни поля, которое может указывать на то, что отношения действительно существуют.
Во-вторых, и в соответствии с моими рассуждениями, то UML
представление агрегации между TileObject
и Tile
в неправильном направлении или оно отсутствует, и на самом деле существует, но UML
, поскольку это не дает эту информацию (расширение вашего TileObject
класс помог бы).
EDIT: О вашем новом TileObject UML
я бы сказал, что там не хватало поле, которое поддерживает отношения с Tile
однако кажется, что Visual Studio представляет собой 1-п отношения с заполненным ромбом и не включают в себя поля, которые поддерживают эти отношения. Также кажется, что иногда визуальная студия представляет отношения 1-1, а другие - нет; в вашем примере это отношение между Tile
и BattleManager
с незаполненным ромбом, однако оно не делает этого между TileObject
и ArrayCordinate
. И если это правда, то мне интересно, почему существует n-n отношение между Tile
и TileObject
. (должно ли это быть 1-n отношения вместо?)
Как я уже говорил, я не очень хорошо знаком с визуальной студией UML
дизайнером, но я постараюсь поддерживать согласованное (если возможно) проектирование UML
. Единственные моменты, когда вы хотите пропустить согласованность, - это попытаться свести к минимуму ваше проектирование.
О вашей второй редакции: Я думаю, вы действительно должны избегать замыкания отношений между классами. Делая это, вы создаете дополнительную зависимость, и вам нужно знать, в чем цель этого нового поля (которое не имеет функциональной цели, а также эффективности). Наконец, в большинстве случаев выгоды от этого не стоят.
Наконец, и отвечая на Ваш вопрос: Ваше отношение между ArrayCordinate
и Tile
это хорошо, потому что вы заявили следующее:
ArrayCoordinate
представляет индексацию плитки, для итерации
Это означает, что должно быть существует соотношение 1-n между ArrayCoordinate
и Tile
.
Никто не может действительно ответить на этот вопрос, не зная, как вы используете как координаты плитки, так и массива. Или то, что ты притворяешься с ними. –
Я отредактировал мое сообщение, чтобы разместить описание. Пожалуйста, взгляните на второй взгляд. Спасибо за ваш пост :) –