1

我已将 PHP 源文件夹导入 Enterprise Architect。现在,我想看看任何特定类的继承链。换句话说,我希望看到一个显示类的所有关系的大图。大多数类位于与父/子类分开的文件夹中。我怎样才能做到这一点..?

这就是我安装 Enterprise Architect 的原因:我对冗长的分支继承链感到困惑。如果这样一个能够识别所有关系的强大工具不能对这些关系进行概述,那将是非常令人失望的。

例如,我可以在一个文件夹的根目录中看到一个类图,说明聚合。但是,列出的聚合类仅是与父类位于同一文件夹中的类。

先感谢您。

4

2 回答 2

3

这个答案适用于 EA 9.3。我没有旧的 EA 8,但 EA 非常向后兼容,所以无论如何你都应该升级。

在 EA 中有几种方法可以遵循继承链。

方法1:将类添加到同一个图表中。

在包含继承层次结构的根类的图表中,右键单击根类并选择添加 - 相关元素。在“插入相关元素”对话框中,选择所需的链长度(“级别”),最多为 5。指定“链接类型”泛化。您可以保留其他选项,或者如果您愿意,可以随意使用它们。

这将导致 EA 以最多 5 个步骤/级别将这些类添加到从根类继承的图表中。您不必从根类开始;对话框中的“链接方向”选项控制是否应在一个或两个方向上遵循关系。

您可以使用相同的功能添加通过其他关系相关的类,例如聚合。

方法 2:使用 Traceability 窗口。

在主菜单中,选择查看 - 可追溯性。这将打开 Traceability 窗口,这是一个树视图,顶部是当前选定的元素,以及层次结构中所有相关元素的节点。

选择根类和 violà,它的所有继承类在 Traceability 窗口中都显示为子节点,您可以依次展开它们以进一步跟踪链。

方法 1 将信息放在图表中,保存并需要更新。方法 2 是动态的,当您需要检查特定的关系链时更有用。

如果底层模型发生更改,图表中的关系会自动更新,因此如果您更改代码并重新导入它,这将反映在图表中。为了安全起见,请始终在与源包不同的包中使用手动创建的图表。

于 2012-09-26T03:51:46.697 回答
0

不确定是否存在现有解决方案,但您可以使用ReflectionClassGoogle Graph轻松实现

例子

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 回答