- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UML的类图关系(c#实例)
??? UML的类图关系分为: 关联、聚合/组合、依赖、泛化(继承)。
???? /// summary??? /// UML类图关系:关联??? /// /summary
??? #region 双向关联:双方都拥有对方的一个指针,当然也可以是引用或者是值。C1-C2
???
??? class C1??? {??????? public C2 theC2 = new C2();??? };
??? class C2??? {??????? public C1 theC1 = new C1();??? };??? #endregion
??? #region 单向关联:C3有C4的指针,而C4对C3一无所知。C3-C4???
??? class C3??? {??????? public C4 theC4 = new C4();
??? };
??? class C4??? {
??? };??? #endregion
??? #region 自身关联(反身关联):自己引用自己,带着一个自己的引用。???
??? class C14??? {??????? public C14 theC14 = new C14();
??? };
??? #endregion
??? /// summary??? /// UML类图关系:聚合/组合??? /// 当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。??? /// /summary??? //聚合:表示C9聚合C10,但是C10可以离开C9而独立存在??? //(独立存在的意思是在某个应用的问题域中这个类的存在有意义)。???
??? class C9??? {??????? public C10 theC10 = new C10();??? };
??? class C10??? {
??? };
??? //组合(也有人称为包容):一般是实心菱形加实线箭头表示,??? //表示的是C8被C7包容,而且C8不能离开C7而独立存在。??? //但这是视问题域而定的,例如在关心汽车的领域里,??? //轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。??? //但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。???
??? class C7??? {??????? public C8 theC8 = new C8();??? };
??? class C8??? {
??? };??? //可以看到,代码和聚合是一样的。具体如何区别,可能就只能用语义来区分了。??? /// summary??? /// UML类图关系:依赖??? /// /summary
??? //指C5可能要用到C6的一些方法,也可以这样说,??? //要完成C5里的所有功能,一定要有C6的方法协助才行。??? //在形式上一般是C5中的某个方法把C6的对象作为参数使用(假设C5依赖于C6)。??? //注意,要避免双向依赖。一般来说,不应该存在双向依赖。
??? ???? using namespaceOfC6??? class C5??? {??????? void Func(C6 c6)??????? { }??? };??? /// summary??? /// UML类图关系:泛化(继承)??? /// /summary??????? ??? class C11??? {??? }
??? class C12 : C11??? { ??? }?????重复度这里再说一下重复度,其实看完了上面的描述之后,我们应该清楚了各个关系间的关系以及具体对应到代码是怎么样的,所谓的重复度,也只不过是上面的扩展,例如A和B有着“1对多”的重复度,那在A中就有一个列表,保存着B对象的N个引用,就是这样而已。
??? 依赖和聚合\组合、关联等有什么不同呢?
??? 关联是类之间的一种关系,例如老师教学生,老公和老婆,水壶装水等就是一种关系。这种关系是非常明显的,在问题领域中通过分析直接就能得出。
??? 依赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(可以说是“uses”了那个类),就可以把这种关系看成是依赖,依赖也可说是一种偶然的关系,而不是必然的关系,就是“我在某个方法中偶然用到了它,但在现实中我和它并没多大关系”。例如我和锤子,我和锤子本来是没关系的,但在有一次要钉钉子的时候,我用到了它,这就是一种依赖,依赖锤子完成钉钉子这件事情。
???
文档评论(0)