- 1、本文档共66页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
聚合与组合 聚合(聚集)与组合(合成、组成)是两种特殊的关联关系。 (1) 聚合关系(Aggregation) 表示的是整体和部分的关系, 聚合意味着一个类拥有但共享另一个类的对象。 是“has-a”关系。 成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。 代码体现:成员变量 球队解散了,球员还在 毕业了,班级解散了,这些学生还在 (2)聚合关系(Aggregation) 学生的对象不是在班级类里创建 聚合与组合 (2)组合关系(Composition) 是一种特殊形式的聚合,也称为强聚合关系,是“contains-a”关系,与聚合相比,有两个特点: 一个部分类最多只能属于一个整体类。 当整体类不存在时,部分类将同时被销毁。 代码体现:成员变量 窗口关闭了,这些组件也自然消失了 人死了,心脏也停止了跳动 组合关系(Composition) Engine的对象是在Car类里创建 关联与聚合(组合)的区别 关联关系所涉及的两个类是处于同一个层次上的。比如学生和课程就是一种关联关系,因为学生不是有课程组成的。 聚合关系涉及的两个类处于不平等的层次上,一个代表整体,一个代表部分。 聚合和组合的区别 (2)泛化关系(Generalization) 泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的直线来表示。 在代码实现时,使用面向对象的继承机制来实现泛化关系。 class Person { protected String name; protected int age; public void move(){ } public void say() { } } class Student extends Person { private String studentNo; public void study(){ } } class Teacher extends Person{ private String teacherNo; public void tecah(){} } (3)依赖关系(Dependency) 依赖关系是一种使用关系 一个类的实现需要另一个类的协助,尽量不使用双向的互相依赖。 在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。 代码表现:局部变量、方法的参数或者对静态方法的调用 (3)依赖关系 class Car{ public void move(){ System.out.println( car move); } } class Drive{ public void drive(Car car){ //方法的参数 car.move(); } } public class TestDrive { public static void main(String[] args) { Drive d=new Drive(); Car c=new Car(); d.drive(c); } } (3)依赖关系 class Car{ public void move(){ System.out.println( car move); } } class Drive{ public void drive(){ Car car=new Car();//局部变量 car.move(); } } public class TestDrive { public static void main(String[] args) { Drive d=new Drive(); d.drive(); } } (3)依赖关系 class Car{ static void move(){ System.out.println( car move); } } class Drive{ public void drive(){ Car.move(); //静态方法 } } public class TestDrive { public static void main(String[] args) { Drive d=new Drive(); d.drive(); } } (4)实现关系(Realization) 是一种类与接口的关系,表示类是接口所有特征和行为的实现。 带三角箭头的虚线,箭头
文档评论(0)