将原型更改自动更新为企业架构师中的子类

时间:2011-07-18 10:32:34

标签: enterprise-architect

在Enterprise Architect中,当我在类实现的接口中更改原型时,我希望自动更新子类的操作原型。我怎么做?这看起来很琐碎!

我正在使用实现连接来指定类实现接口。当我创建这样的连接时,AE会询问我要执行哪些操作。如果我选择无(默认)并按确定,则类中不会显示任何方法。到现在为止还挺好。当我更改该类的功能可见性以显示继承的操作时,我希望界面的操作能够显示出来。但他们没有!这是为什么?

如果我删除了连接,请再次进行,然后选择要实现/覆盖的所有操作,然后将所有方法(当然)添加到类中。但是,当我在界面中更改操作的原型时,类中相同操作的原型不会更新。我不想手动更新所有类。有没有办法做到这一点?

为了记录,我正忙着使用Enterprise Architect v8.0为C ++项目设计接口和类。接口将由AE生成为具有所有抽象方法的纯虚拟类。这些方法在EA中自动指定为纯粹和抽象的。

1 个答案:

答案 0 :(得分:1)

首先,我不使用EA来生成代码,但这是它在UML术语中的作用。我也在9.0,但我很确定这种行为没有改变。

功能可见性选项是严格的:它显示了继承的功能 - 未实现的功能。 AFAIK,无法显示已实现的功能。但它们仍在那里,在它们之下,它们按照你想要的方式工作。

如果MyInterface包含MyMethod,并且MyClass实现了MyInterface而没有覆盖任何操作,则可以选择MyMethod作为序列图中的消息(前提是您选择显示继承的方法)。对MyInterface :: MyMethod的更改在MyClass中正确反映,而MyMethod也被MyClass的子项继承(但隐藏)。

另一方面,覆盖在类中创建新操作。完成后,操作不再被视为继承操作,并且不会跟踪对接口中的操作所做的更改。

您要求的行为是您使用类和推广时获得的行为:子类继承其父操作,如果在“功能可见性”对话框中选择“继承的功能”,则显示它们。操作不会复制到子类,但可以作为序列中的消息使用,对父操作的更改将反映在子级中。

因此,如果您需要图表中显示的方法,则解决方法可能是抛弃接口并使用抽象类。哪个最适合C ++生成我不能说。