企业架构师8>显示继承链为一类(Enterprise Architect 8 > Displa

2019-07-31 21:41发布

我已经导入了PHP源文件夹为企业架构师。 现在,我想看到的任何具体类的继承链。 换句话说,我希望看到一个大图显示类的所有关系。 大多数类是在文件夹从父/子级分离。 我怎样才能做到这一点..?

这是我的原因,安装的企业架构师:我得到一个漫长和支继承链中的困惑。 这将是非常令人失望的,如果这样一个强大的工具,识别所有的关系无法给出这些关系的概述。

例如,我可以看到在一个文件夹的根类图,示出了聚集。 然而,上市聚合类是只有那些位于同一文件夹作为父类。

先感谢您。

Answer 1:

这个答案适用于EA 9.3。 我没有旧的EA 8躺在附近,但EA绝对有向后兼容的,所以你应该在任何情况下,升级。

有一对夫妇的方式来遵循EA继承链。

方法1:添加类到同一图。

在包含根类的继承层次图,右键单击根类,然后选择添加 - 相关的元素。 在“插入相关元素”对话框中,选择您想要的链长度(“等级”),最多的5.指定“链接式”推广。 您可以将其他选项,因为他们,或者如果你喜欢玩他们。

这将导致EA那些类添加到从所述根类继承在高达5步/水平的图。 你不必从根类开始; 选项“链接方向”,在对话框控制关系是否应遵循的一个或两个方向。

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

方法2:使用可追溯性窗口。

在主菜单中,选择查看 - 可追溯性。 这将打开可追溯性窗口,这是一个树视图在顶部选定元素的currenty,和节点用于在层级中的所有相关的元素。

选择根类和中提琴,其所有的继承类显示有追踪窗口的子节点,并且可以扩展他们又跟随链进一步。

方法1放入图中,它被保留,需要更新的信息。 方法2是动态的,更usefu当你需要检查特定关系链。

图中的关系,如果底层模型的变化而自动更新,因此如果比如你改变代码并重新导入,这将在图中得到体现。 为了安全起见,始终以手动创建的图表中从源包的单独包装工作。



Answer 2:

我不知道是否有现有的解决方案,但是你可以很容易地实现使用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


文章来源: Enterprise Architect 8 > Displaying Inheritance Chain for a Class