- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UML0类图关系大全
UML类图关系大全 Association in class diagrams /riky/archive/2007/04/07/704298.html 课本: 软件工程张海藩 编著 人民邮电出版社 图书馆编号: TP311.5 Z111 1、关联 双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。 * 泛化(Generalization) 类与类的继承关系,类与接口的实现关系。 场景: 父与子、动物与人、植物与树、系统使用者与B2C会员和B2E会员的关系 系统的使用者包括:B2C会员、B2B会员和B2E会员。他们都是系统使用者。 类与类之间的泛化图 “is a” relationship Pizza is a food. A Pizza has ingredients, tomato, pepper, mushroom, … a cost, and a price. public class Pizza extends Food { //is-a relationship int ingredients; Tomato t; Peper p; Mushroom m; double cost; double price; .... } //has-a relationship 汽车是一种交通工具: ? 汽车 ? is-a ? 交通工具 汽车有一个发动机: ? 汽车 ? has-a ? 发动机 is-a ? 一般是继承关系 has-a ? 一般是组合关系 public class car extends Vehicle { Engine engine; Cartwheel cartwheel; SteeringWheel swheel; Tyre tyre; … } 使用ROSE 生成的代码是这样的: class?C1? ...{ public: ????C2*?theC2; }; class?C2? ...{ public: ????C1*?theC1; }; 双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。 单向关联:C3-C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。没有生命期的依赖。一般是表示为一种引用。生成代码如下: ?class?C3? ? ?...{ ?public: ?????C4*?theC4; ? ?}; ? ?class?C4? ? ?...{ ? ?}; 单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。 自身关联(反身关联):自己引用自己,带着一个自己的引用。代码如下: ?class?C14? ? { ?public: ?????C14*?theC14; ? ?}; 就是在自己的内部有着一个自身的引用。 当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。这句话怎么解,请看下面组合里的解释)。代码如下: ?class?C9? ? ?...{ ?public: ?????C10?theC10; ? ?}; ? ?class?C10? ? ?...{ ? ?}; 组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。在《敏捷开发》中还说到,A组合B,则A需要知道B的生存周期,即可能A负责生成或者释放B,或者A通过某种途径知道B的生成和释放。 class?C7? ...{ public: ????C8?theC8; }; class?C8? ...{ }; 可以看到,代码和聚合是一样的。具体如何区别,可能就只能用语义来区分了。 依赖:指C5可能要用到C6的一些方法,也可以这样说,要完成C5里的所有功能,一定要有C6的方法协助才行。C5依赖于C6的定义,一般是在C5类的头文件中包含了C6的头文件。ROSE对依赖关系不产生属性。注意,要避免双向依赖。一般来说,不应该存在双向依赖。 ROSE生成的代码如下: //?C5.h #include?C6.h class?C5?
您可能关注的文档
- metron资料.doc
- MI02-01 厂服管理办法 A版.doc
- MF开户教程- sky-giant.com.doc
- MicrosoftProject2003项目管理与应用 第10章_Microsoft Project Server.ppt
- MicrosoftProject2003项目管理与应用 第4章_项目资源管理.ppt
- MicrosoftProject2003项目管理与应用 第6章_项目的进度管理.ppt
- MIUMIU新款鞋_年新款包包MIUMIU包包价格_2011年新款包包.doc
- MODBUS协议概括及详解.doc
- Module 11 检测题.doc
- MOD35算法简介.pptx
- unbreakable中英问歌词对照.doc
- UMX03系列X射线电源 UMX03系列X射线电源 100W-1000W 20KV-160KV n 主要.doc
- Unit 10练习题1.doc
- Unit 4 What would you do?练习.doc
- Unit 4 学生自测试题 拼写单词。 在那里 桌子 床 梳妆台 书橱 沙发.doc
- Unit 5 Go with Transportation!【模拟试题】.doc
- Unit 5 综合卷.doc
- Unit 6、1.ppt
- Unit 7-第33课时.doc
- Unit 8 Reading Why don’t you get her a scarf.doc
文档评论(0)