前言
最近在学习程杰老师的《大话设计模式》,觉得非常不错,就做了一些学习笔记和总结。如果对设计模式很感兴趣的,可以直接阅读书籍,相信会有更多的收获。
本人小菜一枚,如果理解的不对的还请多多指教。
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类图可用于描述每一个设计模式的结构以及对模式实例进行说明,而模式结构又是设 ...
随机推荐
-
echarts图表标签(axisLabel)折行
在项目中遇到了一个echarts图表标签过长需折行的需求,so引出这篇总结,啦啦啦有帮助就多多支持啦,撒花撒花撒花~~~~ 在此不对echarts其他用法做解释,详细见echarts文档(点击前往) ...
-
sql server where、group by、order by 执行顺序
2012-02-07 19:39 先where 条件1,再 group by 条件2再 order by 条件3 如果声明了 GROUP BY 子句,输出就分成匹配一个或多个数值的不同组里. 如果出现 ...
-
任务定义器——SocketProcessor
将socket扔进线程池前需要定义好任务,要进行哪些逻辑处理由SocketProcessor定义,根据线程池的约定,作为任务必须扩展Runnable.用如下伪代码表示 protected class ...
-
GitHub 系列之「怎样使用 GitHub?」
1.写在前边的话,为什么要写CitHub? 跟朋友在交流的时候听到求职的时候发现有些公司要附Github帐号,一个优秀的 GitHub 账号当然能让你增色不少.自己之前听说过,但没有花时间研究,最后花 ...
-
redis命令大全参考手册
redis功能强大,支持数据类型丰富,以下是redis操作命令大全,基本上涵盖了redis所有的命令,并附有解释说明,大家可以收藏.参考,你一定要知道的是:redis的key名要区分大小写,在redi ...
-
Intro to Python for Data Science Learning 7 - 2D NumPy Arrays
2D NumPy Arrays from:https://campus.datacamp.com/courses/intro-to-python-for-data-science/chapter-4- ...
-
Enable CSS active pseudo styles in Mobile Safari
http://alxgbsn.co.uk/2011/10/17/enable-css-active-pseudo-styles-in-mobile-safari/ document.addEventL ...
-
hdu 2852 KiKi&#39;s K-Number (线段树)
版权声明:本文为博主原创文章,未经博主允许不得转载. hdu 2852 题意: 一个容器,三种操作: (1) 加入一个数 e (2) 删除一个数 e,如果不存在则输出 No Elment! (3) 查 ...
- SQL基本点—— 思维导图
-
SQL 随手记
SQL 学习片段: 建立一个简单的联系数据表, mobile_number char(11).mobile_province nvarchar(50).mobile_area nvarchar(200 ...