UML中组成和聚合的问题

changwanjin 2008-12-26 10:06:14
有一个面包,把他切成若干的面包片,问你 面包片和面包的关系是组成还是聚合?

我的回答是 这个两个都不是
作者的回答是 组成 ,但是面包片没了 面包就不存在了 这个不符合组成的特征!!


请明白人作答 谢谢!
...全文
449 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyushim2007 2010-12-08
  • 打赏
  • 举报
回复
六楼的,高人呐
jack0511 2009-01-09
  • 打赏
  • 举报
回复
聚合与组成的概念不搞清楚,你的关系映射到代码上必然也是不正确的,聚合在java上的实现是一个类的实例变量持有到一个Collection对象集合的引用,1到0...n的关系,而组成一般是一个类及其内部类的实现方式,而且内部类实例化后的对象引用不暴露给外部其它对象。
MavenTalk 2009-01-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 JeromeLiu 的回复:]
除非是要进行考试之类的,我觉得没有必要在组合和聚合的区别的问题上费脑筋。组合也就是一种强聚合,相当于继承了聚合。其实两者也就是关联程度上的强弱关系。

至于lz说的例子,面包片没有了,面包也就不存在了。也就是面包不能脱离面包片单独存在,理解为组合更加合适。
[/Quote]

同意这种说法
jack0511 2009-01-09
  • 打赏
  • 举报
回复
谢谢simon,p2p两位顶贴,要是不明白,再来一个比方,公司和部门的关系就是组成,一个公司不存在了,部门也不会有存在的意义了(不允许其他公司收购部门的情况存在);而公司和员工的关系就是聚合,公司倒了,咱们不会都跑去切腹自杀,而是可以加入其它公司
changwanjin 2009-01-08
  • 打赏
  • 举报
回复
谢谢大家了哦
p2p81 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jack0511 的回复:]
你正好弄反了吧?是面包没了,面包片就不存在了。
组成或叫合成的关系是最强的一种关联关系,整体负责局部的生命周期,又比如一只猫与它的爪子的关系,猫没了,猫爪的生命周期也完结了,猫爪再也不能在猫的指挥下完成抓老鼠的工作。聚合的关系比组成弱一点,局部的生命周期可以离开整体单独存在,比如孙悟空和金箍棒的关系,金箍棒离开孙悟空到了牛魔王手里可能一样耍得有模样。
仅供参考!
[/Quote]

解释的比较形象。
simonezhlx 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jack0511 的回复:]
你正好弄反了吧?是面包没了,面包片就不存在了。
组成或叫合成的关系是最强的一种关联关系,整体负责局部的生命周期,又比如一只猫与它的爪子的关系,猫没了,猫爪的生命周期也完结了,猫爪再也不能在猫的指挥下完成抓老鼠的工作。聚合的关系比组成弱一点,局部的生命周期可以离开整体单独存在,比如孙悟空和金箍棒的关系,金箍棒离开孙悟空到了牛魔王手里可能一样耍得有模样。
仅供参考!
[/Quote]
较形象了
临碣 2009-01-06
  • 打赏
  • 举报
回复
这个问题没有太多实际意义。一般在设计过程中很少用这两个关系。确认他们之间有关系就可以了。
如果要详细说明可以定义自己的Stereotype。
pxcong007 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 java2000_net 的回复:]
面包片是组成面包的基本单位。
如果是一袋葡萄干和一粒葡萄干的关系,我认为是聚合,哈哈!
[/Quote]

我认为是组合的关系, 因为这里没有共享关系(一粒葡萄干不可能属于两袋葡萄干)
JeromeLiu 2008-12-31
  • 打赏
  • 举报
回复
除非是要进行考试之类的,我觉得没有必要在组合和聚合的区别的问题上费脑筋。组合也就是一种强聚合,相当于继承了聚合。其实两者也就是关联程度上的强弱关系。

至于lz说的例子,面包片没有了,面包也就不存在了。也就是面包不能脱离面包片单独存在,理解为组合更加合适。
老紫竹 2008-12-29
  • 打赏
  • 举报
回复
面包片是组成面包的基本单位。
如果是一袋葡萄干和一粒葡萄干的关系,我认为是聚合,哈哈!
success000 2008-12-29
  • 打赏
  • 举报
回复
友情up
无计划 2008-12-29
  • 打赏
  • 举报
回复
LS的,说的真贴切,呵呵!
yiwandoujiang 2008-12-29
  • 打赏
  • 举报
