标签:class-diagram c uml enterprise-architect
在Enterprise Architect(版本9.2.921)中,我想创建一个类图.我有一个MyInterface类作为接口.所以在EA中我选择了刻板印象<< interface>>并将其标记为抽象.
现在为了简单起见,我的抽象接口定义了一个虚函数.现在我有一个MyChild类,它是我的接口的子类(类MyChild :: MyInterface),它将实现这个功能.
为了在EA中这样做,我创建了一个新类.然后右键单击它 – >高级 – >家长.
作为我选择的类型,然后我选择我的接口类.
在我的类图上,从子到父的箭头是正确的(虚线,在界面方向有空箭头).
现在问题是,我希望EA将我的抽象函数从接口添加到实现类本身.因此,例如,如果我在Interface类中更改/添加/删除虚函数,它会立即在子类中更改.但问题是,该功能不会出现在子类的主体中.
企业Architecht有没有办法做到这一点?
解决方法:
首先,还有另一种绘制连接的方法,您可能会觉得更容易.如果您在图表中选择了该类,您会在课程的上方/右侧看到一个小箭头图标.单击此按钮,拖动到界面并删除,EA将为您提供一组可能的连接器,首先是最相关的连接器.此列表基于源和目标元素类型(在本例中为类和接口)是上下文相关的.
当涉及“覆盖和实现”对话框时,涉及一些细微之处.
如果一个类实现了一个接口,那么该类实际上具有接口指定的操作,尽管它们是隐藏的,即使你没有选择它们来实现(这就是为什么在这个对话框中默认取消选择接口操作的原因).
如果在序列图中使用该类并对其进行调用,您将看到可以在“消息属性”对话框中选择接口定义的操作(选择“显示继承的方法”).如果在界面中重命名操作,则此名称将自动更新.
如果在两个类之间绘制泛化,则会在序列图中获得相同的行为.此外,您可以通过右键单击它,选择“功能可见性”并勾选“显示操作”来选择类继承(通过泛化)操作的显示.请注意,这仅适用于通过概括(来自其他类)而非实现(来自接口)的操作.我认为这是一个错误,但它可能是设计的.
如果确实在“覆盖和实现”对话框中选择了一个操作,则表示您正在复制它. EA将不记得被覆盖的操作来自何处,如果在接口/抽象类中更改它,则不会更新名称.
使用右键单击 – 高级 – 父方法会绕过“覆盖和实现”对话框,但会创建连接器,如您所述.
现在你提到你创建一个类然后设置“接口”构造型.这不是这样做的方式;您应该使用工具箱中的界面符号创建界面.具有“接口”构造型的类与接口不同,我不确定我用这种构造得到的行为.
如果它是您想要的接口,请使用它.另一方面,如果你在谈论一个抽象类,那么Class是正确的,抽象类和具体类都不应该具有“接口”构造型.
另请注意,如果您有想要绘制图表的代码库,EA可能会为您进行反向工程(如果它是C,C#,Java或其他十几种语言).
标签:class-diagram,c,uml,enterprise-architect 来源: https://codeday.me/bug/20190826/1730326.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。