UML: come implementare un'interfaccia modello?

3

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?

    
posta krokoziabla 22.02.2015 - 17:25
fonte

1 risposta

1

L'immagine sotto mostra come il reverse engineering del codice di Sparx Systems Enterprise Architect visualizza la relazione tra Alphabet e Iterable quando alimentato con il tuo snippet di codice.

Hoaggiuntomanualmentelostereotipo«bind»perrenderlocompatibilecon

www.omg.org/spec/UML/2.5/Beta2 → 7.3.4 Common Structure → Templates → Notation

...

A TemplateBinding is shown as a dashed arrow with the tail on the bound element and the arrowhead on the template and the keyword «bind». The binding information may be displayed as a comma-separated list of template parameter substitutions:

<template-param-substitution> ::= <template-param-name> ‘->’ <actual-template-parameter>

...

Vedi anche:

risposta data 22.02.2015 - 19:21
fonte

Leggi altre domande sui tag