Ответ 1
Я не знаю, как это сделать в вашем инструменте выбора, но на уровне модели он работает точно так же, как и для классов. Вы создаете операцию с вашей подписью.
В главе 17.4.14 надстройки UML2 указано это для обозначения:
Параметры шаблона и привязка параметров шаблона операции шаблона - это два списка между именем операции и параметров операции.
* < видимость < имя < < < < < < шаблон-параметр-список > ' > ' < < < lt; binding-expression-list > ' → ' ('<parameter> [', <parameter> ] **') [': < property-string > ]
В вашем случае сначала рассмотрим простой случай
public <T> boolean bar(T x, T y)
Это соответствовало бы
+ bar <T> (x: T, y: T): Boolean
Исходный пример выглядит несколько сложнее, потому что параметр шаблона ограничен другим классом, Comparable, который, в свою очередь, также является шаблоном, параметр которого (я буду называть его T1) привязан к параметру операции по очереди. Это дает нам
+ bar <T> Сравнительный < T1- > T → (x: T, y: T): Boolean
Примечание. (Немного углубленного продвижения вперед). Шаблоны, заданные UML (и в некоторой степени С++), являются совсем другим зверем из Generics в Java. Они выглядят более или менее одинаково, но есть и иногда тонкие различия в их семантике, которые могут затруднить соответствие двух. Наиболее важным в UML является следующее:
Шаблон нельзя использовать таким же образом, как и элемент без шаблона того же типа. Элемент шаблона может только для создания связанных элементов (например, класс шаблона не может использоваться как тип типизированного элемента) или как часть спецификации другого шаблона (например, класс шаблона может специализировать другой класс шаблона).
Это означает, что в UML также должен быть шаблон OtherFoo, т.е. иметь подпись шаблона (с 0 параметрами). Чтобы затем правильно использовать шаблон операции вне области шаблона - то есть вызвать его в виде действия или аналогичного - сначала вам нужно привязать его к конкретной операции, которая используется вместо этого. В случае вашего примера это означает:
- Привязка шаблона OtherFoo к (анонимному) связанному классу.
- Шаблон операции привязки к операции в связанном классе.