Как я могу представить член класса Map в UML?
Вопрос
Когда у меня есть класс с элементом Map, я не хочу рисовать отдельный объект класса / интерфейса для представления самой Карты, но я бы предпочел обращаться с картой так, как если бы это был собственный тип, а не сложный объект.
Рассмотрим следующий пример
public class IndexManagerImpl implements IndexManager {
/* ... */
private static Map<Searcher, Integer> searcherCache;
}
Я хотел бы подчеркнуть тот факт, что IndexManagerImpl
содержит (хотя и косвенные) ссылки на Searcher
экземпляры.Было бы здорово, если бы представление могло также показывать параметры типа searcherCache
.
Решение
Не согласен с Мартином ... MAP - это базовая структура данных, которую мы изучаем на любом выпускном компьютерном курсе! Он существует на большинстве современных языков и является важным ресурсом для аналитиков. Карта может быть нарисована как ассоциация в некоторых ситуациях, но потребуется какое-то расширение (стереотипы) ИЛИ вы можете определить шаблонный класс. Мне не нравится шаблонный подход - он скрывает ассоциации между основными игроками. Последний ресурс - это AssociationClass, специальный класс UML, используемый для определения nxn-отношений с атрибутами, что, как мне кажется, подходит для вашей проблемы, где " целое число " Поле - это своего рода счетчик поисковиков, связанных с indexManager. Помните также, что по коду вы не можете видеть другую сторону отношений, в то время как UML предназначен для показа обеих сторон, проблем навигации и т. Д.
Другие советы
На самом деле объекты коллекции указывают на связь «один ко многим» между двумя классами. Поэтому у вас должен быть класс IndexManagerImpl на диаграмме, который имеет связь «один ко многим» с классом Searcher
Карты нельзя считать коллекциями, поскольку они обладают свойствами, отличными от коллекций.На самом деле карта кратна коллекции с определенным отношением (mapping).На мой взгляд, представление карты сильно зависит от требования, и может быть несколько UML-представлений карты, основанных на вашем требовании.Таким образом, в простой форме может быть представлено отношение карты, связь "один ко многим" с элементом набора ключей и связь "один к одному" элемента набора ключей с элементом значения.Где ключевой элемент и элемент значения являются оболочками для исходных элементов, поскольку ассоциация на самом деле не связана с исходными элементами.
Надеюсь, это поможет....