web-dev-qa-db-ja.com

リターンライン(点線)はシーケンス図で正確に何を表していますか?

シーケンス図のリターンラインはどのようなステップで使用する必要がありますか?

<- - - - - - 
12
Milena

戻り行は、メソッド/関数呼び出しから戻る制御のフローを表します

結果を返すメソッド/関数の場合、値が返されていることを示します。

例えば。

    result
<-------------

それ以外の場合、voidメソッド/関数の場合は矢印になります

<-------------

非同期呼び出しの場合、呼び出し元は呼び出されたメソッド/関数を制御できないため、結果が返された場合にのみ戻り行を使用します(例:非voidメソッド/関数)

お役に立てば幸いです

[〜#〜]編集[〜#〜]

これは、検索のユースケース用に作成したシーケンス図の例です 検索のユースケース用に作成したシーケンス図の例http://web10.twitpic.com/img/107669708-1d6f9df82534756bfe2a684d4480cc43.4c00f3b0-full .png

匿名ユーザーは非同期呼び出しのみを行うことに注意してください。これは、人間として、アプリケーションに制御を渡さないため、戻り矢印がないためです。

また、「結果」を返すsearch()呼び出しの戻り矢印にも注意してください。

最後に、作成矢印(------ |>)は、インスタンス化されたオブジェクトを暗黙的に返すため、戻り矢印はありません。

編集2

更新された質問への回答:

結果はオブジェクトと同じ方法でユーザーに返されるのではなく、通常はある種のUIに出力されるため、login()などのユーザーによる操作の戻り矢印はありません。別の見方をすれば、ユーザーはプログラムの範囲外であるため、結果を直接返すことは意味がありません。

あなたの図から、私の解釈(一種の擬似コード)は次のようになります:

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()
}

ご覧のとおり、これらのメソッドの1つを除いてすべては何も返しません。それがあなたが望んでいたことならそれでいいのですが、そうではないと思います。

また、sendEmail()メソッドをUserクラスに含めるつもりはなかったと思います。

また、checkAvailability()が戻ったときに何が起こっているかを考慮する必要があります。これは、制御フローがUserに戻り、不可解にAppointmentに戻るためです。

11
chrisbunney

操作の戻りメッセージを表します。この記号を使用して戻り値を指定できます。

4
Inv3r53

簡単な例:

club                       member
  |
  |           getName()
  '------------------------>.
                            |
                            |
       result: "lee"        |
   <- - - - - - - - - - - - '

 String memberName = member.getName();
 //memberName now contains "lee"

破線の矢印<----は、メソッド呼び出しからの戻り値です。

3
dalton