UML类图

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. 参考资料

大话设计模式

UML类图与类的关系详解

什么是UML,UML类图

Java类之间的关联关系

posted @ 2019-07-11 13:36  lbr617  阅读(684)  评论(1编辑  收藏  举报