精华内容
下载资源
问答
  • 使用EA进行系统设计中常用画法1.1静态视图1.1.1包图创建包图包图是最常用的,因为我们的工程通常都是有层层构成的,例如如下的一个包图:包中的属性的隐藏方法见显示隐藏,双击缺省会可以打开其内部第一...

    使用EA进行系统设计中常用图的画法

    1.1静态视图

    1.1.1包图

    创建包图:

    8c73f15714075ae33355a3d0fbc3399b.png

    包图是最常用的图,因为我们的工程通常都是有层层包构成的,例如如下的一个包图:

    908279551f51cb80e739d983c8f2f81e.pngccd08630d26a87342b9a6e6a18d4545d.gif

    包中的属性的隐藏方法见显示隐藏,双击包缺省会可以打开其内部第一个视图,这也是一个显示的技巧可以通过Project Browser的工具栏e36766a79703da9e17b430a5016fe299.png 来调整视图的顺序。

    1.1.2类图

    创建类图:

    820b8547e4ec7a63a0b411884025ccb2.png

    属性、方法的设置:

    a) 右键class,在弹出菜单中选择Attributes设置属性,在Operations设置方法:

    895888c07b20a0b141941a59a21242cc.png

    b) 双击class在弹出的Properties中通过Details标签页设置:

    42a7361e5d56496a76e6c68ead81c17f.png

    481519c8006e6d8f5d20e1d8c2d0dc19.png

    354c351d3cb958f5ef90ee0a6da76567.png

    类关系的建立:

    通过点击单击一个类,点击弹出的创建关系工具图标,并拖动到要建立关系的class上:

    9681dcaea31ab78523d1357666df7c70.png

    松开左键,在弹出的关系菜单中选择要建立关系的类型:

    7185ef47c94d0fd84774f8e2fb0a107b.png

    例如,选择了Generalization的关系,会弹出要覆盖的方法:

    d055cabf9c93f2ace8947a73621ee54a.png

    点击确定后,关系建立完成:

    ec7077894d35744f08f2430e120aaa94.png

    有的是时候关系是聚合时,需要表示其之间的关系,如一对多关系,则需要双击连接,通过Source Role和:Target Role来设置:

    f044e37f8c587ba3525558ed162bc1ed.png73ae0716ca0a4ea98af07900b0f7e6c5.png

    创建关系如下:

    b901c4433797a44f9f6874843149c19e.gif

    1.1.3鲁棒图

    创建方法:

    4e9ec76deb683cd8381c8c2876edab1b.png

    在需求分析和场景分析中经常会用到鲁棒图,鲁棒图分为边界对象、控制对象和实体对象三种元素。使用鲁棒图的三种元素能很好地概括系统中的三类职责:交互、控制、信息。

    486a8fa22124c93c9fa04c6c3890ff33.gif

    鲁棒图三种元素与MVC间的关系

    8fbd64f773c5d55c07680db2e37d8c9d.png

    鲁棒图建模规则:

    f8e689a8c555dfc30093d4c0669bd9d0.png

    1.1.4组件图

    创建组件图:

    4115922e063866d4c1bbbf7147e181c6.png

    对于子系统划分或模块划分等设计工作常用到组件图,这里仅介绍接口依赖的表示方法。

    通过组件图工具箱的a9a477b69d1a3789a2e69506bb86e446.png可以为组件建立接口,组件接口依赖关系表示:

    1.2动态视图 1.2.1用例图

    创建方法:

    cc190410798dc73298b6c0dbcc5afb5f.png

    大家经常画的图,只说明注意用例间会有多种关系:

    c4087805fe0ea41f43515c6c7146c177.png

    常用的几种关系:由左至右是实现、依赖、扩展

    9fdea3d6fdd0c09532cf0af73ea3f2ce.png

    除用例图外,对于需求,我们还可以使用UML扩展的需求图:

    创建方法:

    5dcc573d48dc3b2913dababfd2f68070.png

    需求分为需求和特性元素,摸个需求可以与多个特性关联:

    ab6a9feb4ce518334d1c2c3ed2c309d0.gif

    另外需求可以有多种类型,不同类型的需求用不同颜色代表:

    339c2ba91a32a7b14d630fdeab80e4cf.png

    要显示不同类型需求为不同的颜色,需要确保Options中的如下设置:

    fbe9949e0c1b4368595a21e321f5cd03.png

    1.2.2活动图

    创建活动图:

    8924a62f953638a73d329b0339b002d9.png

    活动图多用于描述流程需要展开的活动,多用于描述场景流程使用,常用画法:

    3ed055c6d0be732d4e9a2d8ff1ef1352.png

    如果要体现活动中到执行者的分工,可以引入泳道:

    cbdc9fb89432e93b4ced5f904e64d4f6.gif

    改变泳道方向可以单击泳道,点击右上角的工具图标,实现:

    772bd92c0e836f7fdbde6ec5210c0de5.png

    1.2.3时序图

    恐怕是表达流程最长用到的图了,如发现设备的一个时序图:

    d7552e3b4c279287fd330453506a28dd.png

    只介绍几这里涉及的技巧,

    a) 主要消息的类型是异步还是同步,异步为07c9d9f7ebe5ccc73db63fdb8c75de19.png,而同步箭头为:b75f47fb712830fa0e0e312fd89f6448.png

    设置方法是双击Link,在弹出的属性对话框中,设置如下:

    d5f5e2e0afa3e1f4261ca624afa22409.png

    b) 如果对象不是整个时间轴的,而是临时创建的在生命周期设置为new:

    2abb2f9909a3462da06ea0a0f36dd6d6.png

    c) 如果同步方法,需要有返回消息,则主要返回消息为虚线的且为异步消息,返回消息的设置方法:

    d7c30bea5cee52fc5d2c87df4a4856aa.png

    1.2.4协作图

    与时序图相比,协作图更好的体现对象间的关系与子流程

    708510734a1a5b7d5054cfc9f102ea99.png

    如何画协作图:

    a) 先通过Direct Link将对象关系画好:

    94720a1e7be401359657e7898f1a7bd7.png

    b) 右键流程中第一个Link,对其添加消息:

    94fe88f03e74c995f804e0a40a0b9c87.png

    如果创建的是新的流程的消息,需要框选“Start New Group”,否则不要勾选

    e0839cb4c28cd92c8510632b31f35cfa.png

    如下图,编号为2的连接上我们需要选中“Start New Group”

    eb31bbf1fbfdab42417a8d862e073b6b.png

    有的时候需要调整消息的顺序,有两种方法:

    a) 右键任意消息,在弹出菜单,如下图选择

    a2eb868e40ff09b2ba4b11b4699c256b.png

    b) 或者通过Diagram菜单选择Sequence Messages:

    4373aa9b777ca40f1d8d7296ca6d036f.png

    都将弹出如下界面来设置消息的顺序:

    34b8ea9fe349e6e4a422f1afe39bdfa7.png

    展开全文
  • 全网最简单的网络图画法,小白福音会徐锐(助理研究员),广东省生态环境技术研究所,土壤微生物与宏基因组方向版本1.0.1,更新日期:2020年6月23日本项目永久地址:https:/...

    全网最简单的网络图画法,小白福音包学包会

    徐锐(助理研究员),广东省生态环境技术研究所,土壤微生物与宏基因组方向

    版本1.0.1,更新日期:2020年6月23日

    本项目永久地址:https://github.com/YongxinLiu/MicrobiomeStatPlot ,本节目录 212RareCurve,包含R markdown(*.Rmd)、Word(*.docx)文档、测试数据和结果图表,欢迎广大同行帮忙审核校对、并提修改意见。

    背景知识

    本教程使用方法

    1. 将251NetworkXuRui.zip解压至自己喜欢的目录即可(脚本部分修改成对应的工作目录)。本文件夹包含的子文件夹路径、名字不建议修改,脚本容易报错。

    2. 部分脚本可取消#注释,供有需求时使用

    3. 默认脚本与案例介绍均采用“微生物OTU丰度-环境理化Ev”的网络关系,可自行调整为“OTU-OTU”模式

    重要术语

    节点(node/):基因、物种OTU、环境因子等对象。若为有向网络,则可细分为源节点(Source)和目标节点(Target)。无向网络则不区分。

    (edge/link):两个节点之间的连线,通常映射为相关性系数(r-value)。还可定义成正/负相关、有/无相关等。

    相关性(correlation):两个节点相关系数的计算结果,根据数据不同可采用不同的模型方法,如常见的Pearson、Spearman、SparCC等。

    显著性(significance):验证相关性是否具有显著性(p-value)。

    布局(layout):节点及边的分布形式,如常见的球形、圆环形、放射形等。

    拓扑特性(topological property):描述网络特征的数学参数,如连接度、中心性、模块数等

    网络示意图

    简介

    网络图(俗称毛线球)是一种广泛用于复杂、高维度数据的分析与可视化方法,常用于表现成百上千个微生物(菌群)、基因、蛋白等对象(统称为特征,feature)之间的关联形式。在网络图中,各个特征被定义为”节点“,而两两特征之间的关系被定义为“相关性”,并以“边”的形式将两个节点进行连接。

    简例

    幼儿园小朋友们给自己最喜爱的食物打分:


    小明叮当美美
    鸡腿899120
    牛排958522
    花椰菜101284

    简单观察得分表后可以发现,小明叮当都比较爱吃肉,而美美则是素食爱好者。那么小明叮当成为好朋友的可能性可能要比美美更高,用网络图表示就是:

    图中:三名小朋友就是节点,对食物的喜爱偏好就是相关性,并且小明和叮当之间的偏好要强于美美,故也更宽。当然,仅仅根据食物偏好去判断是否能够成为好朋友,可信度不高。因此哪怕相关性很高(边更宽),但其背后的统计意义却不显著,也无法下结论。此外,本例不区分节点的方向,属于无向网络,故三名小朋友既是源节点,也是目标节点。最后,图片的整体分布特征(三角形)就是布局

    实战范例

    上述简例为抛砖引玉,实际的数据分析过程远比简例复杂。继续以最常见的微生物菌群丰度(OTU)与环境理化因子(Ev)的网络分析为例进一步说明:

    数据准备
    1. 环境理化因子数据(data/data_Ev.txt):行为理化指标,列为各样品

    1. 微生物菌群OTU的丰度数据(data/data_OTU.txt):行为OTU丰度,列为各样品

    1. Ev和OTU的补充注释信息,需手动整理,推荐合成一个表(data/taxonomy.txt):

    注意

    • Ev表和OTU表的样品要对应关系要一致

    • 尽量避免行、列名使用非法字符,如#、!、数字开头、空格等,并预先剔除全为0的行/列,常常因为格式不对而报错!

    网络的计算

    准备工作,安装R包,读取输入文件

    # 检测包,是则跳过,没有则安装
    if (!requireNamespace("psych", quietly=TRUE))
        install.packages("psych")
    if (!requireNamespace("reshape2", quietly=TRUE))
        install.packages("reshape2")
    
    # 加载包
    library(psych)
    library(reshape2)
    
    # 导入数据(txt),可在RStudio右上角手动Import Dataset,设置如下
    # OTU/Ev文件:heading=Yes, Row names=first column
    # Taxonomy文件:heading=Yes, Row names=automatic
    
    # 或使用如下命令导入数据:
    Ev <- read.table("data/Ev.txt", sep="\t", header=T, row.names=1)
    OTU <- read.table("data/OTU.txt", sep="\t", header=T, row.names=1)
    
    # 导入节点注释文件
    tax <- read.table("data/taxonomy.txt", sep="\t", header=T)
    names(tax)[1] <- "Id"

    数据预处理

    # 转置数据格式
    
    # # 情形1(默认):两数据Ev-OTU表格时:
    Ev=t(Ev)
    OTU=t(OTU)
    
    # # 情形2:单数据OTU-OTU表格时:
    # OTU=t(OTU)

    设定分析阈值

    结果不理想时可反复修改这些阈值

    # 若OTU数目太多,极大影响计算速度,而且结果不具有可读性
    # 按丰度值的百分比进行筛选, 默认保留相对丰度>0.05%的OTU
    abundance=0.05
    
    # 筛选
    OTU <- OTU[,colSums(OTU)/sum(OTU)>=(abundance/100)]
    
    # 网络分析的关联阈值
    r.cutoff=0.6
    p.cutoff=0.05

    开始计算,不用修改

    全选脚本后一键Enter~等待自动生成结果吧!超级爽

    # 计算r、p
    
    # 情形1:两数据Ev-OTU表格时,默认
    occor=corr.test(OTU, Ev,
        use="pairwise",
        method="spearman", # 可选pearson/kendall
        adjust="fdr",
        alpha=0.05)
    
    # 情形2:单OTU-OTU
    # occor=corr.test(OTU,
    #     use="pairwise",
    #     method="spearman",
    #     adjust="fdr",
    #     alpha=0.05)
    
    # 获取相关矩阵及边数据
    
    # 提取相关性矩阵的r、p值
    r_matrix=occor$r
    p_matrix=occor$p
    
    # 确定物种间存在相互作用关系的阈值,将相关性R矩阵内不符合的数据转换为0
    r_matrix[p_matrix>p.cutoff|abs(r_matrix)<r.cutoff]=0
    
    # 转换数据为长格式形式,方便下游分析
    p_value=melt(p_matrix)
    r_value=melt(r_matrix)
    
    #将r、p两表合并
    r_value=cbind(r_value, p_value$value)
    
    # 删除含r_value=0的行
    r_value=subset(r_value, r_value[,3]!=0)
    
    # 删除含r_value=NA的行
    r_value=na.omit(r_value)
    
    # 对r表格增补绝对值、正负型等信息
    abs=abs(r_value$value)
    
    linktype=r_value$value
    linktype[linktype>0]=1
    linktype[linktype<0]=-1
    
    r_value=cbind(r_value, abs, linktype)
    
    # 重命名r、p表头
    names(r_value) <- c("Source","Target","r_value","p_value", "abs_value", "linktype")
    names(p_value) <- c("Source","Target","p_value")
    
    # 输出结果为csv文件
    write.csv(r_value,file="result/1.边数据.csv", row.names=FALSE)
    write.csv(r_matrix, file="result/4.corr_matrix.csv")
    write.csv(r_value,file="result/5.r_value.csv", row.names=FALSE)
    write.csv(p_value,file="result/6.p_value.csv", row.names=FALSE)
    
    # 获取节点数据
    # 从边文件提取节点并去除重复
    node_OTU <- as.data.frame(as.data.frame(r_value[,1])[!duplicated(as.data.frame(r_value[,1])), ])
    node_Ev <- as.data.frame(as.data.frame(r_value[,2])[!duplicated(as.data.frame(r_value[,2])), ])
    
    names(node_OTU)="Id"
    names(node_Ev)="Id"
    
    # OTU ID和Ev ID合并成节点索引表,用于检索注释信息
    list <- rbind(node_Ev, node_OTU)
    write.csv(list,file="result/3.node_list.csv", row.names=FALSE)
    
    # 筛选节点对应的注释信息
    list=subset(tax,Id %in% list$Id)
    
    # 复制一列当节点Label
    list$Label <- list$Id
    
    # 输出结果为csv文件
    write.csv(list,file="result/2.节点数据.csv", row.names=FALSE)

    查验结果

    在result文件夹中查验生成的表格结果,主要使用1.边数据.csv2.节点数据.csv两个。

    1.边数据:

    说明:当区分有向、无向网络时,Source和Target节点才有区别。r-value表示符合网络阈值的相关性数值,p-value供说明相关性的显著程度。abs-value是将可正可负的r-value取绝对值,用于画图时表示连线的宽度(关联强度)。linktype表示正(1)、负(-1)相关性,可在画图时用于指定连线的颜色(红=正相关,蓝=负相关)。

    2.节点数据:

    说明:Id表示边数据中的Source、Target节点,后续几列为节点的注释信息,如分类水平、性别(如有)、采样点等。最后一列Label用于指定画图时节点显示的标签字符,可手动删除不想显示的内容。

    疑问?:为什么需要生成节点数据?因为如果直接使用最开始的taxonomy.txt注释文件(总表)画图,会存留许多非网络节点的节点(冗余)。因此需要根据边数据中保留下的节点(符合r/p网络阈值的),从taxonomy总表中挑选出来制作画图用的节点数据(子表)。

    网络的可视化

    数据在手,天下我有!只要有脚本生成的、或不怕麻烦自己excel手动整理的1.边数据.csv2.节点数据.csv就可以进行网络图的可视化啦~推荐使用Cytoscape或者Gephi两个软件。以Cytoscape为例:

    Cytoscape安装及下载

    下载页:https://cytoscape.org/download.html

    下载最新版本的Cytoscape和对应的Java环境版本

    • 导入数据

    边数据:【File】【Import】【Network from file】【1.边数据.csv】

    节点数据:【File】【Import】【Table from file】【2.节点数据.csv】

    • 美化

    Cytoscape中可以修改几乎所有能够想到的网络图属性,节点、连线的颜色、粗细、透明度当然不在话下,还可以修改多种布局、标签显示方式,甚至还能计算网络的拓扑参数。由于这部分不是本文重点,不再赘述,具体可参见其他指导手册~

    CytoScape网络可视化相关资源

    Gephi网络可视化相关资源

    学术论文案例

    • 厌氧消化反应器中的微生物网络: https://www.sciencedirect.com/science/article/abs/pii/S0960852418306060    “Organic loading rate and hydraulic retention time shape distinct ecological networks of anaerobic digestion related microbiome”

    • 抗生素抗性基因与潜在宿主网络: https://www.sciencedirect.com/science/article/abs/pii/S0960852419303281    “Metagenomic analysis reveals the effects of long-term antibiotic pressure on sludge anaerobic digestion and antimicrobial resistance risk”

    • 酸性矿山废水侵蚀下的微生物网络: https://www.sciencedirect.com/science/article/pii/S0269749119368253    “Uncovering microbial responses to sharp geochemical gradients in a terrace contaminated by acid mine drainage”

    责编:刘永鑫,中科院遗传发育所

    版本1.0.0,网络基本讲解和网络文件准备
    版本1.0.1,改写为Rmd版本,建议作者增加实战讲解和点评、绘图实战的典型操作和经验。

    猜你喜欢

    10000+:菌群分析 宝宝与猫狗 梅毒狂想曲 提DNA发Nature Cell专刊 肠道指挥大脑

    系列教程:微生物组入门 Biostar 微生物组  宏基因组

    专业技能:学术图表 高分文章 生信宝典 不可或缺的人

    一文读懂:宏基因组 寄生虫益处 进化树

    必备技能:提问 搜索  Endnote

    文献阅读 热心肠 SemanticScholar Geenmedical

    扩增子分析:图表解读 分析流程 统计绘图

    16S功能预测   PICRUSt  FAPROTAX  Bugbase Tax4Fun

    在线工具:16S预测培养基 生信绘图

    科研经验:云笔记  云协作 公众号

    编程模板: Shell  R Perl

    生物科普:  肠道细菌 人体上的生命 生命大跃进  细胞暗战 人体奥秘  

    写在后面

    为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外5000+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。PI请明示身份,另有海内外微生物相关PI群供大佬合作交流。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍未解决群内讨论,问题不私聊,帮助同行。

    学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

    点击阅读原文,跳转最新文章目录阅读

    展开全文
  • _032_rationalRose_包图画法

    万次阅读 2018-07-04 18:02:06
    结果: 画法: 1.先创建一个Class Diagram 2. 3. 4.需要注意的命名。

    结果:

    画法:

    1.先创建一个Class Diagram

    2.

    3.

    4.需要注意包的命名。

     

    展开全文
  • UML各种图例齐全—用例、类图、状态包图、协作、顺序详细说明画法和功能.doc
  • UML 各种图例 面向对象的问题的处理的关键是建模... UML 中有九种建模的图标即 用例 类图 对象 顺序 协作 状态 活动 组件 配置 本课程中的某些部分包含了这些的细节信息的页面链接.而且每个部分都
  • UML图画法

    2017-03-14 16:11:59
    面向对象的问题的处理的关键是建模问题。建模可以把在复杂世界的许多重要的细节给抽象出。许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML的精彩之处。...用例类图对象

    转载地址 : http://www.cnblogs.com/carsonzhu/p/5313262.html


    面向对象的问题的处理的关键是建模问题。建模可以把在复杂世界的许多重要的细节给抽象出。许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML的精彩之处。

    UML中有九种建模的图标,即:

    • 用例图
    • 类图
    • 对象图
    • 顺序图
    • 协作图
    • 状态图
    • 活动图
    • 组件图
    • 配置图

    本课程中的某些部分包含了这些图的细节信息的页面链接。而且每个部分都有一个小问题,测试一下你对这个部分的理解。

    为什么UML很重要?

    为了回答这个问题,我们看看建筑行业。设计师设计出房子。施工人员使用这个设计来建造房子。建筑越复杂,设计师和施工人员之间的交流就越重要。蓝图就成为了这个行业中的设计师和施工人员的必修课。

    写软件就好像建造建筑物一样。系统越复杂,参与编写与配置软件的人员之间的交流也就越重要。在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”。现在它已经成为了软件行业的一部分了。UML提供了分析师,设计师和程序员之间在软件设计时的通用语言。

    UML被应用到面向对象的问题的解决上。想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的。一个模型model就是根本问题的抽象。域domain就是问题所处的真实世界。

    模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的。记住把一个对象想象成“活着的”。对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations)。对象的属性的值决定了它的状态state。

    类Classes是对象的“蓝图”。一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数)。对象是类的实例instances。

    用例图

    用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象。强调这个系统是什么而不是这个系统怎么工作。

    用例图与情节紧紧相关的。情节scenario是指当某个人与系统进行互动时发生的情况。下面是一个医院门诊部的情节。

    “一个病人打电话给门诊部预约一年一次的身体检查。接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录。”

    用例Use case是为了完成一个工作或者达到一个目的的一系列情节的总和。角色actor是发动与这个工作有关的事件的人或者事情。角色简单的扮演着人或者对象的作用。下面的图是一个门诊部Make Appointment用例。角色是病人。角色与用例的联系是通讯联系communication association(或简称通讯communication)

    角色是人状的图标,用例是一个椭圆,通讯是连接角色和用例的线。

    一个用例图是角色,用例,和它们之间的联系的集合。我们已经把Make Appointment作为一个含有四个角色和四个用例的图的一部分。注意一个单独的用例可以有多个角色。

    用例图在三个领域很有作用。

    • 决定特征(需求)。当系统已经分析好并且设计成型时,新的用例产生新的需求
    • 客户通讯。使用用例图很容易表示开发者与客户之间的联系。
    • 产生测试用例。一个用例的情节可能产生这些情节的一批测试用例。

    类图

    类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统。类图是静态的-它们显示出什么可以产生影响但不会告诉你什么时候产生影响。

    下面是一个顾客从零售商处预定商品的模型的类图。中心的类是Order。连接它的是购买货物的Customer和Payment。Payment有三种形式:Cash,Check,或者Credit。订单包括OrderDetails(line item),每个这种类都连着Item。

    UML类的符号是一个被划分成三块的方框:类名,属性,和操作。抽象类的名字,像Payment是斜体的。类之间的关系是连接线。

    类图有三种关系。

    • 关联association-表示两种类的实例间的关系。如果一个类的实例必须要用另一个类的实例才能完成工作时就要用关联。在图中,关联用两个类之间的连线表示。
    • 聚合aggregation-当一个类属于一个容器是的一种特殊关系。聚合用一个带菱形的连线,菱形指向具有整体性质的类。在我们的图里,Order是OrderDetails的容器。
    • 泛化generalization-一个指向以其他类作为超类的继承连线。泛化关系用一个三角形指向超类。Payment是Cash,Check和Credit的超类。

    一个关联有两个尾端。每个尾端可以有一个角色名role name来说明关联的作用。比如,一个OrderDetail实例是一个Order实例的项目。

    关 联上的方向性navigability箭头表示该关联传递或查询的方向。OrderDetail类可以查询他的Item,但不可以反过来查询。箭头方向同 样可以告诉你哪个类拥有这个关联的实现;也就是,OrderDetail拥有Item。没有方向性的箭头的关联是双向。

    关 联尾端的数字表示该关联另一边的一个实例可以对应的数字端的实例的格数,通过这种方式表达关联的多样性multiplicity。多样性的数字可以是一个 单独的数字或者是一个数字的范围。在例子中,每个Order只有一个Customer,但一个Customer可以有任意多个Order。

    下面这个表给出了最普遍的多样性示例。

    多样性 意义
    0..1 0或1个实例. n..m符号表示有n到m个实例
    0..*  or  * 没有实例格数的限制(包括没有).
    1 只有一个实例
    1..* 最少一个实例

    每个类图包括类,关联和多样性表示。方向性和角色是为了使图示得更清楚时可选的项目。

    包和对象图

    为了简单地表示出复杂的类图,可以把类组合成包packages。一个包是UML上有逻辑关系的元件的集合。下面这个图是是一个把类组合成包的一个商业模型。

    dependencies关系。如果另一个的包B改变可能会导致一个包A改变,则包A依赖包B。

    包是用一个在上方带有小标签的矩形表示的。包名写在标签上或者在矩形里面。点化线箭头表示依赖

    对象图Object diagrams用来表示类的实例。他们在解释复杂关系的细小问题时(特别是递归关系时)很有用。

    这个类图示一个大学的Department可以包括其他很多的Departments。

    这个对象图示上面类图的实例。用了很多具体的例子。

    UML中实例名带有下划线。只要意思清楚,类或实例名可以在对象图中被省略。

    每个类图的矩形对应了一个单独的实例。实例名称中所强调的UML图表。类或实例的名称可能是省略对象图表只要图的意义仍然是明确的。

    顺序图

    类图和对象图是静态模型的视图。交互图是动态的。他们描述了对象间的交互作用。

    顺序图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。

    消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。

    协作图

    协作图也是互动的图表。他们像序列图一样也传递相同的信息,但他们不关心什么时候消息被传递,只关心对象的角色。在序列图中,对象的角色放在上面而消息则是连接线。

    对象角色矩形上标有类或对象名(或者都有)。类名前面有个冒号(:)。

    协作图的每个消息都有一个序列号。顶层消息的数字是1。同一个等级的消息(也就是同一个调用中的消息)有同样的数字前缀,再根据他们出现的顺序增加一个后缀1,2等等。

    状态图

    对象拥有行为和状态。对象的状态是由对象当前的行动和条件决定的。状态图statechart diagram显示出了对象可能的状态以及由状态改变而导致的转移。
    我们的模型例图建立了一个银行的在线登录系统。登录过程包括输入合法的密码和个人账号,再提交给系统验证信息。

    登录系统可以被划分为四种不重叠的状态:Getting SSN, Getting PIN, Validating, 以及 Rejecting。每个状态都有一套完整的转移transitions来决定状态的顺序。

    状态是用圆角矩形来表示的。转移则是使用带箭头的连线表示。触发转移的事件或者条件写在箭头的旁边。我们的图上有两个自转移。一个是在Getting SSN,另一个则在上Getting PIN。

    初始状态(黑色圆圈)是开始动作的虚拟开始。结束状态也是动作的虚拟结束。

    事件或条件触发动作时用(/动作)表示。当进入Validating状态时,对象并不等外部事件触发转移。取而代之,它产生一个动作。动作的结果决定了下一步的状态。

    活动图

    活动图activity diagram是一个很特别的流程图。活动图和状态图之间是有关系的。状态图把焦点集中在过程中的对象身上,而活动图则集中在一个单独过程动作流程。活动图告诉了我们活动之间的依赖关系。

    对我们的例子来说,我们使用如下的过程。

    “通过ATM来取钱。”

    这个活动有三个类Customer, ATM和 Bank。整个过程从黑色圆圈开始到黑白的同心圆结束。活动用圆角矩形表示。

    活动图可以被分解成许多对象泳道swimlanes ,可以决定哪些对象负责那些活动。每个活动都有一个单独的转移transition连接这其他的活动。

    转移可能分支branch成两个以上的互斥的转移。保护表达式(在[]中)表示转移是从一个分支中引出的。分支以及分支结束时的合并merge在图中用菱形表示。

    转移也可以分解fork成两个以上的并行活动。分解以及分解结束时的线程结合join在图中用粗黑线表示

    组件与配置图

    组件component是代码模块。组件图是是类图的物理实现。

    配置图Deployment diagrams则是显示软件及硬件的配置。

    下面的配置图说明了与房地产事务有关的软件及硬件组件的关系。

    物理上的硬件使用节点nodes表示。每个组件属于一个节点。组件用左上角带有两个小矩形的矩形表示。


    展开全文
  • 实用文案 UML各种图例 面向对象的问题的处理的关键是建模问题 .... UML中有九种建模的图标即 用例 类图 对象 顺序 协作 状态 活动 组件 配置 本课程中的某些部分包含了这些的细节信息的页面
  • EA使用总结一常用图画法 使用EA进行系统设计中常用画法 1.1静态视图 1.1.1包图 创建包图: u tat hMftnwH. *41 g!| u tat hMftnw H. *41 g!| 哪1 *31 MM*- 4 W Wnd 包图是最常用的因为我们的工程通常都是有层层...
  • 数据流画法

    万次阅读 多人点赞 2015-06-28 09:48:30
    一、数据流的基本组成成分 数据流:是由一组固定成分的数据组成,表示数据的流向。值得注意的是,数据流中描述的是数据流,而不是控制流。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要...
  • matplotlibmatplotlib-6种图形的基本画法1.numpy补充2.散点3.折线4.条形5.直方1D直方2-D直方(双变量直方分布)6.饼状7.箱形 matplotlib-6种图形的基本画法 1.numpy补充 import numpy as np # 从...
  • python数据可视化之条形图画法

    千次阅读 2019-06-16 10:36:02
    条形的三种画法 :) 快来学习一下吧
  • 文章目录matplotlib-6种图形的基本画法1.numpy补充2.散点3.折线4.条形5.直方1D直方2-D直方(双变量直方分布)6.饼状7.箱形 matplotlib-6种图形的基本画法 1.numpy补充 # 使用numpy生成100以内的...
  • 今天我们以R中自带的Orange 数据集为例,来学习折线画法,该数据集中包含五种橘树的树龄和年轮数据。要考察橘树的年轮如何随着树龄变化,先画个散点看看: #先看第一种橘树,提取第一种树的数据,保存在t1中...
  • 数据流DFD画法

    2019-04-20 20:45:19
    数据流DFD画法
  • 中国地图的画法 昨天,我们的小编推送了世界地图的画法(生信小白7行代码画一个高颜值的世界地图),今天我们来说一说中国地图的画法。首先要强调一点,很多来自国外的地图数据中中国的版图有不少错误,千万要注意,...
  • UML绘制(三)-----用例画法

    万次阅读 多人点赞 2019-05-11 10:53:34
    用例的作用 用例主要用来描述“用户、需求、系统功能单元”之间的关系。 它展示了一个外部用户能够观察到的系统功能模型。 【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。 二.用例...
  • EA使用总结(一)常用图画法

    千次阅读 2013-09-05 17:06:29
    原创作品,允许转载,转载时请务必以超链接...使用EA进行系统设计中常用画法 1.1静态视图 1.1.1包图 创建包图包图是最常用的,因为我们的工程通常都是有层层构成的,例如如下的一个包图
  • 我将下面这些优秀的流程和逻辑分为四大类,并简单分析了其中的画图思想和优点。最后列举了一些反例。大家若是需要画其中某一类的,可以套用着画。所有的图片来自极客时间的《趣谈Linux操作系统》和小林coding...
  • 本文章和大家分享如何画ER,因为在计算机毕业设计、课程设计、文档报告中经常用到,所以还是有必要和大家共同来学习一下。 一、先看图熟悉E-R中图形及代表的意思 在我们毕业论文、课题报告等文档中,涉及到画E...
  • matplotlib极坐标、极区、极散点图画法 对于小伙伴想要了解极坐标、极区、极散点图画法可以访问下面的链接,因为论文画图所需,所以有百度了下这方面的资料,在此我做一个小总结: matplotlib极坐标方法...
  • 使用Latex绘制组合数学中的常见图形——棋盘格,TikZ的使用。
  • UML各种图画法总结

    2014-03-27 14:07:00
    《UML 2.4.1 教程》 ... 《UML总结(对九种的认识和如何使用Rational Rose 画图) 》 http://blog.csdn.net/cjr15233661143/article/details/8532997 1.1.用例 1.2.状态 ...
  • 操作系统-进程甘特图画法

    千次阅读 多人点赞 2020-02-01 00:43:03
    我们在操作系统中常常会碰到CPU和输入输出等设备调度的题目,需要画出甘特才能比较直观地看出每个进程不同进程之间的时序关系。这里分享一下甘特的作图技巧,这种题目分两种,分别是可抢占优先权调度和不可抢占...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,061
精华内容 2,024
关键字:

包图画法