2012-01-13 17 views
-1

シーケンス図について読んでいますが、私はJavaコードを集中させる演習(多項選択)を見つけました。混乱してしまいました...正しいオプションを選択する手助けはできますか?私のためにそれをより明確にするために?私はそれがあなたのために簡単だろうと思う。事前に多くの感謝。 Sequence Diagrams and Javaシーケンス図とJava

あなたはどのような答えを選ぶだろう:

ここで(ImageShackの中でホストされている)画像への直接リンクですか?

+1

あなたの思考過程を説明して推測すれば、私たちがあなたを助けてくれるはずです。 –

+0

クラスAでは、関数s()と関数t()に焦点を当てる必要があります。関数s()の場合、次のようになります。function s(){dosomething; d.r(); }。しかし、私は関数t()に疑問があります。 –

答えて

0

この図は、a.t.を呼び出すd.u()を呼び出すc.w()を呼び出すa.s()を呼び出すプロセスを示しています。

したがって関数aにはc.w()が含まれている必要があります。

残りの矢印にそのロジックを適用できますか?

+0

残りの矢印は次のとおりです。d.noName(); c.x(); a.r() –

+0

しかし、これはどのように私はそれを把握するのに役立ちますか? –

+0

下の2つの矢印は、cにar()の呼び出しを含むx()という関数が必要であることを示しています。 –

0

1つのヒント:右のクラス図は、実際には答えを見つけることには関係ありません。

もう1つのヒント:dからa.t()への呼び出しは、別のメソッドを呼び出す代わりに返すという点で、他の呼び出しと異なります。

コメント:Javaでは、すべてのメソッド呼び出しは、システムが途中で終了しない限り、最終的に例外を返すか、例外をスローします。これにより、このシーケンス図が少し奇妙になります - 上記のメソッド呼び出しの1つのみが返されます。図の残りの部分では、クラス間での前後のメソッド呼び出しの連鎖が示されています。これは、Javaでクラスが共同作業する一般的な方法ではなく、UMLの理解をテストするためのエクササイズとして構築されているようです。

+0

at()からdへのラベルのない矢印がコールではなく返信メッセージである場合、shouldn矢印は破線で表示され、du()のアクティベーションブロックはcx()の呼び出しまで下がっていますか? –

+1

UMLの方言がたくさんあるので、正式な表記法を実際には把握していないので、絶対に正しいかもしれません。しかし、この図と提供されたコードオプションを見ると、すべての呼び出しが単一のスレッドからの通常のブロック呼び出しであるようです。この文脈では、私はラベルなしのコールをリターンとしてしか解釈できません。また、ブロック呼び出しが行われた後、d.u()のアクティベーションブロックを続行するのはちょっと変わっていませんか?ブロックはt()が戻る前にイベントを処理することはできません。 –

+0

これはダイアグラムから意味をなさない唯一のソリューションだと思います。 –

関連する問題