1. UML类图是什么
UML是统一建模语言,是一种可视化的面向对象建模语言,是一种用来对真实世界物理进行建模的标准标记,用图形方式表现典型的面向对象系统的整个结构。
如果把软件当作房子,那么类图就是房子的施工图了.
通过类图,就能实际的把系统中的各个类,即对象描述清楚,下一步就是按照这个详细的设计编码了。
2. 工具下载&使用
我用的是Enterprise Architect 12.1(以下简称EA)这个工具画UML类图的,这个工具十分强大,还可以把数据库的表逆向生成UML图.Enterprise Architect下载
2.1 创建新项目
安装成功后我们来创建一个项目小试身手.
这里的东西是模板自动生成的,可以点击看看,学习一下.我这里都删了,然后重新创建.
2.2 创建类图
创建一个类:
详细页设置属性和方法:
设置属性:
设置方法:
一个类就创建好了:
再来个简单的例子 : 我们有一个动物的接口、狗的抽象类,还有一个泰迪的类,它们的关系是泰迪继承狗的抽象类,狗的抽象类实现动物接口,它们都有一个公共的叫声(cry)方法.
用UML类图画一下它们三个的关系.
2.3 EA添加复杂类型参数的方法
点击类图的添加方法和参数,只能选择基本类型,那么如何创建复合类型的返回值呢.
现在我们已经对类图的基本结构、访问修饰符在类图的符号有了一个基本的了解,
接下来做一个进阶一点的学习.
3. UML类图概述
这是网友总结的UML类图使用案例,很详细,功能很全.
4. UML类图详解
通过上面的图对UML有一个整体的认识,接下来我会对UML类图中的一下几种关系为大家做一个详细的介绍:
- 泛化: 图形是空心三角+实线
- 实现: 图形是空心三角+虚线
- 关联: 图形是箭头+实线
- 组合: 图形是实心菱形+ 实线箭头
- 聚合: 图形是空心菱形+箭头
- 依赖: 图形是箭头+虚线
4.1 泛化
定义: 泛化是一种继承关系,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
符号: 空心三角指向父类
示例: 泰迪是狗的一个种类,所以泰迪继承狗.
4.2 实现
定义: 是一种类与接口的关系,表现是类是接口所有特征和行为的实现
符号: 空心三角指向父类
示例: 狗是一种动物,所以狗实现动物的接口
4.3 关联
定义:
关联是一种结构关系,说明一个事物的对象与另一个事物的对象相联系.
给定有关联的两个类,可以从 一个类的对象得到另一个类的对象.
关联有两元关系和多元关系,两元关系是指一种一对一的关系,多元关系是一对多或多对一的关系。两个类之间的简单关联表示了两个同等地位类之间的结构关系。
当你想要表示结构化关系时使用关联。(可以想想数据库表的关联关系)
通常情况下,关联关系是通过类的成员变量来实现的.
符号: 箭头指向被拥有者
示例: 一个公司雇员,公司与雇员之间就是一种关联关系。
代码:
//公司
public class Company {
//一个公司雇员,公司与雇员之间就是一种关联关系。
private Employee emp ;
}
public class Employee{
}
关联关系还可以细分为聚合和组合两种.
4.4 聚合
定义: 聚合表示一种弱的"拥有"关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分.
符号: 空心菱形指向整体
示例: 雁群包含大雁,但是大雁可以脱离雁群
4.5 组合
定义: 组合是一种强的"拥有"关系,体现了严格的部分和整体关系,部分和整体的生命周期一样 部分不能离开整体存在.
符号: 实心菱形指向整体
示例: 以躯干划分,人是由身体、四肢组成的,胳膊不能脱离人单独存活.
4.6 依赖
定义: 依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一个事物使用另一个事物时使用。
依赖关系的使用形式: 局部变量、方法的参数或者对静态方法的调用
符号: 虚线箭头指向被拥有者.
示例: 通常情况下,依赖关系体现在某个类的方法使用另一个类作为参数,例如人类使用螺丝刀.
代码:
//螺丝刀,作为人类的工具,是用来被人类使用的
public class Screwdriver {
}
public class Person{
//拧螺丝,需使用螺丝刀
public void screw(Screwdriver src){
}
}
5. 参考资料
大话设计模式