请问c#类的关联关系----关联聚合组合在代码层面的实现是否是一样的

fatjay2046 2013-07-29 06:37:03
如题。它们都是用成员变量的形式来实现的。
除此之外,除了语意上分析外,还可以单纯从代码上分析出两个类之间到底之间的关系吗?
有人说。看构造函数
如果构造函数内部有

_obj=new Obj();
必然是组合或者聚合。我总觉得很多时候表示组合或聚合的两个类的实例并不一定在构造函数中实现。
会延迟实例化
而且有时候构造的时候就要指定自身的实例和某一个其他实例的关系。也就是说构造的时候也会有关联关系。
另外,在我们实际编写代码的时候,一定要非常清晰的指定两个对象之间的关系吗?还是有时候根本不需要在意。
...全文
294 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fatjay2046 2013-07-30
  • 打赏
  • 举报
回复
还是有一点东西疑惑。你说是生命周期关联。被聚合的小类会在大类之前或者同时销毁。但是如果这个被聚合的类是被几个大类共享的了?那生命周期理论也就不成立了啊 比如A,B同时聚合C.那A销毁的时候肯定不能销毁C啊
  • 打赏
  • 举报
回复
嗯,你是说的“组合或者聚合”。组合和聚合的字眼差别并不明显,与普通的关联的差别比较明显。 通常只要从“动态模型”上来理解就行了,不必在一些只有静态意义而没有什么动态意义的概念过度细分。 整个UML的概念符号,了解十分之一就够了,实际上UML过分臃肿了,因此在15年前出现了各种敏捷开发,他们都是强调对传统的UML规定进行弱化。
fatjay2046 2013-07-29
  • 打赏
  • 举报
回复
谢谢。明白了
fatjay2046 2013-07-29
  • 打赏
  • 举报
回复
其实我是想问代码实现上是不是一样的。 只能通过语意上判断。如果都是成员变量,那代码实现就是一样啊。怎么从代码上判断了。 麻烦您给我详细讲解一下,谢谢
  • 打赏
  • 举报
回复
引用 2 楼 fatjay2046 的回复:
单纯从代码上如何分析啊?都是从成员变量来实现的,那么聚合与关联代码上不是没有明显的区别吗?
聚合是只生命期的关联,父对象被销毁的时候,子对象必须被销毁。
  • 打赏
  • 举报
回复
设计跟实现时两回事。就好像苹果手机的第10版设计,画了1万张草图,但是实际实现之后也未必完全一样。 在面向对象设计中,没有什么“构造函数参数”的概念,如果有构造函数的话也是没有参数的;也没有什么方法参数的概念,方法无需考虑参数。 这样,你才能知道你的设计缺少什么。 但是你实现时,则可以使用OOPL语言的语法来简化它。编程语言可以有各种各样的方言,会用某种编程语言的语法(例如在构造函数上可以弄一个以上的参数)并不是你设计的目标。
fatjay2046 2013-07-29
  • 打赏
  • 举报
回复
单纯从代码上如何分析啊?都是从成员变量来实现的,那么聚合与关联代码上不是没有明显的区别吗?
  • 打赏
  • 举报
回复 1
它们都是用成员变量的形式来实现的......因此,可以单纯从代码上分析出两个类之间的聚合关联关系!

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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