visio画uml类图添加自定义数据类型

类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。
类图的3个基本组件:类名、属性、方法。
1、打开visio(演示所用版本为visio 2003),选中UML模型图;
界面

2、拖动左侧UML静态结构中的“类”图标至右侧编辑窗口;
这里写图片描述

3、双击新建的类,在类的属性框中填写类的名称,如“Student”,然后选择“特性”,添加该类的属性,比如我们要为Student类添加name和province。首先添加name:
这里写图片描述
点击确定,刚刚我们新建的类就变成了如下:
这里写图片描述
[注:类图的规则:最前面写访问权限。访问权限为“public”的前面写“+”,为“private”的前面写“-”,为“protected”的前面写“#”。接着写“变量名”或者“函数名”。接着写一个“:”。最后写“变量名”或者“函数名”的类型。]

4、接下来新建province,我们想用自己定义的枚举类型PROVINCE,那么问题来了:类型这一栏我们只能选择,无法自己输入自定义类型
这里写图片描述

5、下面我们来解决这个问题。选择菜单栏中的“UML>包”,打开[UML包]对话框. 点击[新建]按钮,在[包]列中输入[NewType],并确定;
这里写图片描述
接着向NewType里面新建我们需要的数据类型,这时我们可以看到模型资源管理器(若左边窗口没有,可以在从菜单->UML->视图->模型资源管理器调出)中选中刚建的 NewType,再右击->新建->数据类型,打开UML数据类型属性对话框。选择[数据类型]项目,在名称项目中填写[PROVINCE],选择[确定]结束.
这里写图片描述

6、现在再来尝试做第4步,数据类型里面就有我们刚刚新建的PROVINCE类型了
这里写图片描述

7、添加类的方法和上面添加属性类似,在UML类属性的“操作”里面新建就可以了。
这里写图片描述
这里写图片描述

下面篇幅介绍类之间关系的表示方法
参考http://blog.sina.com.cn/s/blog_621c16b101011h5k.html
1. 泛化(generalization):表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节。直接使用语言中的继承表达。在类图中使用带三角箭头的实线表示,箭头从子类指向父类。
这里写图片描述
2. 实现(Realization):在类图中就是接口和实现的关系。这个没什么好讲的。在类图中使用带三角箭头的虚线表示,箭头从实现类指向接口。在visio2003中,没有带三角箭头的虚线,需要这样实现:
在需要实现接口的类上单击鼠标右键,选择“形状显示选项…”——常规选项——选中“实现链接”——确定。此时在类中有个黄点,将次黄点拖动到要实现的接口上即可完成。
这里写图片描述
3. 依赖(Dependency):对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。一个类调用被依赖类中的某些方法而得以完成这个类的一些职责。在类图使用带箭头的虚线表示,箭头从使用类指向被依赖的类。
这里写图片描述
4. 关联(Association) : 对象之间一种引用关系,比如客户类与订单类之间的关系。这种关系通常使用类的属性表达。关联又分为一般关联、聚合关联与组合关联。后两种在后面分析。在类图使用带箭头的实线表示,箭头从使用类指向被关联的类。可以是单向和双向。这里写图片描述
5. 聚合(Aggregation) : 表示has-a的关系,是一种不稳定的包含关系。较强于一般关联,有整体与局部的关系,并且没有了整体,局部也可单独存在。如公司和员工的关系,公司包含员工,但如果公司倒闭,员工依然可以换公司。在类图使用空心的菱形表示,菱形从局部指向整体。这里写图片描述
6. 组合(Composition) : 表示contains-a的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期。是一种更强的聚合关系。部分不能脱离整体存在。如公司和部门的关系,没有了公司,部门也不能存在了;调查问卷中问题和选项的关系;订单和订单选项的关系。在类图使用实心的菱形表示,菱形从局部指向整体。这里写图片描述
7. 多重性(Multiplicity) : 通常在关联、聚合、组合中使用。就是代表有多少个关联对象存在。使用数字..星号(数字)表示。如下图,一个割接通知可以关联0个到N个故障单。这里写图片描述

聚合和组合的区别
这两个比较难理解,重点说一下。聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。
实例分析
联通客户响应OSS。系统有故障单、业务开通、资源核查、割接、业务重保、网络品质性能等功能模块。现在我们抽出部分需求做为例子讲解。
大家可以参照着类图,好好理解。
这里写图片描述
1. 通知分为一般通知、割接通知、重保通知。这个是继承关系。
2. NoticeService和实现类NoticeServiceImpl是实现关系。
3. NoticeServiceImpl通过save方法的参数引用Notice,是依赖关系。同时调用了BaseDao完成功能,也是依赖关系。
4. 割接通知和故障单之间通过中间类(通知电路)关联,是一般关联。
5. 重保通知和预案库间是聚合关系。因为预案库可以事先录入,和重保通知没有必然联系,可以独立存在。在系统中是手工从列表中选择。删除重保通知,不影响预案。
6. 割接通知和需求单之间是聚合关系。同理,需求单可以独立于割接通知存在。也就是说删除割接通知,不影响需求单。
7. 通知和回复是组合关系。因为回复不能独立于通知存在。也就是说删除通知,该条通知对应的回复也要级联删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ansys怎么删除线段_科学网—ansys常用命令 - 刘敬寿的博文

prep7/pnum,label,key!在有限元模块图形中显示号码。Label=欲显示对象的名称,node节点,elem元素,kp点,line线,area面积,volu体积;key0为不显示号码(系统默认),&#xff1…

nginx内存池大小快内存_使用直接内存时可以更快

nginx内存池大小快内存总览 使用直接内存不能保证提高性能。 考虑到它增加了复杂性,除非有充分的理由使用它,否则应避免使用它。 塞尔吉奥奥利维拉(Sergio Oliveira Jr)的这篇出色文章表明,这不仅仅是使用直接内存来…

Matlab归一化函数(mapminmax)

功能:将矩阵的每一行处理成[-1,1]区间。处理需要归一化的m*n矩阵X,归一化后的矩阵记为Y。 主要有5种调用形式 1.[Y,PS] mapminmax(X,YMIN,YMAX) 其中,YMIN是我们期望归一化后矩阵Y每行的最小值,YMAX是我们期望归一化后矩阵Y每…

ansible puppet saltstack三款自动化运维工具的对比

一、基础介绍 ansible基础介绍可参考:http://www.linuxidc.com/Linux/2017-12/149671.htm puppet基础介绍可参考:http://www.linuxidc.com/Linux/2017-12/149672.htm saltstack基础介绍可参考:http://www.linuxidc.com/Linux/2017-12/149675.…

Matlab repmat函数

repmat函数主要是以已知的数、向量或矩阵为基本元素,快速得产生一个大的矩阵,它的用法一般有下面几种: 1.使用相同元素初始化矩阵 A repmat(6,3,2) A 6 6 6 6 6 6 2.方块与矩形块格式 A diag([1 2 3]) b repm…

Linux虚拟地址空间布局

在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设…

我的方法在这方面看起来很大吗?

以下Java方法的大小是多少? public Collection getDescription() {SystemLibrary systemLib registry.get(SystemLibrary.class);Analysis analysis systemLib.getCurrentAnalysis(registry);return getDescription(analysis);}这个不起眼的方法查找某种系统库&a…

arduino 舵机接线图_求用5个电位器分别控制舵机的arduino的原码和连线图

按照上图连线,按照如下代码烧程序。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#define Sin_1 A0 //设置变阻器1路电压采集端口为A0#define Sin_2 A1 //设置变阻器2路电压采集端口为A…

Leetcode 152.乘机最大子序列

乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2,…

Matlab sumsqr函数

功能:求矩阵所有元素的平方和 调用形式: [s,n] sumsqr(x) 例1 a [1 2 3;1 2 3]; [s,n] sumsqr(a) s 28 n 6 例2 c [1 2 3 4;1 2 3 4]; [m,n] sumsqr(c) A sumsqr(c) m 60 n 8 A 60 可以看出n返回值是矩阵元素个数

Kali linux安装漏洞扫描工具Nessus指南

引子:Nessus是著名信息安全服务公司tenable推出的一款漏洞扫描与分析软件,号称是"世界上最流行的漏洞扫描程序,全世界超过75,000个组织在使用它"。尽管这个扫描程序可以免费下载得到,但是要从Tenable更新到所有最新的威胁信息,每年…

*p++和*(p++)的区别_同是华为顶级旗舰,P系和Mate系谁最值得购买?明白这点很重要!...

近两年,华为手机凭借P系列和Mate系列的优异设计和销量口碑,已经毫无争议地成为了国产品牌高端代表。同时,华为自身也牢牢占据住中国大陆市场份额第一名宝座,在全球名次中以微弱差距排在第三,与第二名的苹果iPhone厮杀激…

Matlab xlim ylim zlim函数

xlim([xl xr]); 用于限定x轴上下限,其中, xl:x轴下限 xr:x轴上限 ylim([yl yr]);zlim([yl yr])同理。 例子 x [1:0.1:10]; y 3*sin(x); subplot(2,1,1); plot(x,y) subplot(2,1,2); plot(x,y); ylim([-1,1]); …

在Myeclipse buildpath 加server lib (server runtime)

使用Myeclipse,将eclipse下的工程复制过来后,发现提示Tomcat 7.0 unbound。缺少Server Runtime。 解决方法如下: 1,File->New->Other->Server->Server(注意在new时,需要勾上Show All Wizards),下一步,选择…

Go--4大基本数据类型之布尔类型

一:布尔类的定义 布尔类型只取值true和false,且布尔类型只占一个字节,多用于逻辑判断 二:使用举例 转载于:https://www.cnblogs.com/louis181214/p/10196338.html

Excel中数字、数值和文本的区别

数字包括文本型数字和数值型数字两种形式,数值型数字可以计算,文本型数字不能计算。 例1:文本型数字不能计算 例2:数值型数字可以计算 数值型数字如果输入大于11位数,则会显示为科学计数法。如果输入001,则…

单片机全局有必要封装_MCU-C程序基本编程规范(转)

为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。本标准规定了程序设计人员进行程序设计时必须遵循的规范。本规范主要针对单片机编程语言和08编译器而言,包括排版、注释、命名、变量使用、代码可测性、程序效率、…

The selected server is enabled,but is not configured pro

The selectedserver is enabled,but is not configured properly.Deployment to itwill not be permitted until the problem is corrected.Pleasenavigate to the server preference pages and verify the field withthe prompt:tomcat jdk name: 翻译:选定的服务器…

懒惰评估

最近,我正在编写log4j附加程序,并希望在自定义附加程序创建过程中使用logger记录一些诊断详细信息,但是log4j初始化仅在创建附加程序实例后才完成,因此该阶段记录的消息将被忽略。 我感到需要在自定义附加程序中进行延迟初始化&a…

python基础_格式化输出(%用法和format用法)

%用法 1、整数的输出 %o —— oct 八进制%d —— dec 十进制%x —— hex 十六进制 >>> print(%o % 20) 24 >>> print(%d % 20) 20 >>> print(%x % 20) 14 2、浮点数输出 2.1 格式化输出 %f ——保留小数点后面六位有效数字  %.3f,保留…