UML Class Diagram - Это плохая практика для пересечения линий?

Это плохая практика для пересечения линий между различными классами в диаграмме UML? Это дизайнерский запах? Означает ли это, что ваши классы слишком запутаны или независимы? Это всегда / вообще неизбежно? Или я обдумываю это?

Вот моя текущая UML-диаграмма, если интересно. Вы увидите, что я проложил пару строк, чтобы не перекрывать друг друга.

3 ответа

Это плохая практика для пересечения линий между различными классами

Да, потому что это может помешать пониманию графика / диаграммы.

Это всегда / вообще неизбежно

Не все графики являются плоскими (см. Тестирование на плоскостность), поэтому иногда это неизбежно.

Но проблема не так проста, как "Я просто проложу линию вокруг". Есть много правил и рекомендаций, которые составляют хороший макет или способствуют хорошей визуальной эстетике; чтобы назвать только несколько:

  • пересечение линий (на некоторых диаграммах вы могли видеть небольшой мост при пересечении линий)
  • количество изгибов линии
  • общая длина линии
  • иерархия (обычно линии наследования должны быть нарисованы вверх)

Вы уже можете видеть, что некоторые правила конкурируют; так что верстка - это всегда баланс. Если вас интересует более подробная информация, я предлагаю поискать "эстетику графика" или "автоматическое (графическое) размещение".

К сожалению, большинство моих исследовательских работ находятся за платным доступом, поэтому я не могу ссылаться на PDF-файлы, но некоторые из них могут быть в Google; например, UML Diagram Layouting: современное состояние или эстетика диаграмм классов

На мой взгляд, пересечения линий могут быть неизбежны, но часто это происходит, когда я пытаюсь показать слишком много вещей на одной диаграмме. Я вижу это как "коммуникационный" запах, а не как дизайнерский запах.

Я часто обнаруживал, что явное написание вопроса, на который я пытаюсь ответить, помогает определить элементы модели, которые не являются строго необходимыми, и которые я должен пропустить. Кроме того, несколько диаграмм могут лучше передать идею / дизайн, чем одна насыщенная.

В вашем примере вы можете разбить диаграмму, следуя цветным областям, которые вы уже определили.

Когда есть пересечения, самое время остановиться и подумать, не слишком ли сложная диаграмма.

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

Лично я мог бы разбить вашу диаграмму на диаграмму компонентов; затем выразите структуру каждого компонента, используя отдельные диаграммы классов.

Другие вопросы по тегам