UML类图(Unified Modeling Language Class Diagrams)
统一建模语言(uml) | 类图
什么是uml?
uml是一种用于可视化描述系统,具有广泛用途的建模语言。作为一种标准化的图形语言,在软件工业中被用于软件系统部件的具体化,可视化,结构化描述以及撰写文档,同样在商业模型中也得到应用。
uml的优点:
- 使复杂的软件设计更为简单,也能够实现像oop(面向对象编程)这一类被广泛应用的概念。
- 用理解起来可能更容易的图来描述,避免了大量的文字。
- 是表达和交流概念或系统结构变得更容易。
- 在一张图中就能够描绘出整个系统。
- 程序员实用类图来描述实际需求时,可让问题更加清晰明了,实现起来更容易。
uml的分类
uml通常分为两类:描述结构的uml图(structural uml diagrams)和描述行为的uml图(behavioral uml diagrams),具体见下表:
描述结构的uml图 | 描述行为的uml图 |
|
|
uml | 类图
类图展示出oop中的类,接口,及其中存在的关系,关联与协作。uml在类图中是标准化的。类是oop的主要构件模块,而类图用恰当的结构展示oop中遇到的一切,包括类,继承关系,类关系。它能够描述各种对象和它们之间的静态关系。使用类图的主要目的:
- 类图是唯一能够恰当的展示出oop中各种不同概念的uml。
- 利用类图来对应用程序做出优化的设计与分析高效而快速。
- 类图是部署图和组件图的基础。
类图一般的规则如下:
- 每个类用一个矩形框表示,框内由类名,属性,及定义的操作三个子部件构成。
- 三种表示可见性的修饰符:
- + 表示public
- # 表示protected
- - 表示private
- ~ 表示default(无修饰符)
一些常用的构成模型的组件:
- 类(class){名(name),属性(attribute),方法(method)
- 对象(object)
- 接口(interface)
- 关系(relationships) { 继承(inheritance),关联(association),泛化(generalization)}
- 关联(association){双向,单向(unidirectional,aggregation)}
常用表示关系的组件:
关于绘制类图:
一些在线或离线的软件都能够完成类图的制作,比如edraw max, lucid chart等。如果能在相关网站软件找到模板,制作类图更为方便。
推荐网站,可制作各种各样的diagram,使用很快捷,可保存文件到本地,免费无需登录。之前也经常用来画流程图。
例子:
下图为实现interface和aggregation的类图描述。movablepoint, movablecircle实现movable。movablepoint成为movablecircle一部分。
如下是一张类图,父类animal有两个子类dog,cat。d1为子类dog的对象。
以下为对应代码:
import java.io.*; class gfg { public static void main(string[] args) { dog d1 = new dog(); d1.bark(); d1.run(); cat c1 = new cat(); c1.meww(); } } class animal { public void run() { string name; string colour; system.out.println("animal is running"); } } class dog extends animal { public void bark() { system.out.println("wooh!wooh! dog is barking"); } public void run() { system.out.println("dog is running"); } } class cat extends animal { public void meww() { system.out.println("meww! meww!"); } }
参考资料:
[1]. unified modeling language (uml) | class diagrams - geeksforgeeks
[2]. uml class diagrams tutorial, step by step – salma – medium https://medium.com/@smagid_allthings/uml-class-diagrams-tutorial-step-by-step-520fd83b300b
上一篇: vivo S12 Pro手机评测 打游戏很强的先锋影像旗舰
下一篇: PHP中的日期相关函数(三)