Esiste una rappresentazione per mixin o tratti su UML?

4

Esiste una rappresentazione per i moderni costrutti di programmazione che stanno diventando comuni nei moderni linguaggi OOP / ibridi come mixin / tratti / categorie / classi parziali?

    
posta Amogh Talpallikar 30.10.2013 - 07:18
fonte

1 risposta

4

Sì e no. Generalmente, UML consente l'utilizzo dell'ereditarietà multipla, che consente di modellare qualcosa come i tratti. In un certo senso, i tratti in Scala sono un modo per consentire l'ereditarietà multipla, mentre si cerca di ridurre il suo effetto negativo (vale a dire il problema dell'eredità del diamante).

Per quanto riguarda la parte della risposta: puoi mostrare i tratti / mixins come normali classi in UML, o anche aggiungere uno stereotipo corrispondente (o renderli astratti o se vuoi essere più preciso definire il proprio profilo con un tratto-stereotipo corretto). Una classe che mescola più tratti viene quindi visualizzata come una classe che eredita da questi tratti (tramite associazioni di generalizzazione).

Tuttavia, l'UML non ha un concetto semantico appropriato di questa eredità. A parte una vaga descrizione che la generalizzazione significa che la sottoclasse ottiene le caratteristiche dalle sue superclassi, non otterrete una semantica pulita. In particolare, la semantica specifica della lingua come la linearizzazione dei tratti di Scala non è direttamente supportata in UML.

Se vuoi creare un modello molto preciso dei tuoi tratti / classi Scala, dovresti definire un profilo UML personalizzato e assegnare stereotipi alle tue generalizzazioni per documentare il loro ordine di linearizzazione. Tuttavia, anche questo è limitato, perché l'ordine può essere diverso per classi diverse che condividono alcuni dei loro tratti.

Quindi dipende da cosa vuoi usare UML per. Se vuoi usarlo come documentazione, potresti essere in grado di vivere con queste carenze. Se si desidera utilizzare i modelli UML come base per la generazione del codice o alcuni di questi, le funzionalità della lingua più recenti rappresentano un problema. Mentre l'UML offre punti di variazione semantica è nel suo insieme basato sui linguaggi OO tradizionali e non è sufficiente nel momento in cui lasci questi set di funzionalità standard. Mentre i tratti / mixin sono ancora strettamente correlati a classi / oggetti, e quindi possono essere visualizzati con alcuni compromessi, sarai ancora più in difficoltà quando proverai a usare UML per aspetti linguistici non OO (pensa, funzionale o programmazione logica).

    
risposta data 30.10.2013 - 08:47
fonte

Leggi altre domande sui tag