UML类图相关实践
最近看了下设计模式,其中无可避免会设计很多类图,UML类图对于学习设计模式很重要,关于设计模式,我也会在这里写上一写,这一篇关于UML类图的就先当个铺垫。
1.先上一个简单的类图来简单说明下:

1).其中MyClass代表的是类名。
2).name,gender和age分别代表成员变量,其中+代表public,#代表product,-代表private,冒号后面的String标示的都是成员变量的类型。
3).getAge和setAge代表的是方法,前面的+跟成员变量标示的意义一样标示public,其中setAge中的String标示接收一个String类型的参数,冒号后面的代表的是返回值。
2.类与类之间的关系
类与类之间的关系分为,关联关系,聚合关系,组合关系,依赖关系和泛化关系,下面分别说下
1).关联关系:两个相对独立的对象,当一个对象的实例与另外一个对象的特定实例存在固定关系时,这两个对象之间就存在关联关系。关联关系又分为单向关联,双向关联,自身关联和多维关联。
单关联,写IO相关类时候都写过类似于这样的代码 new BufferInputStream(new FileInputStream("d:\\my.txt"));
其中BufferInputStream类持有一个FileInputStream的引用,通过构造方法传入的,这样就是一个单关联

双关联,举个简单的例子,我们都当过学生,我们都有很多老师,同样一个老师也有很多学生,类图如下

代码如下:
public class Teacher {
private final static List<Student> students = new ArrayList<Student>();
public void putStudent(Student student) {
students.add(student);
}
}
public class Student {
private final static List<Teacher> teachers= new ArrayList<Teacher>();
public void putTeacher(Teacher teacher){
teachers.add(teacher);
}
}
自关联,说实话没想起什么好的例子,可以拿单例看下

多维关联,例如一个页面可以有多个文本框,但一个文本框只能在一个页面下

2).聚合关系:聚合关联是一种特殊的关联. 它表示类间的关系是整体与部分的关系. 简言之: 关联关系中的一个类描述了一个较大的事物, 它由较小的事物组成.
比如一个软件工程专业有很多课程组成,其中Java这个课程从这个专业拿掉,这个专业还是软件工程,而Java还是可以单独存在的。

3).组合关系:整件拥有部件的生命周期, 所以整件删除时, 部件一定会跟着删除. 而且, 多个整件不可以同时共享同一个部件。
说个人的例子吧,人由很多部分组成,其中一部分是骨骼,如果人没了,那其实骨骼也就没生命力了,骨骼不可能脱离人这个整体而单独存在。

4).依赖关系:表示一个事物的使用需要另外一个事物的行为,就像老司机开车,除了老司机类的开车方法里需要调用车的移动方法。

5).泛化关系:这就是一种继承关系,它代表父类和子类之间的关系。

其实还有一种就是接口的实现关系

好了这个UML类图就简单到这,画的不好,而且风格不统一(家里的版本和公司的不一样啊!),这个类图看的清楚对设计模式的学习很重要!就酱!
参考:
http://blog.csdn.net/column/details/umlmodelingtechnolog.html
UML类图相关实践的更多相关文章
- 使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
2.使用工厂方法模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
- 1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
1.使用简单工厂模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
- UML类图概述、设计模式
深入浅出UML类图(http://blog.csdn.net/lovelion/article/details/7843308) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相 ...
- OO第四单元总结——查询UML类图 暨 OO课程总结
一.本单元两次作业的架构设计总结 作业一.UML类图查询 1. 统计信息图 2. 复杂度分析 基本复杂度(Essential Complexity (ev(G)).模块设计复杂度(Module Des ...
- 设计模式学习笔记(详细) - 七大原则、UML类图、23种设计模式
目录 设计模式七大原则 UML类图 设计模式分类 单例模式 工厂设计模式 简单工厂模式 工厂方法模式(使用抽象类,多个is-a) 抽象工厂模式(使用接口,多个like-a) 原型模式 建造者模式 适配 ...
- [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图
[.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...
- UML——在Visual Studio 2013/2015中设计UML类图
1.UML简介 Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是 ...
- 转:深入浅出UML类图(具体到代码层次)
深入浅出UML类图 作者:刘伟 ,发布于:2012-11-23,来源:CSDN 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML ...
- [转载]UML类图总结
前言 类图和序列图是UML中最常用的两种Diagram.我将做详细的总结.在许多书中,或者网站中,在介绍一个系统的子系统的设计时,很多时候,都是给出简单的类图来简述构成子系统的类之间的关系.这足以说明 ...
随机推荐
- 魔兽争霸3 replay 格式
******************************************************************************* * WarCraft III Repla ...
- 没有找到cxcore100.dll,因此这个应用程序未能启动,重新安装应用程序可能会修复此问题
第一种情况: 出现这个问题多数是因为“环境变量PATH”未设置,虽然你可能在安装的过程中勾选了Add <...>\OpenCV\bin to the system PATH项!安装Open ...
- [OpenCV] Image Processing - Image Elementary Knowledge
"没有坚实的理论基础,实践只会浅尝于表面." 这是两本打基础的书,没系统学过的话,怎么好意思说自己会CV. 该领域,兴军亮 这个名字屡次出现,看来是计算机视觉领域国内的年轻才俊,向 ...
- [Python] Interpreter setting in Pycharm
From: http://blog.csdn.net/u013088062/article/details/50135135 From: http://blog.csdn.net/u013088062 ...
- 受限玻尔兹曼机(RBM)学习笔记(一)预备知识
去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原 ...
- Pattern Lab - 构建先进的原子设计系统
Pattern Lab 是一个工具集,帮助您创建原子设计系统.在它的核心,是一个自定义静态网站生成器,构建了类似原子,分子和界面结合在一起,形成模板和页面.Pattern Lab 可以作为项目的模式库 ...
- 新找到一个安装Android SDk的方法-记录
此方法需使用国内的镜像,但是国内镜像网速不一定要很快. 迅雷下载工具这个是必须的. 今天注意到SDK目录下有一个temp文件夹,打开看了看发现就是缓存的目录,因此想到直接从镜像站下载相应的包来替换,测 ...
- 使用Eclipse调试PHP程序
我安装的是PHP Version 5.3.26,按照网上提示在Eclipse中使用XDebug进行调试,不过配置了却使用不了,下面把解决方法简要说一下. XDebug老是加载不了 From PHP 5 ...
- JS魔法堂:通过marquee标签实现信息滚动效果
一.前言 有限的空间展现无限的内容,这是滚动最常用到的地方.根据信息滚动效果我们可以有很多的实现方式,但HTML自带的 marquee标签 是其中一个较简单的实现方式.下面记录一下,供日后查阅. ...
- KeyValue Config
public class ConfigHelper { public static ScriptsHelper Scripts { get { return new ScriptsHelper(); ...