【问题标题】:Class Diagram if the relationships are correct如果关系正确,则类图
【发布时间】:2016-08-14 14:46:59
【问题描述】:

我创建了一个类图。这只是一个概念,但我想知道关系是否正确以及我是否完全理解它。

主类

  • 创建类A();使用 new ClassA() 创建 ClassA;
  • 创建类B();使用 new ClassB() 创建 ClassB;
  • getConcreteFromCreator();从创建者那里得到具体的类。创建者有一个 switch case 来确定要返回哪个具体类。
    • 类返回后调用例如(Abstract callConcrete = new ConreateA())
  • 创建类AA();使用接口 createClassAA = new ClassAA(); 创建 ClassAA;

AA类

  • ClassAA 使用 new ClassBB() 创建 classBB;

从 ClassAA 到 ClassBB 的关系是否应该是一个组合?因为 classAA 是 ClassBB 的创建者,它依赖于现有的 InterfaceAA和ClassAA之间的关系是实现。我无法使用 NClass 图画线。

Class Diagram

【问题讨论】:

  • 我无法弄清楚您解释的内容与我在图表上看到的内容之间的关系。例如,图中的每个CreateXgetThat 方法都返回void。他们是否将创建的实例存储在里面? “调用它...(Abstract callConcrete = new ConreateA())”是什么意思?什么是“用接口创建 ClassAA”?
  • 我的意思是在 MainClass 的方法中创建 ConcreateA 类。创建完成后,我可以从 MainClass 调用 ConcreateA 类中的方法。

标签: c# design-patterns class-diagram


【解决方案1】:
  1. ClassAAClassBB 之间的关系仅在ClassAA 创建的ClassBB 实例存储在ClassAA 内部并且不与外部实体共享的情况下才构成。在这种情况下,隐藏此实现细节并在 ClassAA 的构造函数或专用的 Initialize 方法中执行必要的初始化是一个很好的 OO 实践。
  2. 对 NClass 一无所知,但实现由虚线指定,带有指向接口的空心三角形。根据他们网站上的屏幕截图,它是受支持的。

【讨论】:

  • 谢谢! NClass 不允许我在 InterfaceAA 和 ClassAA 之间创建实现线。它给了我一个错误“无法在两个对象之间创建关系。”
  • 原因可能是接口有一种特殊的绘制方式,它可能看起来与类不同,不是矩形而是圆形。
猜你喜欢
  • 2018-06-24
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 2020-06-08
  • 1970-01-01
相关资源
最近更新 更多