依赖与关联 依赖(Dependency ) : 含义:是类与类之间的连接,表示一个类依赖于另外一个类的定义;依赖关系仅仅描述了类与类之间的一种使用与被使用的关系; 体现:在Java和C++中体现为局部变量、方法/函数的参数或者是对静态方法的调用; 举例:人依赖于水和空气;汽车依赖汽油; UML图表示的依赖关系: 依赖: 比如说我要过河,没有桥怎么办,我就去借来一条小船渡过去。我与小船的关系仅仅是使用(借用)的关系。 表现在代码上,为依赖的类的某个方法以被依赖的类作为其参数。或者是class A 的某个方法创造了 class B 的 实例抑或对class B的静态方法的调用。如果A依赖于B,那意味着B的变化可能要求A也发生变化; \ Boat: [java] static class Boat{ public static void row(){ System.out.println("开动"); } } static class Boat{ public static void row(){ System.out.println("开动"); } }Person: [java] class Person{ public void crossRiver(Boat boat){ boat.row() ; } public void fishing(){ Boat boat = new Boat() ; boat.row() ; class Person{ public void crossRiver(Boat boat){ boat.row() ; } public void fishing(){ Boat boat = new Boat() ; boat.row() ; public void patrol(){ Boat.row() ; } } } public void patrol(){ Boat.row() ; } } 关联(Association): 含义:类与类之间的连结,关联关系使一个类知道另外一个类的属性和方法;通常含有“知道”,“了解”的含义。关联可以是双向的,也可以是单向的 体现:在Java和C++中,关联关系是通过成员变量来实现的; 举例:“渔民”需要知道“天气”情况才能够出海 UML图表示的关联关系: 关联: 有名的例子:客户和订单的关系以及公司和员工的关系,都是关联关系。还有就是我和我的单车的例子,他们都 是一种“拥有”的关系。表现在代码上,就是一个类包含另一个类的实例,通常表现为被关联类以类属性的形式 出现在关联类的类定义中,也可以表现为关联类引用了一个类型为被关联类的全局变量。关联可以使单向的, 也可以使双向的。 \ Computer: [java] class Computer{ public void develop(){ System.out.println("Develop "); } } class Computer{ public void develop(){ System.out.println("Develop "); } } Person: [java] class Person{ private Computer computer ; public Person(Computer computer){ this.computer = computer ; } public void work(){ computer.develop() ; System.out.println("work"); } } } 依赖和关联的区别在于依赖是使用,关联是拥有。 ------------------------------------------------------------------------------------------------------------- 聚合(aggregation): 含义:是关联关系的一种,是一种强关联关系(has-a);聚合关系是整体和个体/部分之间的关系;关联关系的两 个类处于同一个层次上,而聚合关系的两个类处于不同的层次上,一个是整体,一个是个体/部分;在聚合关系中, 代表个体/部分的对象有可能会被多个代表整体的对象所共享; 体现:C++中,聚合关系通过将被聚合者的(数组)指针作为内部成员来实现的; 图示:空心菱形 + 实线 + 箭头;箭头指向被聚合的类,也就是说,箭头指向个体/部分; 举例:班级和学生,当班级删除之后,学生还是存在,学生还可能被培训机构引用 UML图表示的聚合关系: \ Classes: [java] class Classes{ private Student student ; public Classes(Student student){ this.student = student ; } } } Student : [java] class Student{ } class Student{ } 组合(Composition): 含义:它也是关联关系的一种(is-a),但它是比聚合关系更强的关系.组合关系要求聚合关系中代表整体的对象 要负责代表个体/部分的对象的整个生命周期;组合关系不能共享;在组合关系中,如果代表整体的对象被销毁或 破坏,那么代表个体/部分的对象也一定会被销毁或破坏,而聚在合关系中,代表个体/部分的对象则有可能被多个 代表整体的对象所共享,而不一定会随着某个代表整体的对象被销毁或破坏而被销毁或破坏; 体现:在Java和C++中,组合关系是通过成员变量来实现的; 图示:实心菱形 + 实线 + 箭头;箭头指向代表个体/部分的对象,也就是被合成/组合的类的对象; 举例:一个人由头、四肢、等各种器官组成,因为人与这些器官具有相同的生命周期,人死了,这些器官也挂 了;房子和房间的关系,当房子没有了,房间同样不可能单独存在。 UML图表示的组合关系: \ Room: [java] class Room{ public Room createRoom(){ System.out.println("创建房间"); return new Room() ; } } class House{ private Room room ; public House(){ room = new Room() ; } public void createHouse(){ room.createRoom() ; } } } 聚合和组合的区别:聚合是个体离开了整体,依然可以存在; 组合是个体和整体不可以分开,个体不能离开整体单独存在。 依赖,关联 和聚合,组合的区别: 依赖,关联 : 类之间的关系是在同一层次上; 聚合,组合: 类之间的关系表现为整体和部分。
相关推荐
UML中依赖泛化关联实现聚合组合的C#实现UML中依赖泛化关联实现聚合组合的C#实现
关于面向对象的依赖、关联、聚合、组合关系
UML关系(泛化,实现,依赖,关联(聚合,组合))
UML学习之依赖_关联_聚合_组合_继承
UML中依赖泛化关联实现聚合组合的Java实现
UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
几种类间关系:继承、实现、依赖、关联、聚合、组合。可做为开发设计时速查手册。
UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别 这是一堂关于UML基础知识的补习课;现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更别提使用UML来实现规范 建模了...
UML类关系-依赖,关联,聚合和组合 这几种关系很容易混淆,一个总结文档。
NULL 博文链接:https://abcity.iteye.com/blog/1740763
UML类图关系泛化、继承、实现、依赖、关联、聚合、组合.doc
UML中依赖泛化关联实现聚合组合的C#实现_配UML图.doc
UML类图关系(泛化、继承、实现、依赖、关联、聚合、组合).doc
主要介绍了Java依赖-关联-聚合-组合之间区别理解,依赖关系比较好区分,它是耦合度最弱的一种,下文给大家介绍的非常详细,感兴趣的朋友一起看看吧
NULL 博文链接:https://newtime.iteye.com/blog/505170
(5)聚合:又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装体,从而简化对复杂事物的描述。 (6)关联:是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的...
NULL 博文链接:https://aoyi.iteye.com/blog/659179
1.软件思想UML:UML类图符号(依赖、关联、聚合、组合、泛化)、UML类符号相互之间的区别(聚合与组合、关联和聚合、关联和依赖、泛化和实现)。 2.Sping Boot:Spring Boot环境配置、Spring Boot核心配置和注解、...
1)类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。2)在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的...