继承和聚合UML

时间:2014-06-18 16:46:23

标签: java c++ inheritance uml aggregation

想知道UML是否合理且可以接受?

请不要根据课程名称质疑作曲或聚合的必要性。

按照UML上的说明对待它们。

另外,我实际上是使用GoodArticle与报纸进行通信而不是实际编码中的父类文章。但是在表示UML方面,我仍然应该将父类(Article)连接到报纸,即使它实际上是GoodArticle?

这也可以说与GoodArticle与BadArticle的构图连接的情况类似。 BadArticle应该连接到父类文章吗?但是我实际上是在使用GoodArticle在编码中连接BadArticle。

Inheritance and aggregation

1 个答案:

答案 0 :(得分:1)

我将按原样阅读您的图表,即 - 我会解释它。如果我的解释是正确的,那么你的模型可能是正确的。这就是UML的全部意义 - 在建模下明确地传输信息。

因此...

  • 阅读图表:报纸上有文章,包括GoodArticles和BadArticles。文章独立存在于报纸上,如果您删除报纸实例,其文章将保持“浮动”状态。你说:
  

我实际上是使用GoodArticle与报纸沟通而不是   实际编码中的父类文章。但就此而言   代表UML,我仍然应该将父类(Article)连接到   报纸即使它实际上是GoodArticle?

没有。如果只有GoodArticles连接到Newspaper,那么你应该在这两个类之间绘制它。这种类图是代码的蓝图,应该精确地显示代码结构。

  • 阅读图表:GoodArticle包含BadArticles。此包含是独占的,这意味着如果删除GoodArticle,将自动删除所有包含的BadArticles。

在这里你说:

  

BadArticle应该连接到父类文章吗?但是,我   实际上我正在使用GoodArticle在编码中连接BadArticle。

这次图表反映了代码,所以没关系,BadArticle不应该连接到Article。如果你这样做,那就意味着BadArticle也可以包含其他BadArticles。

请注意,属性listOfBadArticle可能是多余的。如果它引用图表上的合成,您应该将其删除并将其用作相应合成端的名称。