回复
顶6楼的
hbwhwang 2008-12-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 changwanjin 的帖子:]
有一个面包,把他切成若干的面包片,问你 面包片和面包的关系是组成还是聚合?

我的回答是 这个两个都不是
作者的回答是 组成 ,但是面包片没了 面包就不存在了 这个不符合组成的特征!!


请明白人作答 谢谢!
[/Quote]

首先用2个例子来帮你区分什么是组成和聚合

第1个例子:人--夫妻立场
假设一夫一妻制度:
class Man{
String 姓名;
Date 生日;
。。。
Woman 配偶;
}
class Woman {
String 姓名;
Date 生日;
。。。
Man 配偶;
}
当我们创建一个男人的实例的时候,假设这个人结婚了,那么我们一定要创建女人的实例(他的配偶),把这个实例附给男人的配偶属性。

第2个例子:人--情人立场
假定一个男人只能有一个情人(嘿嘿,多了钱包受不了),而女人可以同时做多个男人的情人(嘿嘿,前提是这个女人够本钱)
class Man{
String 姓名;
Date 生日;
。。。
Woman 情人;
}
class Woman {
String 姓名;
Date 生日;
。。。
List<Man> 情人们;
}
当我们创建一个男人的实例的时候,假设这个人有情人,那么我们会根据情况选择创建或者不创建女人的实例。

这2个例子说明的是组成和聚合的区别。组合就是“独占”,而聚合不强调“独占”,因为有可能“共享”。用更术语话的说法是,组成是“强关系”,而聚合是“弱关系”。
如果有10对夫妻,那么一定有20个实例。
如果有10对情人,那么可能有11个实例,也有可能有20个实例。

再来看你的问题--面包和面包片
很明显,某个面包片不可能同时属于2个面包!所以面包和面包片的关系是组成。
你把一个面包里面的面包片吃了,对其他面包没有任何影响。
而你如果把你的情人干掉了(嘿嘿,假设你情人抓住了的把柄要挟你),可能一堆人会跟你一样没了情人。






software51 2008-12-27
  • 打赏
  • 举报
回复
有意思,考虑中!
changwanjin 2008-12-27
  • 打赏
  • 举报
回复
我是个学生 在自学UML
上网不是很方便 不能及时在线 希望大家见谅!多包涵
changwanjin 2008-12-27
  • 打赏
  • 举报
回复
可是答案还是没出来 请高手们指教
jack0511 2008-12-26
  • 打赏
  • 举报
回复
你正好弄反了吧?是面包没了,面包片就不存在了。
组成或叫合成的关系是最强的一种关联关系,整体负责局部的生命周期,又比如一只猫与它的爪子的关系,猫没了,猫爪的生命周期也完结了,猫爪再也不能在猫的指挥下完成抓老鼠的工作。聚合的关系比组成弱一点,局部的生命周期可以离开整体单独存在,比如孙悟空和金箍棒的关系,金箍棒离开孙悟空到了牛魔王手里可能一样耍得有模样。
仅供参考!
hbwhwang 2008-12-26
  • 打赏
  • 举报
