gpt4 book ai didi

interface - UML - 接口(interface)、抽象类或......?

转载 作者:行者123 更新时间:2023-12-04 05:23:44 24 4
gpt4 key购买 nike

我的程序有一些抽象的“模块”。
假设它是一个 GUI 模块。
它只包含模块的接口(interface)及其类型——为了与其他模块兼容(在另一个模块中,我可以使用 GUI 模块及其类型,而不用担心它的实现)。

所以我有这样的东西:

GUI::Component //represent the abstract component (button, label etc.)
//so it's only the base class for components

GUI::Clickable //if any component is clickable, it must inherit from it

GUI::Button : public Component, public Clickable
GUI::Label : public Component

但即使是 LabelButton只有虚拟方法(我猜它们是模块的接口(interface))。 GUI 模块实现的例如 SomeGUIImp必须声明 SomeButton : public GUI::ButtonSomeLabel : public GUI::Label (并且由于对象工厂,它们对用户来说是透明的)。

我不想更改代码中的任何内容 ,我只想 为它制作一个合适的UML图 .

所有这些元素( Component, Clickable, Button)都是接口(interface)吗?还是抽象类?

我想以某种方式表明 LabelButtonComponent 更“抽象”(用户可以更直接地使用,更具体) .

此外,最好显示 Clickable 之间的区别。 (它的功能)和 Component (它是所有组件的抽象基础)。

当前解决方案(不确定)

我不能说 100% 为什么,但在我看来,也许 Clickable是一个接口(interface), Component是一个抽象类, Button只是普通类。

但这显示了模块内部的关系,忽略了 Button (只有纯虚拟方法)也只是某些模块实现的声明?

最佳答案

规则很简单——只有纯虚方法的类是接口(interface),部分方法纯虚的类是抽象类,没有虚方法的类是实现类。如果这不适合您的设计,您可能应该重新考虑一些事情。例如,如果您想到 Button作为接口(interface)和常规类,您可能应该将其拆分为 2 个不同的类 - 一个用于接口(interface),一个用于实现。

关于interface - UML - 接口(interface)、抽象类或......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13436479/

24 4 0
文章推荐: r - 将列名分配给第一列 R 表
文章推荐: ember.js - 在 Ember-CLI 中创建一个将迭代一定次数的 for 循环
文章推荐: d3.js - 在 D3 中设置