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-类图

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