2016-12-12 73 views
0

私はシーケンス図とクラス図を理解しようとしています。私はちょうどあなたが他を持っている場合、1つを見つける方法を明確に理解していない。学生、セミナー&コース:シーケンス図からクラス図へ

enter image description here

は、クラス図に変換するには、このシーケンス図では例えば

私は三つのクラスを作成します。

私の質問は、たとえば、enrollStudent()関数をStudentクラスまたはSeminarクラスのメンバー関数として追加する必要がありますか?

+1

シーケンスダイアグラムからクラス図を細部まで作成することはできません。シーケンス図は、メソッドだけが示されているが、クラスが互いに相互作用し、クラスの属性を表示しない方法を示しています。あなたの質問を参照すると、各メソッドは、矢印が指しているクラスに含まれています。したがって、enrollStudent()メソッドはSeminarクラスに含まれ、このシーケンス図(Studenクラス)で表すメソッドで実行されます。 – russellhoff

+2

あなたは行く必要があり、エディタに尋ねる。 「学生向け」の「getSeminarHistory」は、彼が俳優であり何らかのデータベースではないので、壊れているようです。 –

答えて

2

操作または受信は、受信側にある必要があります(例:enrollStudentはセミナーのメンバーである必要があります)。

シーケンスからクラス図を作成する場合、またはその逆の場合は、この方法では機能しません。これらは同じシステムの異なるビューであり、多かれ少なかれ並列に作成されます。メッセージとクラスの間の依存関係は単純ですが、クラスの論理はどちらの論理も見えません。それ以外の場合は、2つの図を持つことは意味がありません。

+2

メッセージを見てSDからクラスを再構築し、メッセージから操作を作成することができます。もちろん、これは決してデザインではありません。 –

+2

ライフラインがたくさんある複雑なシーケンス図があれば、値を追加してクラス図を派生させることができます。クラス図は、クラス、その関係、およびクラスごとの操作の概要を示します。しかし、実際、これは通常の作業方法ではありません。 –

+2

@ThomasKilianそれは本当ですが、すべてのコミュニケーションがシーケンス図を使って記述されている場合に限ります。これはほとんど真実ではありません(具体的には、それは本当ではないと思います)。シーケンス図の目的は、複雑なコミュニケーションを示すことです。シンプルなリクエスト/レスポンス通信があれば、誰もシーケンス図を作成することはありません。 私はここに同意すると信じていますが、これはこれを知らない読者のための声明にすぎません。 – Ister

関連する問題