一,UML建模语言介绍
UML的全称是Unified Modeling Language,被翻译为"统一建模语言",它为不同领域的人们提供了统一的交流方法。
UML与其他工程领域中使用的设计蓝图十分相似,在软件开发的架构设计场景中经常被使用。
UML建模语言是一种绘图时使用的可视化建模语言,并不是特定的编程语言。但是在实际使用时,基于特定的工具比如StarUML,我们可以基于UML类图生成C++、Java、Python等编程语言的源码,也可以将这些编程语言的对应源码转换为UML类图。
UML的使用与面向对象的设计思想相关联,它的主要目标是以面向对象的方式来描述任何类型的系统。
UML除了被用于描述软件工程领域的系统,也可用于描述非软件工程领域的系统,如企业机构、工业系统等。在软件工程领域,UML的使用贯穿了从需求分析、系统软件构建到软件测试的整个过程。
UML常见应用场景:
二,常见的UML图表
常见的UML图表有以下九种:
用例图(use-case diagram)
类图(class diagram)
对象图(object diagram)
状态图(state diagram)
时序图(sequence diagram)
协作图(collaboration/communication diagram)
活动图(activity diagram)
构件图(component diagram)
部署图(deployment diagram)
1.用例图(use-case diagram)
由外部参与者和系统组成。
描述该用例的系统行为,不描述用例的实现细节。
基于用例图可以看出这个系统所提供的功能。
2.类图(class diagram)
由各种静态的类所组成。
描述了系统内部,类与类之间的联系。
基于类图可以看出这个系统所包含的主要的类和成员函数。
3.对象图(object diagram)
对象图可以理解为类图是实例。
4.状态图(state diagram)
状态图可以作为对类描述的补充。
基于状态图可以看出一个类的对象所经历的各种状态,以及导致状态变化的事件。
5.时序图(sequence diagram)
描述了几个对象之间的动作时序。
常用于分析对象之间传递消息的顺序。
6.协作图(collaboration/communication diagram)
功能与时序图类似,它除了描述信息的传递,还描述了对象之间的关系。
7.活动图(activity diagram)
描述了一个完整操作所经历的几个活动。
8.构件图(component diagram)
描述了构件之间的依赖关系。
9.部署图(deployment diagram)
描述了系统软件与硬件的物理结构。
三,UML建模语言的构成
1,基本的模型元素
(1).参与者(Actor)
(2).用例(use case)
(3).类(class)
(4).对象(object)
(5).接口(interface)
(6).子系统(subsystem)
(7).包(package)
(8).组件(component)
(9).节点(node)
(10).注释(comment)
2.模型元素之间的关系
(1).继承关系:Inheritance (generalisation)
(2).实现关系:Implementation(realisation)
(3).依赖关系:Dependency
(4).关联关系:Association
(5).聚合关系:Aggregation
(6).组合关系:Composition
以上关系结合实际场景,如图所示:
四,UML建模绘图步骤
step.01: 确认UML的使用场景
确认UML图用来描述某种结构还是时序。
step.02: 确认元素和关系
确认需要在UML图中描述的关键元素(类、对象、用例等)及其之间的关系。
step.03: 选择合适的UML图
选择最适合建模场景的UML图,常见类型包括类图、时序图、构建图等。
step.04: 绘制粗略草图
在使用UML建模工具之前,在纸上或白板上尝试绘制粗略草图。
step.05: 选择UML建模工具
根据偏好和功能要求,选择合适的在线或离线的UML建模工具。
step.06: 创建UML图表
在UML建模工具中创建新项目或关系图,开始向图中添加元素(类、状态、参与者等),并将这些元素用合适的关系(继承、依赖关系等)联系起来。
step.07: 定义元素的属性
对于关系图中的每个元素,指定相关属性。例如类属性、类方法、用例详细信息等。
step.08: 添加注释
通过添加注释来增强图表的清晰度和可读性。
step.09: 验证和审查
检查图表的准确性和完整性,根据预期结果验证图表并进行微调。
step.10: 优化和迭代
UML图伴随着系统的不断优化而不断迭代。
step.11: 生成图表、文档、代码
基于UML工具生成类图的图表,类文档,以及代码实现。
五,常用的主流UML绘图工具
软件名 | 免费or开源 |
---|---|
StarUML | 否 |
Enterprise Architect | 否 |
PlantUML | 是 |
PowerDesigner | 否 |
Microsoft Visio | 否 |
Draw.io | 是 |
Visual Paradigm | 是 |
六,UML建模绘图实战
1.UML类图样例:
绘制工具:StarUML
场景:由"People"类衍生出的"Lawer","Programmer"两个子类。
2.代码生成结果
a.代码结构:
b.主要代码逻辑:
People.h
#ifndef _PEOPLE_H
#define _PEOPLE_H
class People {
public:
std::string name;
void getName();
void getAddress();
private:
std::string address;
int id_number;
void setName();
void setAddress();
};
#endif //_PEOPLE_H
People.cpp
#include "People.h"
void People::getName() {
}
void People::getAddress() {
}
void People::setName() {
}
void People::setAddress() {
}
Lawer.h
#ifndef _LAWER_H
#define _LAWER_H
#include "People.h"
class Lawer: public People {
public:
int salary;
std::string job;
void lawSuit();
void getJobName();
};
#endif //_LAWER_H
Lawer.cpp
#include "Lawer.h"
void Lawer::lawSuit() {
}
void Lawer::getJobName() {
}
八,参考阅读
https://www.drawio.com/blog/uml-class-diagrams
https://www.geeksforgeeks.org/unified-modeling-language-uml-class-diagrams/
https://github.com/imalitavakoli/learn-uml2/tree/master
https://sparxsystems.cn/resources/uml2_tutorial/