Как описать содержавшую карту в диаграмме классов UML?

абстрактная функция не может иметь функциональности. Вы в основном говорите, любой дочерний класс ДОЛЖЕН дать их собственную версию этого метода, однако это является слишком общим, чтобы даже попытаться реализовать в родительском классе.

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

22
задан Sled 10 October 2013 в 14:19
поделиться

5 ответов

Я бы просто показал связь MyServer с MyClient с кратностью 0 .. * на конце MyClient. Все остальное - детали реализации и могут быть оставлены программисту.

11
ответ дан 29 November 2019 в 04:23
поделиться
             MyServer
                 |
                 |
                 |
                Map
                 |
                | |
               |   |
  MyClientTypeKey   MyClientType

Разве это не должно быть так просто, как указано выше?

  • MyServer имеет взаимную связь с картой
  • Карта имеет 1 ко многим ассоциациям как с ключами, так и с значениями.
1
ответ дан 29 November 2019 в 04:23
поделиться
           MyServer
               |
               |*
            T1toT2
            /    \
          1/      \1
         Key     Value

Отличие от решения Марка в том, что сервер имеет много связи с контейнерами. Именно так Eclipse Modeling Framework (EMF) предлагает реализовать карты .

Можно также добавить некоторые специфические для UML вещи, например, указать, что ключи должны быть уникальными (через стереотипы).

3
ответ дан 29 November 2019 в 04:23
поделиться

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

"Путь EMF" кажется правильным, однако он придает imho слишком большое значение типу - , что на самом деле неважно imho, поэтому я бы моделируйте его просто как класс ассоциации. Это позволит вам зафиксировать все ограничения карты (например, множественность), которые можно зафиксировать с помощью обычного класса, но не сделает этот класс таким же важным, как другие.

2
ответ дан 29 November 2019 в 04:23
поделиться

Вы можете использовать квалифицированную ассоциацию:

┌──────────┐             1 ┌───────┐
│ MyServer │Key│───────────│ Value │
└──────────┘               └───────┘

См .: http://etutorials.org/Programming/UML/Chapter+6.+Class+Diagrams+Advanced+Concepts/Qualified+Associations/ (потому что это трудно рисовать с использованием ASCII)

Также обратите внимание, что квалифицированная ассоциация изменяет множественность:

┌──────────┐          0..* ┌───────┐
│ MyServer │───────────────│ Value │
└──────────┘               └───────┘

┌──────────┐             1 ┌───────┐
│ MyServer │Key│───────────│ Value │
└──────────┘               └───────┘

Вверху показана ассоциация от сервера к значениям 0-n. Напротив, квалифицированная ассоциация говорит, что любой данный ключ будет связан только с одним значением, и что у вас не может быть ключа с отсутствующим значением.

29
ответ дан 29 November 2019 в 04:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: