UML帮助C#设计原则

我在下面了解UML时遇到问题:

UML图像

具体来说, PersistentSetThirdPartyPersistentSet之间的关系是什么? PersistentObjectThirdPartyPersistentSet之间的关系是什么?

请注意,UML来自C#中的敏捷原则,模式和实践。作者:Martin C. Robert,Martin Micah 2006.第10章

提前致谢!

PersistentSet和ThirdPartyPersistentSet之间的关系是聚合,这意味着PersistentSet包含一个或多个ThridPartyPersistenSet实例。 这是一个“弱”关系,这意味着ThirdPartyPersistentSet的实例可以存在于PersistentSet之外。

PersistentObject和ThirdPartyPersistentSet之间的关系是一个依赖关系,这意味着ThirdPartyPersistentSet基本上需要一个PersistentObject来完成它的工作。

因此,要将其转换为代码,您的PersistentSet将包含以下内容:

 public class PersistentSet { public List Items { get; } ... } 

你的ThirdPartyPersistentSet看起来像这样:

 public class ThirdPartyPersistentSet { private PersistentObject _object; public ThirdPartyPersistentSet(PersistentObject obj) { _object = obj; } ... } 

具体来说,PersistentSet和ThirdPartyPersistentSet之间的关系是什么?

实心菱形< - > —–>是Composition (“has a”),其中“部分”在“整体”时被破坏。 在下图中,如果你摧毁了一辆汽车,你就会摧毁化油器。

空菱形<> —–>是Aggregation (“有一个”),当“整体”时,“部分”可能不被破坏。 在下面的图片中,如果你摧毁一个池塘,你不一定会摧毁它们(如果它们很聪明,它们会移动到另一个池塘)。

作文http://sofzh.miximages.com/c%23/220px-AggregationAndComposition.svg.png

PersistentObject和ThirdPartyPersistentSet之间的关系是什么?

这是一种依赖关系。 有关详细信息,请参阅我的回答。

那么在使用参数传递时,依赖关系何时会更改为关联关系?

如果在本地存储参数,则它从依赖关系更改为关联关系。 如果您只在本地使用该参数,那么它将保持依赖关系。

C#代码示例:

 // Association public class ThirdPartyPersistentSet { private PersistentObject _object; public ThirdPartyPersistentSet(PersistentObject obj) { _object = obj; // Store it to a local variable. // Now ThirdPartyPersistentSet 'knows' about // the PersistentObject. } } // Dependency public class ThirdPartyPersistentSet { public ThirdPartyPersistentSet(PersistentObject obj) { obj.GetSomething(); // Do something with obj, // but do not store it to a local variable. // You only 'use' it and ThirdPartyPersistentSet // does not 'know' about it. } } 

具体来说,PersistentSet和ThirdPartyPersistentSet之间的关系是什么?

PersistentSet有很多ThirdPartyPersistentSets

PersistentObject和ThirdPartyPersistentSet之间的关系是什么?

ThirdPartyPersistentSet依赖于(uses-a)PersistentObject

uml类图中的所有行都表示一种或另一种的依赖关系,除了像注释一样的虚线(狗耳盒)。 没有箭头的实线表示两(2)路(双向)依赖。

黑色菱形表示组合 ,包含(如箭头所示类型的字段): PersistentSet实体包含ThirdPartyPersistentSet实体当PersistenSet被销毁时,包含的所有ThirdPartyPersistenSet对象也将被销毁。

虚线表示依赖关系 ,如在函数调用中具有箭头指向的类型的参数): ThirdPartyPersistentSet依赖于PersistentObject

查看Wikipedia条目以获取更多详细信息

具体来说,PersistentSet和ThirdPartyPersistentSet之间的关系是什么?

http://en.wikipedia.org/wiki/Class_diagram#Aggregation

PersistentObject和ThirdPartyPersistentSet之间的关系是什么?

http://en.wikipedia.org/wiki/Class_diagram#Dependency