UML帮助C#设计原则
我在下面了解UML时遇到问题:
具体来说, PersistentSet
和ThirdPartyPersistentSet
之间的关系是什么? PersistentObject
和ThirdPartyPersistentSet
之间的关系是什么?
请注意,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之间的关系是什么?