UML箭头汇总

这篇具有很好参考价值的文章主要介绍了UML箭头汇总。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考:http://www.cnblogs.com/damsoft/archive/2016/10/24/5993602.html

一、UML基础知识

1.UML简介

Unified Modeling Language (UML)又称统一建模语言或标准建模语言。
各个箭头的含义:
UML箭头汇总,数据库,uml

简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他们的主要用途简介:

1.用例图:对系统的使用方式分类.

2.类图:显示类和它们的相互关系。

3.对象图:只显示对象及它们的相互关系。

4.活动图:显示人或对象的活动,其方式类似于流程图。

5.状态机图:显示生命周期比较有趣或复杂的对象的各种状态。

6.通信图:显示在某种情形下对象之间发送的消息。

7.顺序图:显示与通信图类以的信息,但强调的是顺序,而不是连接。

8.包图:显示相关的类如何组合,对开发人员有用。

9.部署图:显示安装已完成系统的机器、过程和部署制品。

10.组件图:显示可重用的组件(对象或子系统)及期接口。

11.交互总图:使用顺序图喧赤活动的务个步骤。

12.时间图:显示消息和对象状态的准确时间限制。

13.复合结构图:显示对象在聚合或复合中的相互关系,显示接口和协作的对象

常用的 UML 图可分静(态)图、动(态)图两类,静态图主要描绘软件的静态结构,而动态图主要描绘软件的动态行为。
常用 UML 动态图(5 个):用例图,活动图,状态机图,序列图,通信图。
常用 UML 静态图(4 个):类图,包图,部署图,构件图。

2.UML类图

在所有UML图中,类图是使用频率最高的UML图。
类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。

类图主要关系有:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)

2.1 泛化

【泛化关系】:是一种继承关系, 表示一般与特殊的关系, 它指定了子类如何特化父类的所有特征和行为. 例如:老虎是动物的一种, 即有老虎的特性也有动物的共性.

【箭头指向】:带三角箭头的实线,箭头指向父类

2.2 实现(Realization)

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

【代码体现】:类实现接口成员

【箭头指向】:带三角箭头的虚线,箭头指向接口

UML箭头汇总,数据库,uml

2.3 关联(Association)

【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;

【代码体现】:成员变量

【箭头及指向】:带普通箭头的实心线,指向被拥有者
UML箭头汇总,数据库,uml

上图,表示企业和员工的关联关系,员工都属于一个企业

除此之外,关联关系允许互相关联,比如夫妻关系,可以互相关联。也允许自关联,即自己也是自己的成员之一。

2.4 聚合(Aggregation)

【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

                聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。 

【代码体现】:成员变量

【箭头及指向】:带空心菱形的实心线,菱形指向整体

UML箭头汇总,数据库,uml

2.5 组合(Composition)

【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。

               组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。 

【代码体现】:成员变量

【箭头及指向】:带实心菱形的实线,菱形指向整体
UML箭头汇总,数据库,uml

2.6 依赖(Dependency)
【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

【代码表现】:局部变量、方法的参数或者对静态方法的调用

【箭头及指向】:带箭头的虚线,指向被使用者

例如:程序员需要依赖计算机
UML箭头汇总,数据库,uml

3.vs2013\2015 中Uml类图的操作

在.NET开发中,我们可以使用VS自有的功能方便设计类图,VS2013旗舰版和VS2015企业版都有建模工程,下面介绍一下如何使用VS建模

(1)在VS中新建,选择”建模项目“,如下:
UML箭头汇总,数据库,uml

(2)打开建模项目,增加一个UML类图

UML箭头汇总,数据库,uml

(3)打开新建的UML类图文件,通过工具栏建立类、接口等,并创建关系

UML箭头汇总,数据库,uml

(4)将设计好的UML类图,生成代码

UML箭头汇总,数据库,uml

(5)查看生成代码

UML箭头汇总,数据库,uml

(6)逆向(由代码生成类图)

在VS中,我们可以将代码很方便的生成UML类图,如下
UML箭头汇总,数据库,uml

3.总结

主要介绍了uml多种图的初步介绍,在着重介绍了下UMl类图,后面会和大家在依次介绍一些常用的Uml图。

UML箭头汇总,数据库,uml
UML箭头汇总,数据库,uml

二、IDEA如何生成类图

1.安装 PlantUML

安装步骤 File -> Settings -> Plugins 搜索 PlantUML ,找到 PlantUML integration 并安装。
UML箭头汇总,数据库,uml

2.安装Graphviz渲染类图

1.在Graphviz官网下载Graphviz;
UML箭头汇总,数据库,uml
2.双击安装包直接下一步进行安装;
UML箭头汇总,数据库,uml
UML箭头汇总,数据库,uml
UML箭头汇总,数据库,uml
UML箭头汇总,数据库,uml
UML箭头汇总,数据库,uml

UML箭头汇总,数据库,uml

3.Graphviz环境变量配置

在开始里面搜索编辑系统环境变量
UML箭头汇总,数据库,uml

打开电脑系统属性选择高级 -> 环境变量添加path变量,变量值为之前安装路径下的bin目录。
UML箭头汇总,数据库,uml

