UML-类图

作者: MoringChen | 来源:发表于2018-12-13 17:33 被阅读9次

类图用来做什么

类图,就是一个类的说明,与java、c++的类是一样的,只不过它是用图表示概括,包括了主要的属性、方法等,至于具体的细节需要真正的类来实现。
类图,可以直观的看出各个类之间的关系,到底是关联关系,还是依赖关系,还是继承关系。
类图对于研究设计模式,有着很重要的作用。

类图由哪些组成

  • 类名
  • 属性
  • 方法
  • 可见性
  • 数据类型
  • 关联关系
  • 依赖关系
  • 继承关系
  • 实现关系
  • 组合关系
  • 聚合关系

看上面类图的组成,是不是和java中的类的组成大致相同。

类名、属性、方法在一个矩形中,分为上中下:


类图.jpg

可见性:

  • private的时候在前方用 - 表示
  • public的时候在前方用 + 表示
  • protected的时候在前方用 # 表示

实例


类图实例.jpg

userName 和 passWord 这两个属性是protected修饰的,数据类型都是String;
login() 和 register() 这两个方法是public修饰的,数据类型都是boolean;
关联关系,用实线表示,例如A关联B:


关联关系

接口实例:


接口实例.png

依赖关系,用虚线表示,例如A依赖B:

依赖关系

继承关系,用一个△ + 一条实线表示,例如A继承B:

继承关系

实现关系,用过一个△ + 一条虚线表示,例如A实现B:

实现关系

组合关系:


组合关系.png

聚合关系:


聚合关系.png

类图举例子:

实例

可以看到,有User类,Customer类,Address类,Role类,Payment类,aliPay类,wechatPay类。

其中Customer 继承 User,User类的userName 和 passWord 这两个属性是protected修饰的,数据类型都是String; login() 和 register() 这两个方法是public修饰的,数据类型都是boolean;

Address和Role聚合User;

Customer依赖Payment;

aliPay 和 wechatPay 实现了 Payment!

依赖、关联、聚合、组合

看了上面的讲述,一定有人会对依赖、关联、聚合、组合这四个关系有些疑惑,现在就来讲讲这四个关系

依赖关系

依赖关系,它是耦合度最弱的关联。
比如说一个人(Person)可以买车(Car),也可以买房子(House),Person类依赖于Car类和House类。
在java中依赖关系表现为局域变量、方法的形参、对静态类方法的调用,如下面的例子:

class Car {
    public static void run(){
        System.out.println("汽车在奔跑");
    }
}
 
class Driver {
    //使用形参方式发生依赖关系
    public void drive1(Car car){
        car.run();
    }
    //使用局部变量发生依赖关系
    public void drive2(){
        Car car = new Car();
        car.run();
    }
    //使用静态变量发生依赖关系
    public void drive3(){
        Car.run();
    }
}

关联、聚合、组合关系

为什么要把这三个放在一起来讲呢,这是因为在java中,这三个都是通过成员变量来实现的,无法但从代码结构判断出来这三个的区别,只有结合上下文语义才能判断。
关联关系

关联关系是笼统的描述,组合和聚合如果你判断不出来,可以直接说是关联关系。

聚合关系

聚合关系是比较强的关联关系,聚合是整体和个体的关系,但是个体可以独立于整体存在,比如汽车与轮胎的关系,轮胎可以脱离于汽车独立存在,轮胎可以共享给其他汽车使用,但是汽车的组成又包括轮胎,

组合关系

组合关系是最强的关联关系了,强调了个体是整体不可分割的一部分,个体不能脱离于整体独立存在,个体不能与其他整体共享,整体消失,个体也跟着消失。

四种关联关系的耦合强度

依赖<关联<聚合<关联

关联关系的数量关系

关联关系数量关系.png

数量关系:

表示 含义
0..1 0或多个
1 1个
0..* 0或多个
1..* 1或多个

(开篇)UML-开篇
(下一篇)UML-组件图

相关文章

  • UML-类图

    UML类图中,常见的几种关系:泛化、实现、关联、聚合、组合、依赖 泛化 定义:是一种继承关系,它指定了子类如何特化...

  • UML-"类图"

    统一建模语言中的类图就是表示类的图,类图主要包含两部分:类的定义、类之间的关系。 类定义:用UML语言的方式表示某...

  • UML-类图

  • UML-类图

    类图用来做什么 类图,就是一个类的说明,与java、c++的类是一样的,只不过它是用图表示概括,包括了主要的属性、...

  • UML-类图-关系

    泛化,就是继承和实现接口。Is-a。 依赖,Class A依赖于Class B,则Class B体现为Class ...

  • UML-类图各功能讲解

    随着开发进度的进展,长期迭代项目需要进行模块化、组件化,到了后期架构图、类图往往是必不可少,针对这样的场景写下这篇...

  • UML-时序图

    序列图(Sequence Diagram),亦称为循序图,是一种UML行为图。有的人翻译为时序图,实际上是不准确的...

  • UML-活动图

    活动图有什么用 活动图描述了一次行为活动的流程,主要强调了行为活动的顺序和条件控制 活动图组成 开始(inital...

  • UML-时序图

    时序图有什么用 时序图是一个很好用很直观的图,它展示了消息是如何在各个对象之间流转的。 时序图的组成 对象(Obj...

  • UML-组件图

    组件图是做什么用的? 组件图是用来描述各个模块之间的相互关系的图。每个模块都有各自的功能职责,但是他们之间相互是如...

网友评论

    本文标题:UML-类图

    本文链接:https://www.haomeiwen.com/subject/kkmbhqtx.html