UML图示

2023-11-18

近些天学习设计。由于没有具体项目,原有项目也没有什么设计的概念,只是看相关的书籍,所以着实有些抓狂。然最抓狂的是对于UML那些表示法的生疏,虽然看过N+1遍相关的表示,但由于之前看过的设计图稿和自己画的东东本来就不多,因此出来类图,对象图等及其基本的图示可以很清楚的知道谁是怎么表示的外,其他的都只是有些模糊的概念。而有些东西是死记不来的,因此要找个地方记录下。接下来将把UML的一些常用不常用的通用图示记录一下以便查阅。 

本篇将主要记录UML静态视图中的基本概念以及一些基本图示法,如类,对象,用例等。将这些术语小作分类:结构元素,关系,分组,注释,扩展。

结构元素

结构元素包括,类,对象,接口,用例,参与者。

类图

类图图示

    类图是UML中最基本的元素了吧?根据OO的思想“天下一切皆对象”,而类是对象的抽象。 
    左侧图示为一个类图。顶端“ClassName”表示类名 
    中间部分为该类的属性,其中分别表示为可访问性,属性名,以及属性的数据类型。 
    第三部分为该类的方法,包括方法的可访问性,方法名,方法的参数以及方法的返回值。 
    需要说明的是:
  •         “#”表示protected 
            “+”表示Public
            “-”表示private
           “i”表示internal

对象图图示

对象图

右侧图示为一对象图,该对象为类className类的一个实例对象

该图第一部分说明了该对象为className的一个实例,第二部分指定了该实例的属性值。该图指定的是一个特殊的实例的对象,如果要代表className的所有的对象可省略掉对象名,即为“:ClassName”。

接口

类图图示

左图为一个比较简单的接口事例图示。与类图差不多,该图示分为三部分,第一部分为接口名,为了更明确的标明其“接口”的身份通常以“I”开头。第二部分为属性,第三部分为方法。

用例与参与者

下图为一简单的用例视图。小人表示参与者,而椭圆表示的是用例。

用例与参与者图示

包图图示

右侧图示为一包图,该图示为一名称为Utility的工具包。

包用来组织类,被包含在包里的类一般通过如Utility::StrUtility的形式来反应该类的路径。

关系

关系元素包括了聚集,组成,实现,继承,依赖,关联等。

关联

关联图示

 关联是类之间的联系,如篮球队员与球队之间的关联(下图所示)。其中,关联两边的"employee"和“employer”标示了两者之间的关系,而数字表示两者的关系的限制,是关联两者之间的多重性。通常有“*”(表示所有,不限),“1”(表示有且仅有一个),“0...”(表示0个或者多个),“0,1”(表示0个或者一个),“n...m”(表示n到m个都可以),“m...*”(表示至少m个)。

在关联中有一种叫“限定关联”,还有一种谓之自身关联。另外,对象之间的关联就没那么复杂,只是将类的关联实例化而已。

依赖

依赖图示

依赖是表示一个类中使用了另外一个类,最常用的依赖是在类A的方法中使用了类B,那么A依赖B。如上图所示。

继承

继承图示

这里的继承是指子类对父类的关系。理解面向对象的各位对继承应该不陌生。啥也不说,看看图好了。
继承使用空心箭头表示继承的方向,用实线连接。

实现

实现图示

实现指的是类对接口的实现。接口实现的表示与继承的表示差不多,只是将实线变为了虚线。

聚集

聚集图示

一个类可能有几个部分类聚集在一起而成。如:电脑主机由CPU,主板,光驱....等组成。类与类之间是“整体-部分”的关系。

组合

组成图示

组成是强类型的聚集,每个部分体只能属于一个整体。如桌子由桌腿和桌面组成。


