абстрактная функция не может иметь функциональности. Вы в основном говорите, любой дочерний класс ДОЛЖЕН дать их собственную версию этого метода, однако это является слишком общим, чтобы даже попытаться реализовать в родительском классе.
виртуальная функция А, в основном говорит взгляд, вот функциональность, которая может или не может быть достаточно хорошей для дочернего класса. Таким образом, если это достаточно хорошо, используйте этот метод, в противном случае тогда переопределите меня и обеспечьте Вашу собственную функциональность.
Я бы просто показал связь MyServer с MyClient с кратностью 0 .. * на конце MyClient. Все остальное - детали реализации и могут быть оставлены программисту.
MyServer
|
|
|
Map
|
| |
| |
MyClientTypeKey MyClientType
Разве это не должно быть так просто, как указано выше?
MyServer
|
|*
T1toT2
/ \
1/ \1
Key Value
Отличие от решения Марка в том, что сервер имеет много связи с контейнерами. Именно так Eclipse Modeling Framework (EMF) предлагает реализовать карты .
Можно также добавить некоторые специфические для UML вещи, например, указать, что ключи должны быть уникальными (через стереотипы).
Прежде всего я и некоторые другие думают, что UML должен содержать некоторые базовые типы коллекций, как это было в некоторых более ранних версиях. Их можно взять, например, из OCL ...
"Путь EMF" кажется правильным, однако он придает imho слишком большое значение типу - , что на самом деле неважно imho, поэтому я бы моделируйте его просто как класс ассоциации. Это позволит вам зафиксировать все ограничения карты (например, множественность), которые можно зафиксировать с помощью обычного класса, но не сделает этот класс таким же важным, как другие.
Вы можете использовать квалифицированную ассоциацию:
┌──────────┐ 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. Напротив, квалифицированная ассоциация говорит, что любой данный ключ будет связан только с одним значением, и что у вас не может быть ключа с отсутствующим значением.