2013-02-08 11 views
5

La notazione ball and socket è legale UML 2.0, ma non riesco a trovare un modo per forzare EA a disegnarlo sul diagramma. Rifiuta di consentire la dipendenza tra il socket e la palla. C'è un modo per farlo accadere, come nel diagramma qui sotto (piccoli MS Paint magia):È possibile utilizzare la notazione ball and socket nello schema di classe EA?

enter image description here

Inoltre, una domanda lato, si può fare la palla o presa appaiono sul lato opposto dell'elemento ?

risposta

4

Ci sono due diversi modi di mostrare la palla e la presa in EA.

Con quello che hai usato, hai disegnato i connettori dalle tue classi Consumer e Producer all'interfaccia IProducer (rispettivamente una dipendenza e una realizzazione). Hai quindi attivato la visualizzazione di interfacce dipendenti e realizzate sulle tue classi.

Fare in questo modo significa che le sfere e le prese sono fisse. Non è possibile selezionarli (la classe viene invece selezionata), non è possibile spostarli nelle classi parent e non possono essere endpoint per i connettori.

L'altro modo è utilizzare Expose Interface.

Con questo metodo, non si disegna alcun connettore dalle classi all'interfaccia. Invece, usi Expose Interface per creare un elemento incorporato, che ha l'interfaccia come suo classificatore, in ogni classe.

Queste interfacce esposte, essendo elementi a sé stanti, si comportano nel modo in cui le si desidera: è possibile spostarle lungo il perimetro delle rispettive classi e si possono disegnare connettori tra di loro.

Nell'esempio, notare l'assenza di connettori sull'elemento di interfaccia IProducer. Sample use of Exposed Interfaces

Per esporre le interfacce, ci sono due modi per farlo. È possibile selezionare Esponi interfaccia nella casella degli strumenti diagramma, ma si noti che è disponibile solo nella casella degli strumenti Componente, non nella casella degli strumenti Classe. Questo è quello che ho fatto con il produttore in questo esempio.

L'altro modo è fare clic con il tasto destro del mouse sulla classe e selezionare Nuovo elemento -> Porta. Questo crea una porta, che puoi dare qualsiasi nome. Quindi fai clic con il tasto destro sulla porta e seleziona Nuovo elemento -> Interfaccia fornita/richiesta.

In entrambi i casi viene visualizzata la finestra di dialogo Interfaccia esposta, che consente di selezionare l'elemento dell'interfaccia che deve essere esposto utilizzando il pulsante con i puntini di sospensione (...) e sfogliando l'albero del progetto per le interfacce.

L'utilizzo di una porta può sembrare un po 'macchinoso ma è, a rigor di termini, UML più corretto. Si noti inoltre che una singola porta può esporre diverse interfacce, sia fornite che richieste, consentendo di raggruppare le interfacce che formano una sorta di unità logica. Potrebbe essere che tu abbia diverse interfacce che formano un servizio e quindi vanno insieme, ma che la classe fornisce e richiede diversi servizi.

Questo (per me) ha più senso quando si discute non di singole classi ma piuttosto di componenti, e generalmente utilizzo realizzazione/dipendenza quando sto modellando le classi e le porte e le interfacce esposte quando modifico i componenti.

+0

Questo sembra essere il migliore disponibile in EA. Ma perché dovremmo avere quel connettore di dipendenza che separa/colma il divario tra la fornitura dell'interfaccia e il requisito dell'interfaccia? Vale a dire, posso creare un singolo connettore "assembly" sul diagramma, ma non posso associarlo a una specifica classe di interfaccia, che la rende semanticamente priva di significato anche se rende come ci si aspetterebbe ... nessun modo per farlo ? – laurelnaiad

+0

In altre parole, voglio diagrammi che assomigliano a questo: http://www.uml-diagrams.org/component-diagrams.html ma si basano su effettive classi di interfaccia ... come? – laurelnaiad

1

È giusto che ball e socket siano notazioni legali UML 2.0 ma non sono elementi UML, rappresentano relazioni di elementi. Quindi suppongo che a seconda dello strumento che utilizzerai (o non lo farò) ti permetterò di creare una dipendenza tra di loro. Secondo la specifica UML, dovrebbe essere creata una dipendenza UML tra almeno due NamedElements.

+0

Continuo a pensare che se EA supporta UML 2.0 dovrebbe consentirlo. Ci sono alcune informazioni più interessanti qui: http://martinfowler.com/bliki/BallAndSocket.html –

+0

Hai ragione sembra essere una rappresentazione legale in quanto è descritto nella specifica UML2.4.1 (Fig 8.14) ma ho provato il mio solito tools ie [Modelio] (http://www.modelio.org/) e [Topcased] (http://www.topcased.org/) ma nessuno di questi supporta questo ma è permesso far apparire il socket e il palla su tutti i lati :-) –

1

Nelle connessioni EA a sfera (solo) è possibile disegnare tra le porte. Utilizzare il tipo di connettore "assembly".