4

Enterprise Architect にクラス図があります。

私のクラスの 1 つにいくつかのメソッドがあり、メソッドが例外をスローするようにします。どうすればそれを行うことができますか?

添付の画像のように、2 つのメソッドを持つインターフェイス (HsaInterface) があり、両方に例外をスローさせたいと考えています。

クラスを示す画像

ここに画像の説明を入力

4

1 に答える 1

7

操作によってスローされた例外の EA の表現は少し乱雑で、文書化も不十分です。基本的に、例外は操作の単一のタグ付き値で表され、カンマ区切りのリストで例外クラスの (修飾されていない) 名前を保持します。

たとえばparseLine、Java クラスのメソッドには、値をcom.sun.activation.registries.MailcapFile持つタグがあります。throwsMailcapParseException,IOException

クラスで操作を作成する場合、その操作は例外のタグを自動的に取得しません。これは、タグ名が実装言語に依存するためです。SystemCの場合は「スロー」、C#とJavaの場合は「スロー」です(とにかくマニュアルによると、これは確認していません)。ただし、タグは自分で作成できます。

Java クラスのセットをリバース エンジニアリングすると、例外タグがモデルに取り込まれます。これは、それがどのように使用されているかを確認する最も簡単な方法かもしれません。

この名前のみのリンクは明らかに非常に弱いものです。コード生成で使用しますが、例外クラスの名前を変更する場合は、タグの値を手動で変更する必要があります。EA は、リストされたクラス名が存在するかどうか、またはコード生成中にスコープ内にあるかどうかをチェックしません。名前をメソッド シグネチャに書き込むだけです。

さらに、オペレーションのタグ付き値は図に表示できません。したがって、操作に例外を追加することはできますが、操作のプロパティを確認することによってのみ例外を確認できます。

興味深いことに、EA のデータ モデルには t_operation テーブルに Throws 列が含まれています (その結果、EA の API の Method クラスに Throws 属性が含まれています)。こちらは未使用品と思われます。

したがって、それはあなたのモデルの目的に帰着します。EA が例外をサポートしている言語のいずれかでコードを生成する場合は、throwsタグを手動で追加する必要があります。ダイアグラムで例外を表示したい場合、そのアプローチは機能しません。このような目的のためには、操作から例外クラスへの依存関係を描画し、それを「スロー」するステレオタイプにすることをお勧めします。

コネクタを操作に固定するには、通常どおりクラスからコネクタを描画し、固定する端近くのコネクタを右クリックして、[エレメント フィーチャへのリンク] を選択します。

于 2011-10-04T18:59:10.217 に答える