FROM:  http://www.uml.org.cn/oobject/200901041.asp





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UML图示 的相关文章

  • 如何为 UML 序列图上的每个循环建立 Java 模型?

    for Item i collection i foo 在一些抽象序列图中 你有一个loop组合片段与 条件 例如 对于每个项目 以 Java 实现为特色的序列图 你会用什么作为循环保护 如果所有生命线都必须代表一个对象实例 您将如何表明i
  • 实体控制边界(ECB)与模型视图控制器(MVC)[重复]

    这个问题在这里已经有答案了 我不确定我是否有正确的概念 人们告诉我 边界 视图 实体 模型 控制 控制器 然而基于我对 MVC 的了解 胖模型 瘦控制器 不是 Boundary Controller Control Model 业务逻辑 和
  • UML 的高效替代方案

    我发现 UML 很难快速创建 我想更快地表达我的想法 特别是对于小型开源项目 如果它足够大 我会费心使用 UML 但是这个项目对于这种事情来说太小了 我不想要另一个让我觉得 不 我稍后再做 的工具 有什么建议么 UML 不是一种工具 而是一
  • 自动生成我的 C++ 代码的 uml 图

    不久前 我担任 Java 编程入门课程的助教 我们使用了一个名为BlueJ http www bluej org 它有一个很好的功能 即开发文件的概述是一个轻量级的 UML 图 其中绘制了 使用 指针和继承指针 这使得可以轻松查看程序的结构
  • 子集约束在 UML 类图中意味着什么

    有subset在部门类和人员类之间 但我不知道比是什么意思 家庭作业机会 查看由子集约束链接的两个关系 每个部门有多名成员 每个部门设经理一名 子集表示这两者之间的约束 如果后一个关系的元素是第一个关系的子集 那么你会如何描述其含义 EDI
  • “包含”、“扩展”和“使用”之间有什么区别?

    在用例图中 两者有什么区别 lt
  • 我应该使用什么图来表示模块中功能之间的交互?

    我需要使用 UML 或 SysML 符号创建图表 我有由函数组成的模块 有些函数仅在模块 内部 使用 其他函数则由其他模块使用 Example MODULE 1有两个功能 func1 and func2 func2 uses func1 i
  • 学习如何分析项目

    我刚刚偶然开始为我公司的一个客户 中小企业 分析一个项目 我是一名 Net 开发人员 5 年 在分析软件方面经验很少 来自学校的 UML 我们刚刚结束了与用户两周的交谈 并得到了一份不错的需求清单 显然 我们已经过滤掉了最重要的需求 并且必
  • 如何在 UML 属性中指定枚举文字作为默认值?

    我目前使用 EMF UML Implementation 进行一些模型转换 在我的模型转换中 我创建了一个具有一些属性的 uml 类 这些属性是我也创建的枚举类型 某些属性应该获得默认值 默认值应该是枚举文字 现在的问题是 如何将枚举文字获
  • 主动类与被动类

    在 UML 规范上层结构 2 5 仍为 Beta 第 203 页 中 可以通过将 isActive 设置为 true 来指定类为活动类 即 它的每个实例都是一个活动对象 当 isActive 为 false 时 类是被动的 即 它的每个实例
  • 如何快速理解任何产品的设计和代码流程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从 umbrello 中的 java 代码自动创建类图?

    我能够将 java 代码导入到 umbrello 中 但是 如何自动生成类图呢 也许雨伞可以not有那个功能 来自handbook http docs kde org stable en kdesdk umbrello code impor
  • 传统的基于代码的工程和模型驱动的工程方法有什么区别?

    我在文献中找到了这段话 但我不明白它的含义 设计实践正在从传统的基于代码的工程转向 在整个开发生命周期中进行严格的分工 模型驱动的工程方法 其中所有人员都参与设计 流程可以对模型有发言权 任何帮助将不胜感激 基于代码的工程意味着大部分工作是
  • 学习 UML 的最佳来源是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 UML 中建模协变关联类?

    In short 我想对两个类之间的协变关联进行建模 每个类都可以专门化 我需要展示相关关联类的专业化 但我想避免我的模型可能意味着存在冗余关联 即泛化之间的关联和专业化之间的关联 问题的逐步解释 我在 UML 类图中有一个多对多关联Per
  • 用例可以没有参与者吗?

    我正在研究全自动系统的用例图 外部系统只会触发该系统的一个用例 大多数其他用例都是计划任务并由计时器调用 我有一个由计时器调用的用例 它包含并扩展了其他两个用例 当我编写用例描述时 谁将成为 UC 2 和 UC 3 的参与者 用例可以在没有
  • Eclipse:如何安装 UML2 工具

    我想尝试 UML2 Tools for Eclipse 如图所示本教程 http www vogella de articles UML article html 我目前拥有面向 Java EE 开发人员的 Eclipse 3 6 Heli
  • 将 StarUML 图转换为 Visio 绘图

    我有一个使用 Star Uml 创建的类图 但现在的要求是将其移植到 MS Visio 是否可以将 uml 移植到具有可用 xml 信息的 vsd 提前致谢 导出为 Windows 图元文件 WMF 和增强型 Windows 图元文件 EM
  • UML - 关联或聚合(简单的代码片段)

    有多少书自相矛盾 真让我抓狂 Class A class B void UseA A a some say this is an association no reference is held but communication is p
  • 如何在时序图上表示 if 条件 1 else if 条件 2?

    我想知道 如何在序列图上表示 if cond1 else if cond2 语句 if condition1 Do something else if condition2 Do something else if 我不确定是否有两个独立的

