简单介绍

为什么先讲组件图,是因为我是由于需要画组件图所以才去找的这个工具。组件图实质就是将一个大系统,拆分为若干功能相对独立,互相之间存在关联依赖关系的组件集合。然后由一张图列出所有组件及它们之间的关联关系。这样我们就可以很直观地初步了解这个大系统的整体情况。

组件可以是一个jar包,可以是一个业务逻辑上功能相对独立的类,也可以是一个完整的子系统或者外部服务等。组件的概念比较松散。

同样以上一篇文章(《捣鼓PlantUML(一、环境)》)中的图作为示范:

这篇文章将参考plantUML官方文档PlantUML_Language_Reference_Guide对组件的画法做一个梳理。(注:画上面这个组件图时,我还没看文档哈!

组件

组件是被中括号[]扩起来的,除此之外,也可以使用component关键字来定义一个组件。每个组件定义之后,都可以通过as关键字来为这个组件定义一个别名。在后面讲关系映射的时候会用到。

@startuml[第一个组件]
[第二个组件] as com2
component 组件三
component [最后一个组件] as com4@enduml

画出的UML图如下:

接口

接口一般是通过括号来定义()(因为它看起来像是一个圆^_^)。除此以外,还可以通过关键字interface来定义。在接口定义好之后,可以通过as关键字来为这个组件定义一个别名。在后面讲关系映射的时候会用到。(注:另外,不用括号,直接写接口名称,也可以直接生成接口。)

@startuml() "第一个接口"
() "second interface" as inter2
interface inter3
interface lastInterface as inter4@enduml

画出的UML图如下:

基本关系示例

组件与组件、组件与接口之间的关系,通过两点..或者两短线--和尖括号表达>(-->)的组合来表达。

@startuml() "数据访问接口" - [第一个组件]
[第一个组件] ..> () "HTTP" : use@enduml

由于接口定义的括号可以省略,因此也可以写为:

@startuml数据访问接口 - [第一个组件]
[第一个组件] ..> HTTP : use@enduml

画出的UML图如下:

注释便签

每个组件上都可以添加注释便签,以便做进一步的说明和注释。这是通过note left ofnote right ofnote top ofnote bottom of关键词来定义的。

除此以外,还可以仅通过note关键词来定义个注释标签,然后通过..将它与具体的组件绑定。

@startuml数据访问接口 - [第一个组件]
[第一个组件] ..> HTTP : usenote left of HTTP : 这是一个web服务接口
note right of [第一个组件]
注释便签也可以像这样,
用多行来表示。
end notenote "先定义后绑定的方式" as note1
note1 ..  数据访问接口@enduml

画出来的UML图如下:

组合组件

一些组件合起来可以组合成一个更大的相对独立的逻辑业务。为了系统组件图看起来逻辑更清晰直观,往往需要我们将这些组件组合起来。

将组件组合起来的关键字有以下这些:

  • package
  • node
  • folder
  • frame
  • cloud
  • database
@startuml

package "包组合" {HTTP - [包一组件][包二组件]
}node "节点组合" {FTP - [节点一组件][包一组件] --> FTP
}cloud "云服务" {[云里一]
}database "数据库服务" {folder "文件夹组合" {[文件夹一]}frame "帧组合" {[帧二]}
}[包二组件] --> [云里一]
[云里一] --> [文件夹一]
[文件夹一] --> [帧二]@enduml

画出的UML图如下:

关系的箭头方向

我们一般使用两个短横线箭头-->或者两个点箭头..>,表示的是箭头方向是垂直的,由上指向下。如果使用单横线箭头->或者单点箭头.>则箭头方向水平。

@startuml[组件] --> [我在下面]
[组件] -> [我在右边]@enduml

UML图如下:

除此以外,还可以改变箭头的指向向左。例如<-- 或者 <..
但是不管表达式中的箭头方向如何,一定是表达式左边组件在左或者在上,右边组件在右或者在下。

@startuml[中间] --> [下面]
[中间] -> [右边]
[左边] <. [中间]
[上面] <.. [中间]@enduml

UML图如下:

另外还有一种办法可以改变箭头的方向。就是在短横线或点中间,加入leftrightupdown关键字。

@startuml[中间] -right-> [右边]
[中间] -down-> [下面]
[中间] .left.> [左边]
[中间] .up.> [上面]@enduml

生成的UML图与上面完全相同。

设置标题

使用title关键字就可以为UML组件图设置标题。可以用title配合end title来设置多行标题。

@startumltitle UML图标题数据访问接口 - [第一个组件]
[第一个组件] ..> HTTP : use@enduml

UML图如下:

UML2风格

通过skinparam componentStyle uml2指令,可以将UML组件图风格切换为UML2风格。我们以上一个图为例,使用UML2风格,看看有何不同。

@startumlskinparam componentStyle uml2title
UML图标题
可以吗?
end title数据访问接口 - [第一个组件]
[第一个组件] ..> HTTP : use@enduml

UML2风格图如下:

个性化颜色

在组件定义完成后,可以手动指定组件的颜色。

@startumlskinparam componentStyle uml2title
UML图标题
可以吗?
end title[第一个组件] #00ff00
数据访问接口 - [第一个组件]
[第一个组件] ..> HTTP : use@enduml

UML图如下:

在Stereotype中使用像素格式小图标

UML中的Stereotype意思是你自己定义的模块风格。通常用两对尖括号声明<<>>

@startumlrectangle "module" <<mine>> {rectangle "handler1" <<mine>> as h1rectangle "handler2" <<mine>> as h2h1 -> h2
}@enduml

UML图如下:

我们可以看到,此处组件上多了<<mine>>标记,从而确认是自定义的模块。但是这个文字内容不便于识别,特别是有多个种类的自定义模块时。PlantUML支持此标记用像素格式的小图标来标记。

@startumlsprite $mine [16x16/16] {FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF00FFFFFF00000000000FFFFF000000000000FFFF00000000000FFFFFFFFFFFFF00FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
}rectangle "module" <<$mine>> {rectangle "handler1" <<$mine>> as h1rectangle "handler2" <<$mine>> as h2h1 -> h2
}@enduml

UML图如下:

skinparam修改外观

你可以通过skinparam指令改变组件的颜色和字体。可以在以下三种场合中使用skinparam指令:

  • 在图表的描述文件中,像其他指令写法一样
  • 写在一个包含文件中
  • 写在一个配置文件中,然后提供给图表文件作为指令,或者提供给ANT编译时指定
@startumlskinparam interface {backgroundColor RosyBrownborderColor orange
}
skinparam component {fontsize 13backgroundColor #AAAAAAborderColor #FF6655fontName 微软雅黑arrowFontName ImpactarrowColor greenarrowFontColor red
}
[组件] -left-> 接口 : arrow
[组件] -down-> API
API .> [客户端]@enduml

UML图如下:

我们可以通过这种方式来定义stereotype的颜色和字体。

@startumlpackage "包包" <<myPack>> {[组件] <<myComp>>
}
package "普通包" {[普通组件]
}
skinparam package {backgroundColor<<myPack>> grey
}
skinparam component {backgroundColor<<myComp>> #0000FF
}@enduml

UML图如下:

至此,PlantUML画组件图的相关知识点梳理完毕~

捣鼓PlantUML(二、组件图)相关推荐

  1. 捣鼓PlantUML

    捣鼓PlantUML(一.环境)http://blog.csdn.net/zh_weir/article/details/53006537 捣鼓PlantUML(二.组件图)http://blog.c ...

  2. 捣鼓PlantUML(三、时序图)

    简单介绍 时序图(Sequence Diagram),又名序列图.循序图.顺序图,是一种UML交互图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作.它可以表示用例的行为顺序,当执行一 ...

  3. 捣鼓PlantUML(一、环境)

    PlantUML简单介绍 PlantUML是一个用文本描述画出UML图的工具.很早之前在CSDN一篇博客中看到别人家的UML又简洁又大方,当时就想知道是用什么软件画的.现在知道了,就是用PlantUM ...

  4. 自己捣鼓日历选择组件(类似el-calendar)可以单击选则不同日期,也可范围选择日期

    需求: 左边日历,选择日历中的日期,右边把选择的日期显示到表格中去 每个日期显示一行数据,左侧日期点击选中再次点击取消,取消右边表格数据也跟着取消 日历中的日期可以进行多个选则,这里不进行范围选则而是 ...

  5. UML(二)component 组件图

    组件图即是用来描述组件与组件之间关系的一种UML图.组件图在宏观层面上显示了构成系统某一个特定方面的实现结构. 组件图适用于基于组件的开发模式(Component-Based Development, ...

  6. 使用 PlantUML 绘制时序图

    目录 一.简介 二.安装 1.1 安装插件到PyCharm 2.2 验证 2.2.1 插件检查是否安装 2.2.2 新建PlantUML文件 一.简介 Github地址:https://github. ...

  7. 不务正业,捣鼓了一个破网站,全过程记录

    文章目录 为什么会有这个网站 预览几个页面 网站的缺陷 网站搭建过程 1. 服务器 2. 域名 3. html + js + css 4. 图片转换 5. 安装 web 服务器 6. 站点部署 小结 ...

  8. 第0节为啥捣鼓Busybox-Vi

    一.Busybox是啥? Busybox是嵌入式系统中用于制作根文件系统的主流工具软件.既然是根文件系统,那么,在根文件系统中具备编辑文本的功能将是非常有必要的. 二.什么是Busybox-vi 在嵌 ...

  9. 记录一下利用手机捣鼓的一些东西吧

    手机排版将就看吧,具体操作自己研究这里只提供思路方向 前言:因为一些事情,所以回家了,电脑也没带,暂时回不去学校,新买的电脑也还没到 就只能用手机捣鼓和总结一些东西了,这里写一些出来,给大家提供一些思 ...

最新文章

  1. 在哪个公众号学python好_怎么通过公众号来快速学习python编程?
  2. “三通一达”创始人均来自桐庐 有的村人均GDP上亿
  3. Ubuntu11.10配置Eclipse下Android开发环境
  4. [centos][ntp][administrator] chrony ntp
  5. CImage类显示图片
  6. css3修改透明png颜色
  7. yum 安装nginx
  8. eclipse 构建maven web工程
  9. web前端学习(二十八)——CSS3下拉菜单的相关设置
  10. cad计算机快捷键命令大全,cad快捷键命令有哪些?常用cad快捷键命令大全
  11. pdf转换成word转换器注册码
  12. html调用js里面的函数,html如何调用js函数
  13. 基于JWT的API权限鉴定
  14. python接口自动化之自动发送测试报告邮件
  15. 【企业】奥卡姆剃刀定律,把握环境的价值
  16. 读《把时间当作朋友:运用心智获得解放》
  17. 类似微信5.x朋友圈的弹出框评论功能
  18. 计算机科学与技术补中益气丸的成分,补中益气丸的成分是什么
  19. u盘启动 联想一体机_联想一体机如何进入bios设置u盘启动_联想一体机设置U盘启动步骤...
  20. 室内声场计算机模拟的声线跟踪法和虚声源法,建筑物理课件.ppt

热门文章

  1. 斩获BAT-offer的阿里大佬的腾讯百度实习经历分享
  2. php删除二维数组元素_php二维数组如何删除元素
  3. 读书笔记:《流畅的Python》第15章 上下文管理器和else块
  4. 系统软件各类问题汇总
  5. python spyder安装错误分析
  6. 在AI时代重新思考人机共生:理解人类在人机系统的最理想角色
  7. 关于大学校园联网解决办法
  8. 篮球赛常规赛和季后赛matlab,职业篮球常规赛和季后赛到底有什么不一样?
  9. 【英语】第三人称单数的使用
  10. 华为云如何购买并登录Windows弹性云服务器?