Supponiamo di avere un tipo aggregato e voglio usarlo in combinazione con un iteratore di modelli. Il seguente codice C # fornisce un esempio esatto del mio modello:
public interface Iterable<T>
{
Iterator<T> iterator();
}
public abstract class Letter
{
}
public abstract class Alphabet : Iterable<Letter>
{
public abstract Iterator<Letter> iterator();
}
public abstract class Iterator<T>
{
public abstract void first();
public abstract void next();
public abstract bool done();
public abstract T get();
}
Ma ho un piccolo problema durante l'acquisizione di questo in UML. Il problema è che non sono sicuro di come combinare due relazioni tra Alphabet e Iterable : Template Binding e Realization. Ho finito per dipingerli separatamente, ma per questo ho dovuto introdurre due entità intermedie per questo e questo sembra un po 'maldestro.
Vedi questa nuova interfaccia AlphabetIterable (lega Iterable con Letter ) e class AlphabetIterator (lega > Iterator con Lettera ).
C'è un modo per creare un modello UML equivalente senza questi due intermedi?