UML中类图的六种关系

          UML的类图中,一共有以下六大关系:泛化(Generalization), 实现(Realization), 依赖(Dependence),关联(Association),聚合(Aggregation) ,组合(Composition)。

1、泛化(Generalization)

       即继承,是对象之间耦合度最大的一种关系,子类继承父类(或者是子接口继承父接口),在Java中使用extends关键字来表示,在类图中使用带三角箭头的实线表示,箭头从子类指向父类。

 

2、实现(Realization)

       指的是两个实体之间的一种合同关系,一个实体定义一个合同,而另外一个实体保证履行该合同,这就对应于Java中的一个类实现了一个接口,Java中使用implements 关键字来表示,在类图上,使用虚线 + 空心三角形的方法来表示,箭头从实现类指向接口

 

3、依赖(Dependency)

       可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用,或者类A引用了类B的静态方法;在类图上,使用虚线 + 箭头来表示,箭头的方向,从依赖的类指向被依赖的类

 

4、关联(Assocation)

       就是对象之间的一种依赖关系,比如客户类和订单类之间的关系,这种关系通常使用类的属性表达。关联又分为一般关联、聚合关联与组合关联. 表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量,如new BufferInputStream(new FileInputStream("c:\\1.db"));。在类图使用带箭头的实线表示,箭头从使用类指向被关联的类可以是单向和双向

例:

// 人和电脑
class Person{
}
Cmoputer cmoputer{
}
// 形式1:
Computer类是public的,Person类可以调用它
// 形式2:
class Person{
    public void Programing(){
        Cmoputer cmoputer = new Cmoputer();
    }
}
// 形式3:
class Person{
    public Cmoputer Programing(Cmoputer cmoputer){
        return 0;
    }
}

 

5、聚合(Aggregation)

       聚合算是关联的一种形式,是一种不稳定的包含关系。较强于一般关联,有整体与局部的关系,并且没有了整体,局部也可单独存在。如公司和员工的关系,公司包含员工,但如果公司倒闭,员工依然可以换公司。在类图使用空心的菱形表示,菱形在整体的那一侧

例:

// 以person 和address为例,人和衣服的关系
public class Address{} //衣服类
public class Person //人类
{
   private Address address;
   public Person(Address address) {
        this.address=address;
   }
}

 

6、组合(Composition)

       是一种强烈的包含关系。组合类负责被组合类的生命周期。是一种更强的聚合关系。部分不能脱离整体存在。在代码层面,为类中的成员数据是另一个类的对象如公司和部门的关系,没有了公司,部门也不能存在了;调查问卷中问题和选项的关系;订单和订单选项的关系。在类图使用实心的菱形表示,菱形从局部指向整体。

// 以汽车和引擎为例  
Public class Engine{}//引擎类
Public class Car//汽车类
{
    Engine e =new Engine()    //在车中进行实例化引擎类,Engine对象是在car对象中创建的
}

 

7、多重性(Multiplicity)

用于说明组合关系中的对象的对比数量(),通常有以下符合:

  • 1 :一个
  • :零个或多个
  • 1..* :一个或多个
  • 0..1 :零个或一个

比如:

一个公司可能有一个或多个部门,公司和部门的关联关系上,部门端是 1..*

一个部门只能属于一个公司,在关联关系上, 公司端是 1

一个公司有一个公司名称,在公司名称那端是 1

一个公司名称只能属于一个公司,在公司那端也是 1

一个公司可能有一个或者多个董事,在董事那端是 1..*

一个董事也可以在多家公司任职,所以在公司那端也是 1..*

 

原创文章 99 获赞 68 访问量 3万+

猜你喜欢

转载自blog.csdn.net/King_weng/article/details/104756688