Non so come farlo nel tuo strumento di scelta, ma a livello di modello, funziona esattamente come per le classi. Si crea un'operazione di modello con la propria firma.
capitolo 17.4.14 del UML2 superstructure specifica questo per la notazione:
Il parametro parametri di modello e modello vincolante di un'operazione di template sono due liste in mezzo il nome dell'operazione ed i parametri dell'operazione .
* < visibilità> < nome> '<' < template-parameter-list> '>' '< <' < vincolante-espressione-list> '>>' '(' < parametro> [ '' < parametro >] ** ')' [ ':' < proprietà-string>]
Nel tuo caso, si deve prima vedere il semplice caso di
public <T> boolean bar(T x, T y)
Ciò corrisponderebbe a
+ bar < T> (x: T, y: T): booleano
tuo esempio originale sembra un po 'più complicata, perché il parametro di template è vincolato ad un altro class, Comparable, che a sua volta è anche un template il cui parametro (lo chiamerò T1) è legato al parametro dell'operazione a sua volta. Questo ci dà
+ bar < T> Paragonabile < T1> T >> (x: T, y: T): booleano
Nota: (Un po 'di approfondimento avanti e indietro) I modelli specificati da UML (e in qualche modo C++) sono una bestia molto diversa da Generics in Java. Sembrano più o meno gli stessi, ma ci sono - a volte sottili - differenze nella loro semantica che possono rendere difficile abbinare i due.Il più importante in UML è questo:
Un modello non può essere utilizzato nello stesso modo di un elemento non modello dello stesso tipo. L'elemento modello può essere utilizzato solo per generare elementi associati (ad esempio, una classe modello non può essere utilizzata come tipo di un elemento digitato) o come parte della specifica di un altro modello (ad esempio, una classe modello può specializzare un'altra classe modello).
Ciò significa che in UML anche OtherFoo deve essere un modello, ovvero una firma modello (con 0 parametri). Al fine di utilizzare il modello operativo correttamente al di fuori dell'ambito del modello, ovvero chiamarlo in un'attività o simile, dovresti prima associarlo a un'operazione concreta, che viene invece utilizzata. Nel caso del tuo esempio, questo significa:
- Associazione di modello OtherFoo a una classe associata (anonima).
- Modello di operazione barra di rilegatura per un'operazione nella classe associata.
+1, buona domanda !!!!! – NINCOMPOOP