Come si mostra il gestore di eccezioni in un diagramma di classi?

4

Ho una classe di gestore di eccezioni. Voglio mostrare questa classe nel diagramma uml - class. Ma, non so come rappresentare la relazione tra classe <X> e classe gestore di eccezioni. Come posso rappresentare la relazione tra le classi nel diagramma delle classi?

    
posta petaYAN 08.06.2014 - 13:37
fonte

2 risposte

1

Da quello che ho visto, stereotipo viene in genere utilizzato per rappresentare la relazione con un'eccezione.

a better approach would be to use UML’s stereotype notation with the keyword exception as the stereotype enclosed in guillemets, as in «exception».

Fonte: Come posso rappresentare un'eccezione in UML?

Questa risposta su Stack Overflow suggerisce anche gli stereotipi, ma utilizza <<throws>> . L'autore è sicuro che sia corretto usare uno stereotipo che non esiste convenzionalmente, e in questo caso specifico, sono d'accordo con lui.

Per quanto riguarda il termine corretto, dato che uno stereotipo può essere un nome o un verbo, sia <<exception>> che <<throws>> sembrano ugualmente corretti. La terminologia corretta dipende anche dalla lingua utilizzata. Ad esempio in Python, non lancia , ma solleva un errore o un'eccezione, quindi <<raises>> sembra il più appropriato; a meno che la tua intenzione non sia quella di separare errori ed eccezioni, nel qual caso <<exception>> e <<error>> potrebbero essere più espressivi.

Infine, Agile Modeling suggerisce (cerca la Figura 4) per incorporare il nome dell'eccezione in questo modo:

+ findAllInstances(): Vector {exceptions=NetworkFailure, DatabaseError}

ma IMO, benché sia adatto alle ben note eccezioni utilizzate dal framework, è troppo scarso per le eccezioni personalizzate che hai creato, perché la relazione non è abbastanza visiva.

    
risposta data 08.06.2014 - 14:02
fonte
1

Si assume che i gestori di eccezioni non facciano parte del dominio del problema, ma piuttosto una parte dei requisiti non funzionali. Cioè, l'architettura del sistema. In questo senso, non appartengono davvero a un diagramma di classe di un modello di dominio più di quanto non faccia parte una classe Logger. (O un BeanFactory, o garbage collector, ecc.)

I diagrammi delle classi mostrano informazioni sulle classi nel modello e sulle relazioni tra di esse. Ma un gestore di eccezioni ha una relazione con molte o tutte le classi - in quanto il flusso di controllo potrebbe improvvisamente fermarsi e andare invece al gestore di eccezioni. Peggio ancora, la relazione tra il gestore delle eccezioni e le classi di dominio è gestita dal framework dell'applicazione, quindi non esiste una relazione diretta con le classi di dominio (in base alla progettazione).

Se il tuo diagramma di classe è per le classi del framework, allora è facile. Molto probabilmente ci sarà una sorta di controller con una relazione "ha a" con il gestore delle eccezioni. Ma se il diagramma di classe è per il modello di dominio, ci sono molti bit dallo sfondo che non inserirò nel diagramma di classe.

    
risposta data 04.01.2015 - 22:02
fonte

Leggi altre domande sui tag