如何绘制「UML类图」

一、UML类图简介

类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法。类图用来描述系统中有意义的概念,包括具体的概念、抽象的概念、实现方面的概念等,是对现实世界中事物的抽象。

二、类图基本属性

类图概括起来主要由两部分组成:类和类之间的关系,其中对类的定义如下图所示,主要由三部分组成,它们分别是类名、类的属性、类的方法,对应图中的三个分区内容。
在这里插入图片描述

  • 类名:图中最上面的矩形框中为类名。如果字体为斜体,表示为抽象类
  • 类的属性:类名下方的区域
  • 类的方法:图中的下面部分

*符号解释
说明:属性和方法前面的“+”“-”和“#”表示访问级别,以下对这些符号进行解释说明。

  • +:public,公用的,对所有类可见
  • -:private,私有的,只对该类本身可用
  • #:protected,受保护的,对该类的子孙可见
  • ~:package,包的,只对同一包声明的其他类可见
  • =:表示默认值
  • 下划线:static
  • 斜体:抽象 (注意也可以用两个尖括号包裹来表示抽象,比如 —— <<我是抽象类or接口>>)
  • 冒号前是方法名/变量名(根据有无括号区分),冒号后是返回参数/变量类型(根据有无括号区分),如果没有冒号的话表示方法返回空(也有人通过:void表示返空)

三、类之间的关系

类之间的关系主要包括泛化(继承)、依赖、关联、聚合、组合和实现6种关系,下面对它们进行一一阐释。
在这里插入图片描述

1、泛化关系

泛化关系是一种继承关系,子类继承父类的所有行为和属性,子类可以新增新的功能或者重写父类功能。
表示方法:空心三角+实线,箭头指向父类
在这里插入图片描述

2、依赖关系

依赖关系表示一个类使用(依赖)另一个类的服务或信息。当一个类的改变会影响到另一个类时,两个类之间存在依赖关系。一般来说,依赖总是单向的,不应该存在双向依赖。

表示方法:尖括号+虚线
在这里插入图片描述

3、关联关系

关联关系是一种拥有的关系,它使一个类知道另一个类的属性和方法。它体现不同类的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强,不存在依赖关系中的偶然性,关系也不是临时的,一般是长期性的。

关联关系分为单向关联或双向关联,也可以有多重性(一对多),双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

表示方法:尖括号+实线,箭头指向被拥有者
在这里插入图片描述

4、聚合关系

聚合关系是关联关系的一种,表示一种“弱”的“拥有”关系,是整体与部分的关系,且部分可以离开整体而单独存在,如车和轮胎是整体和部分的关系,轮胎离开车仍然可以单独存在。

表示方法:空心菱形+实线,菱形指向整体
在这里插入图片描述

5、组合关系

组合关系也是关联关系的一种,是比聚合关系还要强的关系,是整体与个体的关系,但个体不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

表示方法:实心菱形+实线

6、实现关系

实现关系是一种类与接口的关系,表示类是接口所有特征和行为的实现。

表示方法:空心三角+虚线

在这里插入图片描述

四、类图模板案例

为了帮助大家更好的理解类之间的6种关系,下面使用例子辅助大家学习和消化吸收。

1、汽车类图

在这里插入图片描述
汽车类图说明:

  • 车与小汽车和自行车之间是「实现」 关系,使用带空心箭头的虚线表示;
  • 小汽车与SUV之间的关系为泛化关系,使用带空心箭头的实线表示;
  • 小汽车与发动机和轮胎之间是「组合」 关系,使用实心菱形箭头的实线表示;
  • 学生上学需要用到自行车,与自行车是一种「依赖」 关系,使用带箭头的虚线表示。
  • 学生与班级之间是「聚合」 关系,使用带空心菱形箭头的实线表示;
  • 学生与身份证之间为「关联」 关系,使用尖箭头的实线表示;

2、动物UML类图

在这里插入图片描述

3、学生上网UML类图

在这里插入图片描述

4、微信支付类图

在这里插入图片描述

### UML绘制工具推荐 在软件开发领域,UML是一种重要的建模工具,用于描述系统中的静态结构和对象之间的关系。为了高效地创建高质量的UML,可以选择多种专业的绘工具或软件。 以下是几种常用的UML绘制工具: #### 1. **ProcessOn** ProcessOn 是一款功能强大的在线绘平台,支持多种型的表制作,包括但不限于流程、思维导以及 UML 表[^2]。 用户可以通过简单的拖拽操作完成复杂的设计,并且该平台提供了丰富的模板供初学者学习使用。 此外,它还具备团队协作的功能,方便多人共同编辑同一个项目文件。 #### 2. **Lucidchart** 作为另一款流行的云端可视化应用解决方案,Lucidchart 提供了直观易用界面来构建各种业务和技术模型,其中包括详细的 UML 支持选项[^3]。 它允许用户自定义形状属性并调整样式设置以满足特定需求; 同时也集成了许多第三方服务如 Google Drive 和 Microsoft Office Online ,从而增强了数据共享能力. #### 3. **StarUML** 专为软件工程师打造的 StarUML 则专注于提供全面而精确的支持给所有的 OMG 标准化建模语言(OMG Standard Modeling Languages),特别是对于那些希望严格按照官方规范来进行复杂应用程序架构规划的人来说非常合适[^4]. 这种桌面版程序拥有强大灵活定制可能性的同时保持相对轻量级安装包大小以便于快速部署到不同操作系统环境当中去执行任务. ```python # 示例 Python 脚本调用外部 API 获取星型模式 (Star Schema) 数据仓库设计方案片段 import requests def fetch_star_schema_example(): url = "http://example.com/api/star-schema" response = requests.get(url) if response.status_code == 200: return response.json() else: raise Exception("Failed to load star schema example") data = fetch_star_schema_example() print(data['description']) ``` #### 4. **Visual Paradigm** 最后提到的是 Visual Paradigm ,这是一款综合性的 ALM(Application Lifecycle Management 应用生命周期管理 )套件之一,在其中包含了完整的 UML 建模特性集合[^5] 。 不仅如此,其社区版本免费向个人用户提供基本级别的访问权限,足以应对大多数教育目的或者小型企业内部的需求分析工作流场景下的挑战。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值