【UML类图】设计模式中类的关系(一)

来源:互联网 发布:浏览器不支持java插件 编辑:程序博客网 时间:2024/04/20 07:05

 在面向对象语言中,类与类之间有六种关系。

 一、依赖(Dependency) 


   1.1 操作

     在UML的类图中,用带箭头的虚线连接有依赖关系的两个类,由依赖的一方指向被依赖的一方。箭头可以使用快捷键Ctrl+L变成直角线!

  1.2 定义

  在2个相对独立的类中,一个类作为参数出现在另一个类的操作方法上或者是方法里的局部变量,我们把它们之间的关系称为依赖关系。例如上图:Car作为People类的操作方法参数出现在People类中,则People类依赖于Car(感觉自己定义的不好,通俗些讲就是假设A类的变化引起了B类的变化,则说名B类依赖于A类。)

  1.3 代码示例

package com.lll.design;public class People {public void useCar(Car car){car.run();}}
package com.lll.design;public class Car {public void run(){System.out.println("车子启动...");}}

二、关联(Association)

单项关联

双向关联

   2.1 操作

  在UML的类图中,用带一个箭头的实线表示单线关联。2个箭头或者没有箭头表示双向关联。

  2.2 定义

  当一个对象与另一个对象存在联系时或者说一个类的对象作为另一个类的属性时,那么这两个类存在关联关系。通俗来讲单向关联是当类A使用了类B,其中类B是作为类A的属性。双向关联是类A当中使用了类B作为属性;同时类B中也使用了类A作为属性。

三、泛化关系(Generalization)

  

   3.1 操作

   在UML的类图中,用带一个空心箭头的实线表示泛华关系也称之为继承关系。注意:继承箭头是指向父类的

  3.2 定义

  泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。在java中,用关键字extends表示继承关系。在C++/C#中使用冒号“:”来实现。

四、实现关系(Implementation)


   4.1 操作

  在UML的类图中,用带一个空心箭头的虚线表示实现关系。

  4.2 定义

   表示一个类申明多个方法而不去实现,由实现类去完成方法的具体操作。在java中使用implements表示。

五、组合(Composition)


   5.1 操作

   在UML中,组合关系用带实心菱形的直线表示。

   5.2 定义

  表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。归根结底四个字“同生共死”。

   5.3 代码示例

package com.lll.design;public class Equip {}
package com.lll.design;public class Hero {private Equip equip;public Hero(){equip = new Equip();}}

六、聚合(Aggregation)


  6.1 操作

   UML中,聚合关系用带空心菱形的直线表示。 

   6.2 定义

  和组合一样表示一个整体与部分的关系。不同的是聚合整体与部分可以分开.通常在定义一个整体类后,再去分析这个整体类的组成结构,从而找出一些成员类,该整体类和成员类之间就形成了聚合关系。

   6.3 代码示例

package com.lll.design;public class Room {private Student stu;public void setStudent(Student stu){this.stu = stu;}}
package com.lll.design;public class Student {}
1 0
原创粉丝点击