4.cmd验证安装是否成功

环境变量配置完成之后win+Rdot打开 cmd 输入:dot -version,出现版本号则表示安装成功。
UML箭头汇总,数据库,uml

5.PlantUML文档创建

重启IDEA 即可创建 PlantUML File。在任意目录下右键–>New–>PlantUML File,以类图为例,先点击“class”,意为要生成的是类图,再输入文件名,回车,puml文件会新建在该目录下,默认有puml代码。
UML箭头汇总,数据库,uml
生成的图和代码如下:
UML箭头汇总,数据库,uml

6.IDEA与Graphviz集合

打开IDEA,点击FIle–>Settings,搜索PlantUML,点击Browse选择Graphviz–>bin–>dot.exe,点击Apply–>OK。
UML箭头汇总,数据库,uml

uml类图的常见语法和功能

详细的见plantuml官网 类图的语法和功能详细教程

uml类图符号
@startuml
abstract        abstract
abstract class  "abstract class"
annotation      annotation
circle          circle
()              circle_short_form
class           class
class           class_stereo  <<stereotype>>
diamond         diamond
<>              diamond_short_form
entity          entity
enum            enum
exception       exception
interface       interface
metaclass       metaclass
protocol        protocol
stereotype      stereotype
struct          struct
@enduml

uml语言对应的图:
UML箭头汇总,数据库,uml

类和类之间的关系:

类之间的关系是用以下符号定义的。UML箭头汇总,数据库,uml

示例:

UML箭头汇总,数据库,uml

关系上的标签

在关系之间使用标签来说明时, 使用 :后接 标签文字。
对元素的说明,你可以在每一边使用 “” 来说明.
UML箭头汇总,数据库,uml
在标签的开始或结束位置添加< 或 >以表明是哪个对象作用到哪个对象上。
UML箭头汇总,数据库,uml
详情见官网文档。

三、chatGPT辅助生成UML类图教程

今天笔试的时候碰到一道让画类图的题目,按照以前的老方法用visio画太慢, chatGPT又不能直接生成图,所以用这个IDEA的插件试试,自己写UML语句太麻烦,用chatGPT辅助试试。题目如下:

XXX是我们公司的重要客户,它主要生产制造X产品, X产品主要的特征是宽度和颜色。当客户下单时,订单会包含产品类型信息,以及承诺交期信息。生产信息
X产品的生产包括3个步骤:cutting->folding-> packaging。
每个步骤可以使用的机器:cutting(CM1,CM2),folding(FM-IV, FM-X, FM-IX),packaging(PM)
每个步骤必须完成后才能开始下一个步骤
各订单从上工序设备转移至下工序设备的运输时间是10分钟
设备上的切换时间取决于当期订单类型与该设备处理的上一个订单类型(宽度和颜色)的差异,宽度或颜色变化都会导致工艺切换时间5分钟
排产决策:
确定订单的各生产步骤应该在那个设备上加工
确定各设备上订单的生产加工顺序
主要业务指标:
提高按时交货率
提高设备利用率
减少设备空闲时间和工艺切换时间

1.告诉chatGPT帮我生成PlantUML的类图
UML箭头汇总,数据库,uml
UML箭头汇总,数据库,uml
UML箭头汇总,数据库,uml

chatGPT生成的语句:

@startuml

class Customer {
  + 名称: String
}

class Order {
  + 订单类型: String
  + 承诺交期: Date
  + 获取订单信息(): OrderInfo
  + 客户: Customer
}

class Product {
  + 产品类型: String
  + 特征: String
  + 获取产品信息(): ProductInfo
}

class Machine {
  + 设备名称: String
  + 设备状态: String
  - 当前订单: Order
  + 开始生产订单(order: Order): void
  + 结束生产(): void
  + 计算工艺切换时间(previousOrder: Order): int
}

class ProductionStep {
  + 步骤名称: String
  + 所需设备: Machine
  + 订单: Order
  + 分配订单到设备(machine: Machine): void
  + 计算加工时间(): int
  + 转移订单至下一步骤(nextStep: ProductionStep): void
}

class ProductionSchedule {
  + 订单列表: List<Order>
  + 设备列表: List<Machine>
  + 生产步骤列表: List<ProductionStep>
  + 生成生产计划(): ProductionPlan
  + 计算交货率(): float
  + 计算设备利用率(): float
  + 减少设备空闲时间和工艺切换时间(): void
}

class Transportation {
  + 运输时间: int
  + 计算运输时间(): int
}

class SwitchingTime {
  + 切换时间: int
  + 计算切换时间(previousOrder: Order, currentOrder: Order): int
}

class Metrics {
  + 按时交货率: float
  + 设备利用率: float
  + 设备空闲时间: int
  + 计算业务指标(): MetricsInfo
}

