当前位置:网站首页>如何使用StarUML画类图[通俗易懂]
如何使用StarUML画类图[通俗易懂]
2022-07-31 12:49:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
此篇文档旨在介绍类图以及如何通过StarUML工具画类图。 StarUML官网下载地址:http://staruml.io/download **什么是类图** 类图用于描述系统中所包含的类以及它们之间的相互关系,帮助简化对系统的理解。 **类与接口的表现形式** 矩形框: 它代表一个类(Class)。类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。前面的符号,+ 表示public,- 表示private,# 表示protected。 接口图:与类图的区别主要是顶端的<>显示。第一行是接口名称,第二行是接口方法。 在系统分析与设计阶段,类通常分为三种:实体类、控制类、边界类。 实体类:实体类来源于需求说明中的名词,如学生、商品等。 控制类:控制类一般是由动宾结构的短语(动词+名词)转化来的名词,如增加商品对应有一个商品增加类。 边界类:主要包括界面类,如对话框、窗口、菜单等。
**类与类,类与接口之间常用的关系及UML中的表示法** 1、继承关系 是一种继承关系, 表示一般与特殊的关系, 它指定了子类如何特化父类的所有特征和行为。 表示is-a的关系,用空心三角形 + 实线来表示, 箭头从子类指向父类。
2、实现接口 一种类与接口的关系, 表示类是接口所有特征和行为的实现。 用空心三角形 + 虚线来表示,箭头从实现类指向接口。 3、依赖关系(弱依赖) 在 Java 中体现为对局部变量、方法的参数或静态方法的调用。即一个类调用被依赖类中的某些方法而得以完成这个类的一些职责。例如人买车: Class Person { //人买车。对象“车”,与人之间的关系为依赖关系 Public void buy_car(Car mycar) { ….. } } 依赖关系在UML类图中用虚线箭头来表示。由依赖的一方指向被依赖的一方
4、关联关系(强依赖) 在Java中,关联关系是通过使用成员变量来实现的,它使一个类知道另一个类的属性和方法。 关联又分为一般关联、聚合关联与组合关联;关联可以是单向/双向。(注:双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头) 例如老师与学生的关系,一个老师可能有多个学生,一个学生也可能有多个老师,”多对多的关系”;员工与老板的关系(只有一个老板)”一对多的关系”。在类图用实线箭头来表示,箭头从使用类指向被关联的类。
5、聚合关系 表示has-a的关系,较强于一般关联。有整体与局部的关系,并且没有了整体,局部也可单独存在。 例如公司和员工的关系,公司包含员工,但如果公司倒闭,员工可以依然活着。 在类图用空心的菱形 + 实线箭头来表示,菱形从局部指向整体。
6、组合关系 表示contains-a的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期。是一种更强的聚合关系。部分不能脱离整体存在。 例如公司和部门的关系,没有了公司,部门也不能存在了。 在类图中用实心菱形 + 实线箭头来表示,菱形从局部指向整体:
说明: 安装好StarUML之后,在新建的file中画UML步骤如下: (1)单击左侧“Toolbox”中的选项(非表示关系的线条);然后在中间的画布中单击就可以完成初步的显示。 (2)选中所需要编辑的类/接口,在starUML界面的右下角“Edit”中可以改变字体大小、颜色等。在右上的“Model Exploer”选中的类/接口,可以声明对应的编辑类名、属性、接口名等。 (3)最后一步即需要表示类与接口的间的关系,通过拖拽左侧栏中的关系表示,注意,拖拽的过程中可能会出现“Invailed Connection” 的错误,原因可能是它们之间不属于此类关系or放置的位置不正确。
总:通过以上三步骤基本上能完成一个简单的UML类图了。还需要最后一点说明就是上图中的“接口名处”。最开始添加一个接口Interface的时候,StarUML默认是以一个圆圈表示,即“棒棒糖表示法”。一般通过两层矩形框表示更形象点。所以可以通过以下两步骤去设置即可: (1)选中需要修改的接口图,右键“Format”→“Stereotype Display”→“None” (2)“Format”去掉“Suppress Attributes”和“Suppress Operations”。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128626.html原文链接:https://javaforall.cn
边栏推荐
- 查看Oracle数据库的用户名和密码
- Using SQL Server FOR XML and FOR JSON syntax on other RDBMSs with jOOQ
- FastAPI 封装一个通用的response
- AMBA APB学习记录(AMBA 3/4)
- IDEA连接MySQL数据库并执行SQL查询操作
- ASM module in SAP Ecommerce Cloud Spartacus UI and Accelerator UI
- 【OpenCV】-边缘检测汇总示例
- SAP 电商云 Spartacus UI 和 Accelerator UI 里的 ASM 模块
- CWE4.8 -- 2022年危害最大的25种软件安全问题
- WPF中报错:“未将对象引用设置到对象的实例。”
猜你喜欢
【CPU设计实战】简单流水线CPU设计
ASM module in SAP Ecommerce Cloud Spartacus UI and Accelerator UI
WebGL给Unity传递参数问题1: Cannot read properties of undefined (reading ‘SendMessage‘)
荣耀手机参数写错,客服认为没错
NameNode (NN) and SecondaryNameNode (2NN) working mechanism
PyQt5快速开发与实战 9.7 UI层的自动化测试
Centos7 install mysql5.7 steps (graphical version)
SAP ABAP OData 服务如何支持 $filter (过滤)操作试读版
串的基本概念与操作
CentOS7 installation MySQL graphic detailed tutorial
随机推荐
Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
PyQt5快速开发与实战 10.1 获取城市天气预报
Comparison of ipv4 and ipv6 (IPV4)
IDEA版Postman插件Restful Fast Request,细节到位,功能好用
快速学完数据库管理
365-day challenge LeetCode1000 questions - Day 044 Maximum element in the layer and level traversal
Optimization of five data submission methods
go中select语句
ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
Banyan Tree Loan GPU Hardware Architecture
Cognitive-exercise rehabilitation medical robot application design
消息队列面试题(2022最新整理)
FastAPI 封装一个通用的response
建情人节表白网站(超详细过程,包教包会)
golang中使用泛型
The 2nd activity of the TOGAF10 Standard Reading Club continues wonderfully, and the highlights will be reviewed!
跨境电商小知识之跨境电商物流定义以及方式讲解
基于姿态估计的护具佩戴检测与动作识别
WPF中TabControl动态获取当前选中的TabItem
纷享销客罗旭对话元气森林黄晓枫:零售数字化的终点不是创新,而是数据