1

PHPソースフォルダをEnterpriseArchitectにインポートしました。ここで、特定のクラスの継承チェーンを確認したいと思います。つまり、クラスのすべての関係を示す1つの大きな図が必要です。ほとんどのクラスは、親/子クラスとは別のフォルダーにあります。どうやってやるの..?

これが、EnterpriseArchitectをインストールした理由です。長くて分岐した継承チェーン内で混乱します。すべての関係を認識するこのような強力なツールで、これらの関係の概要を説明できないとしたら、非常に残念です。

たとえば、1つのフォルダーのルートに、集約を示すクラス図を見ることができます。ただし、リストされている集約クラスは、親クラスと同じフォルダーにあるクラスのみです。

前もって感謝します。

4

2 に答える 2

3

この回答はEA9.3に適用されます。古いEA8はありませんが、EAは非常に下位互換性があるため、いずれの場合もアップグレードする必要があります。

EAの継承チェーンをたどる方法はいくつかあります。

方法1:同じ図にクラスを追加します。

継承階層のルートクラスを含む図で、ルートクラスを右クリックし、[追加]-[関連要素]を選択します。[関連要素の挿入]ダイアログで、必要なチェーンの長さ(「レベル」)を最大5つまで選択します。「リンクタイプ」の一般化を指定します。他のオプションはそのままにするか、必要に応じて試してみることができます。

これにより、EAは、ルートクラスから最大5ステップ/レベルで継承するクラスをダイアグラムに追加します。ルートクラスから始める必要はありません。ダイアログのオプション「リンク方向」は、関係を一方向または両方向のどちらで追跡するかを制御します。

これと同じ関数を使用して、集計などの他の関係を介して関連するクラスを追加できます。

方法2:トレーサビリティウィンドウを使用します。

メインメニューで、[表示]-[トレーサビリティ]を選択します。これにより、トレーサビリティウィンドウが開きます。これは、現在選択されている要素が上部にあるツリービューであり、階層内の関連するすべての要素のノードです。

ルートクラスとビオラを選択すると、そのすべての継承クラスが[トレーサビリティ]ウィンドウに子ノードとして表示され、それらを順番に展開してチェーンをさらにたどることができます。

方法1は、情報を図に入れ、保持され、更新する必要があります。方法2は動的であり、特定の関係チェーンを確認する必要がある場合に役立ちます。

基礎となるモデルが変更されると、ダイアグラム内の関係が自動的に更新されるため、たとえばコードを変更して再インポートすると、これがダイアグラムに反映されます。安全のため、ソースパッケージとは別のパッケージで手動で作成した図を常に使用してください。

于 2012-09-26T03:51:46.697 に答える
0

既存のソリューションがあるかどうかはわかりませんが、GoogleGraphを使用して簡単に実装できるものReflectionClassです

class A {
}
class B extends A {
}
class C extends B {
}
class D extends C {
}
class E extends D {
}
class F extends E {
}

function getPath($className) {
    $class = new ReflectionClass($className);
    $name = $class->getParentClass();
    if ($name) {
        echo $class->getName(), " extends ";
        getPath($name->getName());
    } else {
        echo $class->getName();
    }
}

getPath("C");
getPath("F");

出力

C extends B extends A
F extends E extends D extends C extends B extends A
于 2012-09-25T15:00:09.360 に答える