前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UML建模简单入门

UML建模简单入门

作者头像
Coder-ZZ
发布2024-05-27 20:36:39
1200
发布2024-05-27 20:36:39
举报
文章被收录于专栏:C/C++进阶专栏

一,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

代码语言:javascript
复制
#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

代码语言:javascript
复制
#include "People.h"

void People::getName() {

}

void People::getAddress() {

}

void People::setName() {

}

void People::setAddress() {

}

Lawer.h

代码语言:javascript
复制
#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

代码语言:javascript
复制
#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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员与背包客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档