• 使用实例解释UML类图


    使用实例解释UML类图

      在我们的平常工作中,完成某个项目或者功能不可能直接打开项目讲解思路,更多的是使用某种图表来表达我们的思想,其中UML类图就是一种非常便利的手段。

    UML类图基础知识

      类图可以显示项目中不同类的属性、操作以及不同对象之间的关系。

      首先给出一个实例UML类。

    效果图

      类图分三层,第一层为类名,第二层为成员属性,第三层为成员函数。

    第一层

      上图中该类的类名为:Socket,标记为(也可将Socket字段用斜体)表示该类为抽象类,否则为正常字体,无其他标记表示普通类。

    第二层

      成员属性表示格式为:符号 成员属性名 : 数据类型名

      其中,符号有三种,一种是"+":public(共有成员),一种是”-“:private(私有成员),一种是”#“:protected(保护成员)。包括第三层成员函数前面的”+“、”-“、”#“也是同义。

      将# m_uvLoop : uv_loop_t*翻译为C++中类即为:

    class Socket{
    protected:
        uv_loop_t* m_uvLoop;
    }
    
    • 1
    • 2
    • 3
    • 4

    第三层

      成员函数表示格式为:[<<符号1>>] 符号2 函数名(符号3 形参名 : 数据类型,…) : 函数返回值

      其中,符号1可为:static或者const或者两者(表示函数是静态的或者const不变的)。

      符号2同第二层所说。

      函数名如果为斜体,则表示为纯虚函数/虚函数,否则为普通函数。

      符号3可为:in(参数是一个输入参数)、inout(参数既为输入参数也为输出参数,传入传出值)、out(参数是一个输出参数)。

      将<> # UvOnAllocBuffer(in handle : uv_handle_t*, in size : size_t, in buf : uv_buf_t*) : void翻译为C++中的类即为:

    class Socket{
    protected:
        static void UvOnAllocBuffer(uv_handle_t* handle, size_t size, uv_buf_t* buf);
    }
    
    • 1
    • 2
    • 3
    • 4

    TIPS:符号1关于表示函数是否为static或者const的表示方式以及函数名为斜体的含义,来源于互联网,不保证权威性以及正确性,仅供参考使用。

    类与类之间的关系

    参考链接:https://blog.csdn.net/q584401071/article/details/122201102

      UML类图描述的是项目中类与类之间的关系,接下来博主从实际使用的角度出发,简要说明UML类图的各大关系。包括依赖、关联、聚合、组合、实现、继承。其中强弱关系:依赖 < 关联 < 聚合 < 组合 < 实现 = 继承。

    依赖

      人使用用计算机,在人这个类里面用到了计算机,说明二者是依赖关系。

    效果图

    TIPS:简单地说,就是类中某个成员函数的参数用到了某个类,那么就是依赖关系。注意连线表示及方向。

    关联

      如妻子和丈夫,老师和学生,学生和课程,两者需要对方,但是不是包含关系。关联既有单向又有双向。比如学生和课程关联,但是课程不和学生关联,学生需要用到课程,但是课程不需要用到学生。

    效果图

    TIPS:简单地说,两者不为包含关系,且一个类为另外一个类中成员属性容器中的元素,那么就是关联关系。注意连线表示及方向。

    聚合

      如大雁和雁群,一只只大雁组成雁群,但是大雁又能脱离大雁群而存在。这里需要注意大雁和大雁本身,如果一个雁群只有一个大雁,且不会有大雁增加,那么该群体就是一个特例,也就是说是一个单例,对应C++中的单例类。

    效果图

    TIPS:简单地说,两者必须为包含关系,且一个类为另外一个类中成员属性容器中的元素,那么就是聚合关系。注意连线表示及方向。

    组合

      大脑是人体的一部分,作为人体的一部分,即可以理解为作为成员而存在。两者从有这个对象就不可分离。

    效果图

    TIPS:简单地说,就是一个类作为另外一个类的成员属性而存在。那么就是组合关系。注意连线表示及方向。

    实现

      类比于C++的面向对象三大特性之一的动态多态,即虚函数。对抽象类进行实现。

    效果图

    TIPS:注意连线表示及方向。

    继承

      类比于C++的面向对象三大特性之一的继承。

    效果图

    TIPS:注意连线表示及方向。

    应用

      以下应用仅供参考,各类之间的连线关系可能存在错误,并未严格检查。

    效果图

  • 相关阅读:
    java-利用单元测试junit测试接口的多线程并发性能
    pyqt 多线程出现问题
    Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析)
    jetson nano——ubuntu换源
    c++运算符重载
    MySQL索引机制(详细+原理+解析)
    黑客技术(网络安全)自学2024
    Vue3 - Pinia 状态管理(环境搭建安装及各属性使用教程)详细使用教程
    2023年中国缝纫机针行业分类、市场规模及存在问题分析[图]
    java 两个list的交集
  • 原文地址:https://blog.csdn.net/qq135595696/article/details/127417393