web-dev-qa-db-ja.com

Enterprise Architectでインターフェイスを変更しましたが、実現クラスを更新するにはどうすればよいですか?

クラスモデルにインターフェイスを作成しました。このインターフェイスには、AとBの2つのメソッドがあり、メソッドAは引数(a)を取り、メソッドBは(まだ)引数を取りません。さらに、このインターフェイスを実装するクラスを作成し、両方のメソッドをオーバーライドしました。

モデルメソッドBについて説明した後、パラメータ(b)も取得する必要があるため、この変更を反映するようにインターフェイスを変更しました。ただし、このインターフェイスを実現するクラスは自動的に更新されません。 1つのクラスでは、インターフェイス間のリンクを再作成してメソッドを追加し、実装するメソッドを指定して、このリンクを再度削除することができます。次に、OLDメソッドのシグネチャも削除する必要があります。エラーが発生しやすいことは言うまでもなく、変更されたインターフェイスを実装するクラスが複数ある場合、これは多くの作業です。

クラスモデル全体でこのタイプの依存関係を更新する方法を知っている人はいますか?

3
Timo

この質問への回答も検索しましたが、あなたの投稿以外には何も見つかりませんでした。 EAフォーラムに質問を投稿しました。

ダイアグラムの目的のみである場合、1つの可能な回避策があります(ただし、少し厄介です)。

  • インターフェースを<< interface >>ステレオタイプの(抽象)クラスとしてダイアグラムに追加します
  • クラスを<< implementingClass >>ステレオタイプのクラスとしてダイアグラムに追加します
  • クラスからインターフェースへの一般化関係を追加します。[上書きと更新]のチェックボックスを選択しないでください。
  • コネクタを非表示にします
  • クラスからインターフェースへの実現関係を追加します
  • クラスを右クリック> [機能の可視性]> [操作の表示]チェックボックスをオンにします

結果として

  • ダイアグラム上でinterfaceのように見える抽象クラス
  • 実装クラスは継承された操作を表示します
  • インターフェイスに操作を追加すると、クラスが更新されます
  • インターフェイスの操作を変更すると、クラスが更新されます

唯一の問題は、コード生成中に、インターフェイスの代わりに抽象クラスが生成されることです。

2
monk

更新するクラスを選択し、Ctrl + Shift + oを押します。

この リンク はあなたに詳細な説明を与えます。

Enterprise Architectでは、親クラスおよび実現されたインターフェイスのメソッドを自動的にオーバーライドできます。

親または実現されたインターフェースを持つクラスを選択し、要素|を選択します。上級|オーバーライドと実装メニューオプション。

[操作/インターフェースのオーバーライド]ダイアログで、自動的にオーバーライドする操作/インターフェースを確認し、[OK]ボタンをクリックします。 Enterprise Architectは、子クラスで同等の関数定義を生成します。

クラス間に一般化または実現コネクタを追加するたびにこのダイアログを表示するようにEnterpriseArchitectを構成し、オーバーライド/実装する可能性のある操作/インターフェイスを確認できます。これは、[オプション]ダイアログの[リンク]ページから行います([ツール]、[オプション]、[リンク]メニューオプションを選択します)。

4
jharig23