使用实例解释UML类图

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

UML类图基础知识

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

  首先给出一个实例UML类。

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

第一层

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

第二层

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

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

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

class Socket{protected:uv_loop_t* m_uvLoop;
}

第三层

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

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

  符号2同第二层所说。

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

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

  将<<static>> # 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);
}

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

类与类之间的关系

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

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

依赖

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

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

关联

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

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

聚合

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

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

组合

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

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

实现

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

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

继承

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

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

应用

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

使用实例解释UML类图相关推荐

  1. 用 C++ 示例解释 UML 类图

    如您所知,类图是显示系统中不同类的属性.操作以及不同对象之间关系的图. 即使我已经使用它很长时间了: 每次使用的时候总是很混乱. 这篇文章就是为像我这样的人准备的: 对初学者也有帮助,这里我将用C++ ...

  2. C++基础——用C++实例理解UML类图

    类展示 基本概念及术语 可见性visibility 参数的方向parameter direction 类成员变量或者函数的类型 类关系 关系的多重性multiplicity 类关系 assocatio ...

  3. UML类图实例 (动物)

    首先是复习一下UML中九种图的理解:http://xhf123456789plain.blog.163.com/blog/static/172880482201192222144421/ 画用例图:h ...

  4. UML类图符号标识符解释

    来自:http://liuchuxiong2003.blog.sohu.com/168088327.html 类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统.类图是静态 ...

  5. uml类图设计系统详解实例

    UML 类图 2009-11-21 14:03        by         闫妍,         1098         阅读,         ...         评论,       ...

  6. java uml类图举例,uml类图(uml类图实例作业)

    原发布者:dzq21cn 第4章UML类图[学习目标]·定义类图·为什么要建模类图·类图的主要标记符号·如何建模类图4.1UML基本类图面向对象设计的基础就是使用类.. UML是统一建模语言,一般用来 ...

  7. UML类图关系大全 and 报表的基本用法

    UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在 GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描 ...

  8. UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...

  9. 浅谈UML类图中类之间的5种关系

    什么是UML类图? 类图显示了一组类.接口.协作以及他们之间的关系.在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统.类加上他们之间的关系就构成了类图,类图中还可以包 ...

最新文章

  1. Flutter开发之《头条 Flutter iOS 混合工程实践》笔记(54)
  2. opencv图像清晰度计算_收藏|分析君带你认识Python中的十大图像处理工具
  3. iOS9 : Storyboard References
  4. flutter图片预览_Flutter 视频缩略图
  5. python 数字转十六进制_在Python中将整数转换为十六进制
  6. Wildfly Swarm,朝着成熟和一小部分贡献
  7. SocketServer模块,hmac模块验证client合法性
  8. instagram架构_如何创建像Instagram这样的照片共享应用程序:基本知识。
  9. 张平文院士:展示计算数学的魅力
  10. ipcp协议 Linux,Linux命令Man解释:PPPD(8) :点对点daemon协议
  11. 利用Flash读取SQL Server数据库的值
  12. oracle入门很简单豆瓣,Oracle入门经典
  13. cxgrid定位在第一行并显示内置编辑器
  14. Charles 4.2 HTTPS抓包,乱码设置,证书信任,证书安装
  15. 解决origin8 licience 过期问题
  16. android高仿微信表情输入与键盘输入(详细实现分析)
  17. 雷迪9000使用说明_雷迪司UPS监控软件使用说明中文
  18. 【HUST】网安|操作系统实验|实验一 内核编译、系统调用、编写批处理脚本
  19. 利用指针访问opencv Mat类型的矩阵,以及求椭圆方程的函数
  20. 开心一笑:关于金融贷款的幽默段子

热门文章

  1. 页面置换之最近最久未使用置换算法
  2. 封装型号对照_多图预警,17种元器件PCB封装图鉴
  3. MSBuild 官方详解
  4. 2021年上海市安全员C证考试试题及上海市安全员C证操作证考试
  5. 阿里云经典web架构分析
  6. [数据与处理]归一化(连续值和离散值)
  7. C# 计算散点数据 离散值
  8. python模块-CV2
  9. 图像美学质量评价技术总结
  10. NYOJ - [第八届河南省程序设计大赛]引水工程(最小生成树)