UML类图归纳
作为一个程序员,掌握UML类图是开发和阅读程序的基础。
转载请注明地址http://www.cnblogs.com/zrtqsk/p/3739288.html,谢谢!
一、基本介绍
UML是一种标准的图形化建模语言。类图显示了一组类、接口、协作以及他们之间的关系。UML类图是一种静态视图的图形表达方式,通过它,编程人员可以更清楚的了解系统中类与类之间的关系。
类图的基本模型元素如下:
我们可以看到,一个类图表示为长方形,分为3部分,最上面是类名,中间是类的属性,下面是类的操作。
抽象类和接口和类图是类似的,下面将详细讲解。
二、基本定义
1、属性
如图:
属性一般通过如上的格式表示——<访问权限><属性名>:<属性类型>=<初始值>
对于可见性 : +表示public,-表示private,#表示protected,没有符号表示默认包访问权限
(如果一个属性只在类的内部使用,一般称为Attribute。若提供了相应的get、set方法,一般称为Property)
2、方法
如图:
方法一般通过如上格式表示——<访问权限><方法名>:(<参数1名>:<参数1类型>,<参数2名>:<参数2类型>):<返回值类型>
静态方法用下划线表示。
抽象方法,整条操作都用斜体表示。
3、类和接口
抽象类
抽象类和接口都是类名用斜体表示,接口还可以用一个圆圈表示。
三、关系
1、关联
关联关系一般用一条直线表示。
1)普通关联
—— 用一条箭头表示关联的方向。
—— 图中的数字表示重数
0..1 表示 0或1个对象
0..*或0 表示 0到多个对象
5..8 表示 5到8个对象
2 表示 2个对象
没有标示 表示 1个对象
2)递归关联
表示一个类和自身有关联关系。
3)聚合关联
表示类与类具有“整体与部分”的关系,用一个空心菱形表示整体。
4)合成关系(强聚合)
表示部分不能脱离整体而存在。用一个实心的菱形表示整体。
2、泛化(继承)
用一个实线加一个空心的箭头表示,继承的一方指向被继承的一方。
3、实现
用虚线加一个空心的箭头表示,实现的一方指向接口。
4、依赖
用一个虚线箭头表示。即类Client用到了RightDao和RightDaoImpl。
(部分内容参照《研磨设计模式》)
UML类图归纳的更多相关文章
- UML类图的6大关系
<小酌重构系列>已经完成了大约1/3了,在这些文章中,我使用了一些简单的类图来描述重构策略.在之后的文章中,我可能会借助稍微复杂一些的UML类图来介绍.但是在此之前,我觉得有必要先介绍一下 ...
- 四步轻松实现用Visio画UML类图
本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对Visio画UML类图的步骤一定会有所了解. 用Visio画UML类图 对于画类图的工 ...
- php设计模式——UML类图
前言 用php开发两年多了,准备也写一下平时常用的设计模式,都是基于自己的实践经验,当然,用设计模式之前首先要看懂设计模式,因此这里首先讲解一下UML类图.通过UML类图,能更好的和大家交流,也能很容 ...
- UML类图(下):关联、聚合、组合、依赖
前言 上一篇文章UML类图(上):类.继承.实现,讲了UML类图中类.继承.实现三种关系及其在UML类图中的画法,本文将接着上文的内容,继续讲讲对象之间的其他几种关系,主要就是关联.聚合.组合.依赖, ...
- UML类图(上):类、继承和实现
面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...
- UML类图几种关系的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...
- UML类图关系全面剖析
UML的类图关系分为: 关联.聚合/组合.依赖.泛化(继承).而其中关联又分为双向关联.单向关联.自身关联:下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里. 1.关联 双向关联:C1- ...
- UML类图关系--继承(泛化)、实现、关联、聚合、组合、依赖
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composi ...
- [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图
[.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...
随机推荐
- json对象转为字符串,当做参数传递时加密解密
[son对象 字符串 互相转行] 比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex ...
- Java是如何处理别名(aliasing)的
什么是Java别名(aliasing) 别名意味着有多个别名指向同一个位置,且这些别名有不同的类型. 在下面的代码例子中,a和b是两个不同的名字,有不同的类型A和B,B继承A B[] b = new ...
- 【转载】Linux NFS服务器的安装与配置
一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...
- 【转】虚拟机VMware3种网络模式(桥接、nat、Host-only)的工作原理
VMware网络配置详解一:三种网络模式简介 安装好虚拟机以后,在网络连接里面可以看到多了两块网卡: 其 中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口, ...
- (转,有改动)测试网页响应时间的shell脚本[需要curl支持]
用法及返回结果如下: [root@myserver01 tmp]# sh test_web.sh -n500 http://www.baidu.com Request url: http://www. ...
- mysql密码相关
Windows中修改密码在不同场景下,有以下几种方案: 方法1:用SET PASSWORD命令,具体更新密码步骤如下: c:>mysql -u root mysql>set passw ...
- 不要轻易使用linq代替sql
使用Entityframework+Reposity模式 写出的代码执行效率极低. Linq代码: var querySql = rel_project_personservice.GetItems( ...
- LNMP+zabbix分布式监控搭建及版本升级
LNMP+zabbix分布式监控搭建需要组件:gcc gcc-c++ openssl* pcre pcre-devel gd gd-devel libjpeg-devel libpng-devel l ...
- 工作中常用的Linux命令:find命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6056571.html (转载请注明出处) 1.命令格式 find [-H] [-L] [-P] [-D deb ...
- Java Hello World例子和添加按钮事件与功能
新建android工程,然后默认“下一步”即可完成创建: 2.添加Button 3.在src的MainActivity.java添加以下红色代码 import android.support.v7.a ...