RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 811069
Accepted
koshachok
koshachok
Asked:2020-04-08 05:57:10 +0000 UTC2020-04-08 05:57:10 +0000 UTC 2020-04-08 05:57:10 +0000 UTC

类图中的关系

  • 772

与类图中的关系严重混淆。为了“解开”,请帮助我找出以下示例:

让有一个鳄梨类。它包含骨头。很明显,没有 Pit 就无法存在鳄梨,而 Pit 可以很好地存在。有一个袋子只装鳄梨。袋中可以有任意数量的鳄梨 [0..*]。有一个装麻袋的地窖,尽管它只能装 10 个麻袋,不多也不少。我们的类之间会有什么关系?

什么是典型的,Kostochka,不关心她在什么鳄梨,就像鳄梨不关心它放在什么袋子里一样。萨克不在乎他们把他放在哪个酒窖里。

PS我自己想出了一个例子。

uml
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Fat-Zer
    2020-04-08T10:07:52Z2020-04-08T10:07:52Z

    不是最好的例子,首先,很明显它只意味着对组合、聚合和关联之间差异的描述。其次,根据描述,所有的关系都是组合。

    • 关联是一种“我所指”的关系。相对较弱的耦合,当两个对象都不能表示为另一个对象的所有者时。通常呈现给他的是多对多关系,但他也可能代表任何其他关系,这取决于对象行为的逻辑。

    • 聚合和组合是表达“我包括”关系的特定类型的关联。两者之间的主要区别在于谁控制包含对象的生命周期。因此,使用聚合,生命周期由其他人控制。而在作曲时- 直接是容器。一个重要的特性是,如果对象在被销毁之前没有从容器中排除,那么它会随着它一起被销毁。UML 图中省略了该控件的细节,因为在 C++ 中,它可以是成熟的类成员,也可以是在析构函数中删除的指针数组。

    让有一个鳄梨类。它包含骨头。很明显,没有 Pit 就无法存在鳄梨,而 Pit 可以很好地存在。

    事实上,关于没有什么可以存在的想法是次要的,并且会分散本质。如果我们突然决定不再需要鳄梨并将其扔进烤箱,我们是否需要石头自动留在架子上?可能不是,所以它是一个组合。这并不排除我们可以得到骨头并将其存放在架子上,然后再取出或在进食时取出,如果真的有必要的话。

    有一个袋子只装鳄梨。袋中可以有任意数量的鳄梨 [0..*]。

    同样,如果你把袋子扔进同一个火箱,所有的鳄梨都会被毁掉。所以又是作曲。

    有一个装麻袋的地窖,尽管它只能装 10 个麻袋,不多也不少。

    火⇒一切都烧毁了⇒组成。

    现在我将扩展一点,一个例子,以说明其他关系。

    仓库有所有者(掌柜),而一个仓库只有一个人拥有。

    因为 随着业主的突然死亡,仓库不会自燃,而一旦仓库发生火灾,业主不会死于心脏病,那么这不再是作文,而是同时, storekeeper-warehouse 关系意味着所有权,所以这是聚合。

    袋子不只是出现在仓库里,而是农民送来的,而一袋子只出自一个农民,袋子上写着谁,但任何农民都可以与许多掌柜合作,而掌柜则有与谁合作的记录工作,以及与他们一起工作的农民。

    农民-袋子关系并不意味着所有权,所以它是一个一对多的关联。掌农关系也是一种关联,但已经是多对多,而 农民和店主都有清单,然后这个,然后这是一个双向关联。

    结果:

    类图(没有方法,看起来很稀疏,但我懒得发明接口。)

    免责声明:以上描述的一切都是我对这个话题的看法和理解,它并不声称是绝对的真理,但我试图让它尽可能地不矛盾。我不主张焚烧食品仓库,或肆意破坏鳄梨、仓库所有者或农民。

    • 3

相关问题

  • 请检查UML序列图

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5