随机推荐

  • /dev/zero和/dev/null的区别

    可以通过使用dd if dev zero of archive test dbf bs 8k count 1000000 来测试磁盘的纯写入性能 使用dd if file of dev null 来测试磁盘的纯读取性能 使用dd if fi
  • 紫光同创 FPGA 开发跳坑指南(三)—— 联合 Modelsim 仿真

    Modelsim 是 FPGA 开发中重要的 EDA 设计仿真工具 主要用于验证数字电路设计是否正确 紫光 Pango Design Suite 开发套件支持联合 Modelsim 仿真 这里作简要的介绍 添加仿真库 方法一 打开 Pang
  • 实现mint操作(参考pancake)

    区块链发展越来越好 nft已经火了很久 今天写一下如何用js web3js 调用合约 实现mint nft 简单的调用 引入一些依赖 根据需要 有一些是其他功能的 import useActiveWeb3React from web3 ho
  • mysql read loop_mysql数据库游标的使用

    Mysql在5 0版本支持在存储过程中使用游标 游标声明必须出现在处理程序声明变量和条件的声明后 游标的使用如下 CREATE PROCEDURE curdemo BEGIN DECLARE done INT DEFAULT FALSE D
  • hive数据恢复

    truncate删除hive的表能恢复吗 0 jdbc hive2 localhost 10014 default gt create table test2 id int name string row format delimited
  • 在SpringBoot中利用nacos对数据源进行动态刷新

    一 重写DruidAbstractDataSource类 这里为什么要重写这个类 因为DruidDataSource数据源在初始化后 就不允许再重新设置数据库的url和userName 注意 类所在的包名必须为 com alibaba dr
  • MySQL 触发器

    文章目录 1 简介 2 行级与语句级触发器 3 触发时机 4 触发器优缺点 5 创建触发器 语法 示例 6 查看触发器 7 删除触发器 参考文献 1 简介 触发器 Trigger 是与表关联的命名数据库对象 当表发生特定事件时激活 触发器的
  • 概念解析

    注1 本文系 概念解析 系列之一 致力于简洁清晰地解释 辨析复杂而专业的概念 本次辨析的概念是 合成孔径雷达中运动补偿和自聚焦的联系与差别 概念解析 合成孔径雷达运动补偿与自聚焦的关系研究 基于二维空变运动补偿的机动平台大斜视SAR稀疏自聚
  • java.lang.ClassCastException: java.lang.Long cannot be cast to java.util.Date at org.hibernate.type.TimestampType.deepCopyNotNul

    在配置一对多的时候 OneToMany mappedBy recevier cascade CascadeType REMOVE OneToMany mappedBy sender cascade CascadeType REMOVE Ma
  • 日常学习--练手

    1 page source爬取页面源码 from selenium import webdriver import re driver webdriver Chrome driver get https www cnblogs com ca
  • mysql中如何取得分组中最大值的数据?全网最有效的方法

    大家都知道 MySQL有分组查询子句 group by 面试官就问你了 不是让你找到一个表中最大的值 而是让你找到最大值的整行数据 这个时候简单的分组是搞不定了 需要用到 inner join 子句 先说下inner join 子句的作用
  • 【MyBatis】Mybatis使用SqlSessionFactory加载xml文件

    1 概述 MyBatis框架主要是围绕着SqlSessionFactory这个类进行的 这个的创建过程如下 定义一个Configuration对象 其中包含数据源 事务 mapper文件资源以及影响数据库行为属性设置settings 通过配
  • python read函数返回值_python read()方法定义及使用(实例解析)

    今天这篇文章我们来了解一下pythonread方法 不知道没什么关系 因为今天讲的就是python之中的read 方法 以及知晓read是什么意思 所以今天我们在今天的文章之中来了解一下吧 概述 read 方法用于从文件读取指定的字节数 如
  • 数据结构——非线性结构(图)

    文章目录 一 非线性结构的概述 二 图的基本概念 1 定义 2 无向图 有向图 2 1 无向图 2 2 有向图 2 3 简单图 2 4 多重图 3 顶点的度 出度 入度 3 1 对于无向图 3 2 对于有向图 4 边的权 带权图 网 5 点
  • React + Umi + Dva + Antd 简述 及创建项目过程简述

    React 你的第一个组件 React React是前端三大主流框架之一 你可以在React里传递多种类型的参数 如声明代码 帮助你渲染出UI 也可以是静态的HTML DOM元素 也可以传递动态变量 甚至是可交互的应用组件 安装react框
  • 学校智慧校园平台管理系统小程序开发制作

    学校智慧校园平台管理系统小程序开发制作 智慧校园服务的蓝海市场正在等待开发的状态中 而小程序恰好是一体化校园平台抢占这个市场的最佳方式 学校校园平台小程序提供在校大学生和老师校园智慧服务的小程序应用 主要功能有 提供查看考勤 成绩 课表 校
  • python树莓派 是什么_想用什么域名就用什么域名,用树莓派搭建个局域网DNS服务器。...

    局域网内的设备越来越多 用ip访问就比较麻烦了 另一方面我们用的公网的dns服务器可能会被投毒 这时候搭建一个本地的DNS服务器 想用什么域名就用什么域名 岂不是很舒服 拿起我们的树莓派 说干就干 准备材料 1 树莓派 这里是安装了64位操
  • chisel的命名高级用法

    从历史上看 Chisel 在可靠地捕获信号名称方面遇到了麻烦 造成这种情况的原因是 1 主要依靠反射来查找名称 2 使用 chiselName行为不可靠的宏 Chisel 3 4 引入了一个自定义的 Scala 编译器插件 它可以在声明信号
  • 关于ORA-12170 tns 连接超时等一系列Oracle无法正常登入问题

    文章转载来自于 https blog csdn net qq 40707682 article details 81667918 由于该篇文章成功解决了我的问题 所以记录一下 方便后面的小伙伴们学习 下面首先说说如何在出现ORA 12170
  • UML图示

    近些天学习设计 由于没有具体项目 原有项目也没有什么设计的概念 只是看相关的书籍 所以着实有些抓狂 然最抓狂的是对于UML那些表示法的生疏 虽然看过N 1遍相关的表示 但由于之前看过的设计图稿和自己画的东东本来就不多 因此出来类图 对象图等