1

在 Enterprise Architect 中,我希望在更改类实现的接口中的原型时自动更新子类的操作原型。我怎么做?似乎太琐碎了!

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

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

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

4

1 回答 1

1

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

Feature Visibility 选项是严格的:它显示 Inherited Features - 而不是 Realized。AFAIK,无法显示已实现的功能。但它们仍然在那里,在下面,它们按照你想要的方式工作。

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

另一方面,重写会在类中创建新的操作。一旦完成,操作不再被认为是继承的,并且不会跟随对接口中的操作所做的更改。

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

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

于 2011-07-19T10:33:59.653 回答