zoukankan      html  css  js  c++  java
  • UML类图中的几种关系的画法和含义

    UML的类图中,一共有以下六大关系:

    泛化(Generalization), 实现(Realization), 依赖(Dependence),关联(Association),聚合(Aggregation) ,组合(Composition)

    下面结合具体的类图来描述以下这几种关系

    泛化(Generalization)

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

    实现(Realization):

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

    依赖(Dependency)

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

    关联(Assocation)

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

    聚合(Aggregation)

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

    组合

    组合(Composition):表示contains-a的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期。是一种更强的聚合关系。部分不能脱离整体存在。如公司和部门的关系,没有了公司,部门也不能存在了;调查问卷中问题和选项的关系;订单和订单选项的关系。在类图使用实心的菱形表示,菱形从局部指向整体。

    多重性(Multiplicity)

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

    1 :一个

    * :零个或多个

    1..* :一个或多个

    0..1 :零个或一个

    比如:

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

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

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

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

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

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

  • 相关阅读:
    php 开发最好的ide: PhpStorm
    mediawiki 的使用
    php 的简单易用的调式方法,打印方法
    mysql 管理、备份、还原及查询的图形化gui工具
    遇到了一个问题,php数组的
    CentOS如何安装linux桌面?
    Linux mkdir 如何递归创建目录?
    VMware
    Linux中setup命令command not found如何解决?
    PotPlayer 如何设置多屏幕全屏播放
  • 原文地址:https://www.cnblogs.com/jiaoyiping/p/9769835.html
Copyright © 2011-2022 走看看