学习一之UML类图
前言
最近在学习程杰老师的《大话设计模式》,觉得非常不错,就做了一些学习笔记和总结。如果对设计模式很感兴趣的,可以直接阅读书籍,相信会有更多的收获。
本人小菜一枚,如果理解的不对的还请多多指教。
UML类图说明

继承关系
如鸟类要继承动物类时,用空心三角形+实线指向动物类,如下

实现接口
和普通类比,接口类第一层有个<< interface >>标识。当某个类要实现接口时,用空心三角形+虚线指向接口类,如下

关联关系
当一个类“知道”另一个类时,就可以用关联。关联关系用实线箭头表示。如下,企鹅知道天气的变化,则可以用实线箭头指向天气类。在代码中的具体表现为,企鹅类中会有个天气对象的成员属性,该天气类可以在构造函数里实例化。

依赖关系
依赖关系表示一个类需要引用另一个类的对象。和关联关系不同的是,在关联关系中被应用的对象以类的成员属性形式被引用,而依赖关系中被引用的对象通常是在类方法中以局部变量的形式引用。该局部变量可以是类方法的参数,也可以是在类方法中获得的一个实例。比如动物需要新陈代谢,而新陈代谢依赖与水和氧气。在代码中体现为,新陈代谢这个方法需要用到水和氧气这两个对象,但其它类方法不一定需要用到。


聚合关系
聚合关系表示一种弱的“拥有”关系。如A对象可以包含有B对象,但B对象不是A对象的一部分。如雁群和大雁就是一种聚合关系。聚合关系用空心菱形+实线箭头表示。在代码里,雁群会有一个数组,存放大雁对象。具体如下


组合关系(合成关系)
组合关系(也称合成关系)表示一种强的“拥有”关系,强调了部分和整体的关系。注意,部分和整体的生命周期是一样的。如鸟和翅膀就是一个组合关系。组合关系用实心菱形+实线箭头表示。在代码中,为了保证部分和整体的生命周期是一致的,所以在整体类的构造函数中必须初始化部分类实例。具体如下

总结
关联关系和依赖关系,组合关系和聚合关系这几个通常会比较难理清楚。可以通过以下几点来区分
- 关联关系,聚合关系和组合关系都是通过类的成员属性来引用类对象,这三种关系在代码实现上基本相同,只是从业务场景上作区分。
- 依赖关系是通过类方法的局部变量来引用类对象的,所以可以根据这点来判断是否是依赖关系。
- 依赖关系和聚合关系可以看做是一种“弱”关系,所以在画图时都是用虚线和空心菱形。而关联关系和组合关系是一种“强”关系,所以连线时用实线和实心菱形。可以这么理解强弱关系,如相对类成员属性,局部变量影响更小,所以更弱些。
学习一之UML类图的更多相关文章
- 设计模式学习——准备(UML类图)
前言 其实吧,最早接触UML是源于软件设计师的考试,半路出家实在难为我了.学设计模式总是要画类图的,所以补充UML的类图的知识是很重要滴.第一篇就偷懒一点copy别人的东西了.实话说,我们都是踩在巨人 ...
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父 ...
- UML[1] UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)(转)
转自:http://blog.csdn.net/zhaoxu0312/article/details/7212152 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是 ...
- 【UML】UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的 ...
- UML类图关系(继承、泛化、实现、依赖、关联、聚合、组合)
继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者 ...
- UML类图关系表示方法
本文转载: http://blog.csdn.net/fengsh998/article/details/8105631 分类: UML2012-10-24 10:18 1175人阅读 评论(0) 收 ...
- 设计模式学习起点 UML类图笔记
UML类图笔记 大学开设的软件设计课程一般都会学习UML类图,大部分关于设计模式的描述都是使用的UML类图,可以说类图的表示是学习设计模式的起点.UML定义类之间的关系主要有六种:泛化关系.实现关系. ...
- UML学习(二)-----类图
UML学习(二)-----类图 http://www.cnblogs.com/silent2012/archive/2011/09/07/2169946.html http://www.cnblogs ...
- 设计模式学习(二):面向对象设计原则与UML类图
一.UML类图和面向对象设计原则简介 在学习设计模式之前,需要找我一些预备知识,主要包括UML类图和面向对象设计原则. UML类图可用于描述每一个设计模式的结构以及对模式实例进行说明,而模式结构又是设 ...
随机推荐
- BZOJ 3110: [Zjoi2013]K大数查询 [整体二分]
有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少. N ...
- Windows Azure Virtual Network (11) 虚拟网络之间点对点连接VNet Peering
<Windows Azure Platform 系列文章目录> 在有些时候,我们需要通过VNet Peering,把两个虚拟网络通过内网互通互联.比如: 1.在订阅A里的Virtual N ...
- SpringMVC之Http标准的头部信息
- 小甲鱼OD学习第11讲
这次我们的任务是破解这个需要注册的软件,如下图所示 我们这次从字符串入手,我们查找 unregistered 字符串 然后我们在如下图的字符串下断点 然后我们来到断点处,我们观察到 地址为 0040 ...
- SSE图像算法优化系列十六:经典USM锐化中的分支判断语句SSE实现的几种方法尝试。
分支判断的语句一般来说是不太适合进行SSE优化的,因为他会破坏代码的并行性,但是也不是所有的都是这样的,在合适的场景中运用SSE还是能对分支预测进行一定的优化的,我们这里以某一个算法的部分代码为例进行 ...
- apache服务器主域名跳转www域名
为集中网站权重,有时候我们需要把www域名跳转到主域名,或者主域名跳转到www域名. apache服务器如何实现主域名跳转www域名: 打开网站根目录下.htaccess文件,没有的话新建一个上传至网 ...
- Dynamics 365 Online-多选域
参与过Dynamics CRM相关工作的朋友们都知道,Dynamics 365之前并没有多选域字段,想要实现多选域,需要自己添加WebResource定制,而这也带来了一系列需要考虑的情况,比如额外的 ...
- C/C++语言简介之发展历史
C语言之所以命名为C,是因为 C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言. 1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BC ...
- KV型内存数据库Redis
Redis是开源的高性能内存Key-Value数据库, 可以提供事务和持久化支持, 并提供了TTL(time to life)服务. Redis采用单线程数据操作+非阻塞IO的模型,非阻塞IO提供了较 ...
- win10安装mongodb及配置 和 mongodb的基本使用(node环境)
mongodb安装 下载地址: https://www.mongodb.com/download-center 下载后,我们点击mongodb-win32-x86_64-2008plus-ssl-3. ...