Customer --|> Order : 下订单
Order --|> Product : 包含产品
Machine --|> Order : 处理订单
ProductionStep --|> Machine : 使用设备
ProductionStep --|> Order : 包含订单
ProductionSchedule --|> Order : 包含订单
ProductionSchedule --|> Machine : 包含设备
ProductionSchedule --|> ProductionStep : 包含生产步骤
Metrics --|> ProductionSchedule : 包含生产排程
Transportation --|> Order : 包含订单
SwitchingTime --|> Order : 包含订单

@enduml

复制到IDEA中:

UML箭头汇总,数据库,uml
保存图片导出为png格式。
UML箭头汇总,数据库,uml文章来源地址https://www.toymoban.com/news/detail-643016.html

到了这里,关于UML箭头汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里云关系型数据库有哪些?RDS云数据库汇总

    阿里云RDS关系型数据库大全,关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,阿里云百科分享阿里云RDS关系型数据库大全: 目录 阿里云RDS关系型数据库大全 RDS关系型数据库大全 云原生数据库 PolarDB MySQL 版 云原生数据库

    2024年02月07日
    浏览(49)
  • Mysql数据库结构优化汇总

         设计表以最大限度地减少其在磁盘上的空间。这可以减少写入磁盘和从磁盘读取的数据量,从而带来巨大的改进。较小的表通常需要较少的主内存,而它们的内容在查询执行过程中被主动处理。表数据的任何空间减少也会导致更小的索引可以更快地处理。 尽可能使用最

    2024年02月07日
    浏览(49)
  • 数据库应用与开发【实验题汇总】

    实验目的:掌握SQL Server Management Studio集成环境的构成和基本操作,熟悉服务器管理和基本操作,熟悉联机丛书与教程的使用。 实验步骤: (1)SQL Server Management Studio的启动和退出 1)启动SQL Server Management Studio 2)连接服务器选择 3)连接服务器的属性设置 4)身份验证选择

    2024年02月01日
    浏览(40)
  • JDBC数据库汇总Attack研究

    针对除Mysql的其它数据库的jdbc attack分析 H2 是一个用 Java 开发的嵌入式数据库,它本身只是一个类库,即只有一个 jar 文件,可以直接嵌入到应用项目中。H2 主要有如下三个用途: 第一个用途,也是最常使用的用途就在于可以同应用程序打包在一起发布,这样可以非常方便地

    2024年04月22日
    浏览(27)
  • MySQL数据库的DDL语法汇总

    DDL(数据定义语言):针对数据库对象结构的操作,如:数据库、表、视图、索引等 DML(数据操纵语言):对数据库对象中的数据进行操作,比如数据的增删改查 DCL(数据控制语言):授权及取消授权等 TCL(事务控制语言):对事务的控制,如事务的提交及回滚 创建数据库

    2024年02月09日
    浏览(56)
  • 【Flask 连接数据库,使用Flask-Migrate实现数据库迁移及问题汇总】

    Flask 连接数据库,使用Flask-Migrate实现数据库迁移 安装Flask-Migrate插件 使用Flask-Migrate步骤 app.py主要用于数据库连接 model.py 中导入了 db,作用是存储一个User类 ,用于生成表头。 manager.py用于数据迁移管理,运行后将生成一个文件夹。 Flask-Migrate运行 问题汇总 问题一:flask_mig

    2024年01月16日
    浏览(48)
  • 快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图

    一个合格的程序员,要想成长为一个高级工程师,不仅仅需要大量代码的编写,更需要对设计模式具有深入的了解和灵活的应用。从本篇文章开始,我将通过对【尚硅谷设计模式】视频课程的学习总结,尝试以最简单,最通俗易懂的方式完成对设计模式的讲解。 学习设计模式

    2024年02月07日
    浏览(83)
  • SQL Server数据库基础知识汇总

    目录 目录 一、数据库概念 1.1 什么是数据库 1.2 为什么用数据库 1.3 数据库的发展历史 1.4 数据库分类 1.5 DBMS数据库管理系统 二、 SQL(Structured Query Language) 2.1  定义 2.2  SQL分类 2.3 SQL与T-SQL 三、SqlServer下载与安装 四、数据库表各类操作 1 创建数据库登录用户 2 使用DCL赋予数据

    2023年04月09日
    浏览(58)
  • Postgresql数据库中的时间类型汇总

    date :表示日期,格式为YYYY-MM-DD。 time :表示时间,格式为HH:MI:SS。 timestamp :表示日期和时间,格式为YYYY-MM-DD HH:MI:SS。 timestamptz :表示带有时区的日期和时间,格式为YYYY-MM-DD HH:MI:SS TZ。 interval :表示时间间隔,可以是年、月、日、小时、分钟、秒等等。 timezonetz :表示时

    2024年02月15日
    浏览(43)
  • MongoDB数据库从入门到精通系列文章之:MongoDB数据库百篇技术文章汇总

    MongoDB数据库系列文章持续更新中: 更多数据库内容请阅读博主数据库专栏,数据库专栏涵盖了Mysql、SQLServer、PostgreSQL、MongoDB、Oracle、Cassandra等数据库 数据库专栏 文章名称 文章链接 数据库安装部署系列之:部署Mongodb5.0.6高可用集群详细步骤 数据库安装部署系列之:部署M

    2024年02月11日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包