In che tipo di passaggi dovremmo essere, usiamo la linea di ritorno in un diagramma di sequenza?Che cosa rappresenta esattamente la linea di ritorno (linea tratteggiata) in un diagramma di sequenza?
<- - - - - -
In che tipo di passaggi dovremmo essere, usiamo la linea di ritorno in un diagramma di sequenza?Che cosa rappresenta esattamente la linea di ritorno (linea tratteggiata) in un diagramma di sequenza?
<- - - - - -
La linea di ritorno rappresenta il flusso di controllo di ritorno da un metodo/chiamata di funzione
Nel caso di metodi/funzioni che restituiscono un risultato, indicherebbe un valore viene restituito.
E.g.
result
<-------------
Altrimenti, per metodi/funzioni nulli sarebbe solo la freccia
<-------------
Per le chiamate asincrone, come il chiamante non cede il controllo al metodo/funzione chiamata, io uso solo una linea di ritorno, se restituito un risultato (ad esempio i metodi non-vuoto/funzioni)
Speranza che aiuta
EDIT
Ecco un esempio di un diagramma di sequenza che ho creato per un caso di utilizzo di ricerca example of a sequence diagram I created for a search use case http://web10.twitpic.com/img/107669708-1d6f9df82534756bfe2a684d4480cc43.4c00f3b0-full.png
noti che l'utente anonimo effettua solo le chiamate asincrone perché, come un essere umano, che non cedono controllo all'applicazione, quindi senza frecce di ritorno
da notare anche la freccia di ritorno della chiamata di ricerca(), che restituisce 'risultati'
Infine, le frecce di creazione (------ |>) non hanno frecce di ritorno come restituiscono implicitamente l'oggetto istanziato
EDIT 2
In risposta alla tua domanda aggiornato:
non avrei frecce di ritorno per le operazioni da parte dell'utente, come ad esempio login(), in quanto i risultati non vengono restituiti al l'utente nello stesso modo di un oggetto, ma normalmente viene emesso in una specie di interfaccia utente. Un altro modo di guardarlo è che l'utente è al di fuori dell'ambito del programma, quindi non ha senso restituire i risultati direttamente.
Dal diagramma, la mia interpretazione (in una sorta di pseudo) sarebbe:
class User{
public void login()
public void sendEmail()
}
class Patient{
public void getPatient()
}
class Doctor{
public void getDoctor()
}
class Appointment{
//This method returns something, but it's not clear what, so I assumed a boolean
public boolean checkAvailability()
}
Come potete vedere, tutti tranne uno di questi metodi non restituiscono nulla. Se è questo che volevi, allora, bene, ma sospetto che non sia così.
Inoltre, sospetto che non abbiate intenzione di utilizzare il metodo sendEmail() nella classe User.
Si dovrebbe anche prendere in considerazione ciò che sta accadendo quando checkAvailability() ritorna, come il flusso di controllo sembra tornare a Utente e poi inspiegabilmente tornare indietro al Appuntamento
Gli oggetti in un diagramma di sequenza dovrebbero sempre corrispondere a un oggetto nel diagramma delle classi, o possono essere inclusi di più? – Milena
Normalmente corrisponderebbero a una classe in un diagramma di classe, sì. Dovrei anche notare che l'attore (utente anonimo) dovrebbe essere raffigurato come un uomo di bastone, ma il programma che ho usato per questo non supporta completamente UML2 ancora – chrisbunney
OK in base a questo mi sento ora come ho un grande casino. Quello che sto cercando di modellare è il seguente: Un accesso utente nel sistema come paziente (ruolo) per chiedere un appuntamento. Il paziente deve inserire il medico e quindi la data. Il sistema dovrebbe verificare la disponibilità per quella data, se la disponibilità deve creare il nuovo appuntamento e inviare una e-mail all'utente. Se l'accesso come dottore (ruolo) diventa diverso ma ora non voglio includere quello L'email non so se è ok – Milena
Esso rappresenta il messaggio di ritorno della operation.You può specificare i valori di ritorno usando questo simbolo.
semplice esempio:
club member
|
| getName()
'------------------------>.
|
|
result: "lee" |
<- - - - - - - - - - - - '
String memberName = member.getName();
//memberName now contains "lee"
La freccia tratteggiata < - - - - è il valore di ritorno dalla chiamata di metodo.
Ho aggiornato la mia risposta con i miei commenti sul diagramma seq e le domande – chrisbunney