回复
一般用车轮子、引擎。。。和车子的关系来比喻合成
第1章课程定位与教学案例综述. 1.1职业岗位能力需求分析 1.2课程设置和课程定位分析 1.3WebShop电子商城介绍 1.3.1电子商城需求分析 1.3.2电子商城系统设计 1.3.3电子商城数据库设计 1.4LibraryMIS图书管理系统介绍 1.4.1图书管理系统需求分析 1.4.2图书管理系统系统设计 1.4.3图书管理系统数据库设计 习题 第2章面向对象技术和建模基础 2.1面向对象方法 2.1.1面向对象方法的基本思想 2.1.2面向对象方法的发展 2.2面向对象的基本概念与特征 2.2.1面向对象的基本概念 2.2.2面向对象的主要特征 2.3面向对象分析 .2.3.1处理复杂问题的原则 2.3.200A方法的基本步骤 2.4面向对象设计 2.5面向对象实现 2.6面向对象方法的内涵 2.7软件建模概述 2.7.1软件建模的概念 2.7.2软件建模的用途 2.7.3软件建模的优点 习题 第3章UML简介 3.1UML的发展 3.1.1UML的发展历程 3.1.2理解UML建模 3.2UML的特点 3.3UML的结构 3.3.1UML的事物 3.3.2UML的关系 3.4UML的视图 3.4.1用例视图 3.4.2逻辑视图 3.4.3并发视图 3.4.4组件视图 3.4.5部署视图 3.5UML图形符号 3.5.1用例图 3.5.2类图 3.5.3对象图 3.5.4状态图 3.5.5活动图 3.5.6顺序图 3.5.7协作图 3.5.8组件图 3.5.9部署图 3.5.10UML 2.0新特性 3.6UML建模基本流程 习题 第4章UML建模工具简介 4.1常用UML建模工具 4.1.1 Rational Rose 4.1.2Enterprise Architect 4.1.3Together 4.1.4PowerDesigner 4.1.5 Visi0 4.1.6Tnffun Plat0 4.2Rational Rose安装与配置 4.2.1Rational Rose的运行环境 4.2.2Rational Rose的安装 4.2.3Rational Rose的配置 4.3使用Rational Rose建模 4.3.1Rational Rose主菜单 4.3.2Rational Rose的视图 4.3.3 Rational Rose建模的基本过程 习题 第5章需求建模 5.1用例模型概述 5.2用例图组成 5.2.1参与者 5.2.2系统 5.2.3用例 5.3识别和描述用例.. 5.3.1识别用例 5.3.2绘制WebShop电子商城用例图 5.3.3通过包对用例进行合理规划 5.3.4WebShop电子商城用例图(不含关系) 5.3.5用例描述 5.4用例间的关系 5.4.1泛化关系 5.4.2使用关系 5.4.3包含关系 5.4.4扩展关系 5.4.5关系小结 5.4.6WebShop电子商城用例图(含关系) 习题 第6章静态建模 6.1静态建模概述 6.2类图概述 6.3类图的基本组成 6.3.1类的概述 6.3.2绘制带属性的实体类 6.3.3绘制带操作的实体类 6.3.4绘制边界类图 6.3.5绘制控制类图 6.3.6UML的类与语言的类 6.4类之间的关系 6.4.1关联关系 6.4.2聚合关系 6.4.3组合关系 6.4.4泛化关系 6.4.5实现关系 6.4.6依赖关系 6.5对象图 6.5.1对象图概述 6.5.2对象图组成 6.5.3类图和对象图的比较 习题 第7章数据库建模 7.1PowerDesigner简介 7.2PowerDesigner安装和启动 7.2.1PowerDesigner的安装 7.2.2PowerDesigner的启动 7.3PowerDesigner概念数据模型 7.3.1概念数据模型概述 7.3.2PowerDesigner概念数据模型概述 7.4 PowerDesigner物理数据模型 习题 第8章动态建模 8.1动态建模概述 8.2状态图 8.2.1状态图概述 8.2.2状态图组成 8.2.3绘制员工下班回家状态图 8.3活动图 8.3.1活动图概述 8.3.2活动图组成 8.3.3绘制WebShop电子商城活动图 8.4活动图拾遗 8.4.1活动图与流程图的比较 8.4.2活动图与状态图的比较 8.5顺序图 8.5.1顺序图概述 8.5.2顺序图组成 8.5.3绘制WebShop电子商城顺序图 8.6协作图 8.6.1协作图概述 8.6.2协作图组成 8.6.3绘制WebShop电子商城协作图 8.7 顺序图拾遗 8.7.1 顺序图与协作图的比较 8.7.2 顺序图与协作图的互换 习题 第9章物理建模 9.1物理建模概述 9.1.1硬件 9.1.2软件 9.2组件图 9.2.1组件图概述 9.2.2组件图组成 9.2.3绘制WebShop电子商城组件图 9.3部署图 9.3.1部署图概述 9.3.2部署图组成 9.3.3绘制WebShop电子商城部署图 习题 第10章双向工程 10.1双向工程简介 10.2正向工程(生成Java代码) 10.3逆向工程 习题 第11章统一软件过程RUP 11.1RUP简介 11.2RUPT作流程 11.2.1业务建模 11.2.2需求 11.2.3分析设计 11.2.4实施 11.2.5测试 11.2.6部署 11.2.7配置与变更管理 11.2.8项目管理 11.2.9环境 11.3RUP迭代过程 11.3.1初始 11.3.2细化 11.3.3构造 11.3.4移交 11.3.5迭代计划示例(构造阶段) 习题 附录A综合实训 附录B Rational Rose2003主菜单 参考文献...

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