我在类模型中创建了一个接口。此接口有两个方法,A 和 B,方法 A 接受一个参数 (a),方法 B 不接受参数 (目前)。此外,我还创建了一个实现此接口的类,并重写了这两个方法。
讨论模型后,方法 B 现在也应该接受参数 (b),因此我修改了接口以反映这一变化。但是实现此接口的类不会自动更新。对于一个类,可以通过重新创建接口之间的链接来添加方法,指定应实现哪种方法并再次删除此链接。然后还必须删除旧方法签名。如果有多个类实现修改后的接口,这将是一项艰巨的工作,更不用说容易出错了。
有人知道如何让整个类模型更新这种类型的依赖关系吗?
答案1
我也搜索过这个问题的答案,但除了你的帖子之外,我没有找到任何东西。我在 EA 论坛上发布了一个问题。
如果只是为了图表目的,有 1 种可能的解决方法(但有点麻烦):
- 将您的接口作为具有 <<interface>> 构造型的(抽象)类添加到图表中
- 将您的类作为具有 <<implementingClass>> 构造型的类添加到图表中
- 添加概括从类到接口的关系,不要选中覆盖和更新中的任何复选框
- 隐藏连接器
- 添加实现类与接口的关系
- 右键单击类 > 功能可见性 > 选中“显示操作”复选框
因此
- 抽象类看起来像一个界面在图上
- 实现类将显示继承的操作
- 在向界面添加操作时,课程将更新
- 在修改界面上的操作时,课程将更新
唯一的问题是,在代码生成期间生成了一个抽象类而不是接口。
答案2
选择要刷新的类别,然后按Ctrl + Shift + o
。
这关联给你详细的解释。
在 Enterprise Architect 中,您可以自动覆盖来自父类和已实现的接口的方法。
选择一个具有父级或已实现接口的类,然后选择元素 | 高级 | 覆盖和实现菜单选项。
在覆盖操作/接口对话框中,选中要自动覆盖的操作/接口,然后单击确定按钮。Enterprise Architect 会在您的子类中生成等效函数定义。
您可以配置 Enterprise Architect,使其每次在类之间添加泛化或实现连接器时都显示此对话框,并查看它们可能要覆盖/实现的操作/接口。从选项对话框的链接页面执行此操作(选择工具 | 选项 | 链接菜单选项)。