• UML类图



    前言


    不知道大家有没有跟我一样的情况,UML类图每次看的时候,第一眼,哎我认识,但是每当仔细考究里面的一个东西或关系的时候,就会立马又分不清了。为了增强记忆,便于以后的回顾,在参考了网上的文章后,写下了这篇笔记。

    类图


    定义:类图显示了一组类、接口、协作以及他们之间的关系。

    类图一共分三层:

    1、类名。如果类是抽象类,则类名为斜体。
    2、特型。字段和属性。格式:可见性 属性名: 数据类型[=缺省值]
    3、事件。方法 格式:可见性 方法名(): 返回类型

    可见性:

    + 公有(public);
    - 私有(private);
    # 受保护的(protected);
    ~友好的,表示这个属性可以被同一个包中的类访问;
    _ 表示静态(static)
    斜体表示抽象
    

    关系


    常见的关系有6种:

    继承(Generalization),  实现(Realization),组合(Composition),聚合(Aggregation),关联(Association),依赖(Dependency)

    继承(Generalization)

    继承是指一个类(字类、子接口),继承另一个类(父类、父接口)的功能。字类带有父类的特性和事件,并且可以新增属于自己的特性和事件。

    表示方法:空心三角形+实线

    方向:空心三角形指向父类,即字类指向父类。

    实现(Realization)

    指类实现接口的功能,实现是类与接口之间最常用的关系。

    表示方法:空心三角形+虚线

    方向:空心三角形指向接口,即类指向接口。

    组合(Composition)

    表示强拥有关系,体现了严格的整体和部分的关系,即contains-a得关系,整体和部分的生命周期是一致的。B对象是A对象的一部分,如果A对象不存在,那么B对象也不存在。

    表示方法:实心菱形+实线+箭头

    方向:箭头朝向部分

    示例:鸟和翅膀

    聚合(Aggregation)

    表示一种弱拥有的关系,整体和部分的关系,即has-a关系。体现的是A对象包含B对象,但B对象不是A对象的一部分,两个对象各自有自己的生命周期。也就是说B对象完全可以脱离A对象存在。

    表示方法:空心菱形+实线+箭头

    方向:箭头朝向部分。即整体到部分。

    示例:大雁群和大雁

    关联(Association)

    两个独立的类,其中一个类A包含另一个类B,B类将作为A类的一个属性变量存在。

    表示方法:箭头+实线

    方向:可以是单向的,也可以是双向的。

    依赖(Dependency)

    表示一种使用的关系,就是A类使用了B类,A类需要B类的协助。B类会影响到A类。尽量不要使用双向依赖,不然会造成死循环。

    表示方法:箭头+虚线

    方向:箭头朝向被使用者

    示例:局部变量、方法参数或对静态方法的调用。

    总结


    各种关系的强弱顺序:

    继承 = 实现 > 组合 > 聚合 > 关联 > 依赖

    由于种种关系经常会搞混,经过整理后发现一些规律。

    1、继承和实现

    • 都有空心三角形

    • 继承使用实线,父类真实存在,而且是父子关系,一家人这关系没得说。

    • 实现使用虚线,接口需要实现。

    2、组合和聚合

    • 都有实线+箭头

    • 组合使用实心菱形,你就想啊,鸟和翅膀的关系,翅膀断了,那还不疼的喳喳叫,这关系实打实的。

    • 聚合使用空心菱形,一群大雁,随便走一只,对整个队形也不会由非常严重的影响

    3、关联和依赖

    • 都有箭头

    • 关联使用实线,表示包含,被包含的类将作为属性存在,整个都属于另一个类,所以实线没得说。

    • 依赖使用虚线,表示使用、协助

  • 相关阅读:
    mysql access denied for user root Mysql用户无权限
    远程链接调用sql脚本
    CuteEditor使用详解
    如何设置release模式
    ShardingJDBC不分库,只分表例子
    SpringCloud Stream整合RocketMQ实现消息发送与接收
    Spring Cloud Gateway的PrefixPath及StripPrefix功能
    使用MongoDB的Spring Boot和MongoTemplate教程
    ShardingJDBC读写分离案例
    SpringBoot那些好用的连接池HikariCP
  • 原文地址:https://www.cnblogs.com/imlxp/p/14214826.html
Copyright © 2020-2023  润新知