1、概念 : UML这三个字母的全称是Unified Modeling Language,直接翻译就是统一建模语言,简单地说就是一种有特殊用途的语言。
2、作用 :UML可帮助我们做软件需求分析和软件设计的工作,是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。
类之间的关系
类与类一共有如下几种关系:泛化(Generalization)、实现(Realization)、依赖(Dependence)、关联(Association)、聚合(Aggregation)、组合(Composition)
1.泛化关系Generalization
2.实现关系Realization
3.依赖关系Dependence
4.关联关系Association
5.聚合关系Aggregation
6.组合关系Composition
3、分类
1)静态图:主要描绘了类、对象和数据结构及其存在于他们之间的关系。类图就是其中一种。
2)动态图 : 主要描绘执行流程、实体改变状态的方式。例如 : 流程图
3)物理图 : 描绘库文件、字节文件和数据文件等以及存在于他们之间的关系
二、如何用类图表示一个类
类图: 用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。

Person.java
publicclassPerson{publicintage;privateString mobilePhone;protectedcharsex;publicstaticvoidspeak(){}}
1、- 是private的意思,对应私有成员(变量、方法)
2、+ 是public 的意思,公开给外部访问的成员(变量、方法)
3、# 是protected的意思,只能在本类或子类访问成员(变量、方法)
4、UML 规定的属性(Attribute)表达式
可见性 名称:类型 [ = 缺省值 ]
其中 :
1> 可见性 :表示该属性对于类外的元素而言是否可见,
包括公有(public)、私有(private)和受保护(protected)三种,
在类图中分别用符号+、-和#表示
2> 名称 :表示属性名,用一个字符串表示
3> 类型 :表示属性的数据类型,可以是基本数据类型,也可以是用户自定义类型
4> 缺省值 :是一个可选项,即属性的初始值。
5、UML方法(Operation)表达式
可见性 名称(参数列表) [ : 返回类型]
其中 :
1> 可见性 : 定义与属性的可见性定义相同
2> 名称 : 即方法名,用一个字符串表示
3> 参数列表 : 表示方法的参数,其语法与属性的定义相似,参数个数是任意的,多个参数之间用逗号“,”隔开
4> 返回类型 : 是一个可选项,表示方法的返回值类型,
依赖于具体的编程语言,可以是基本数据类型,
也可以是用户自定义类型,还可以是空类型(void),
如果是构造方法,则无返回类型。
6、内部类的表示

person.java
三、类和类之间(常见)的关系
1、单向关联
单向实线加箭头表示->

单向关联
publicclassCustomer{publicAddress address;//定义为成员变量// 其他代码}publicclassAddress{//其他代码 }
2、双向关联

双向关联
publicclassCustomer{publicProduct products;//一些其他代码}publicclassProduct{publicCustomer customer;//一些其他代码}
3、自关联

自关联
4、聚合关系(多只雁子组成和雁群)

聚合关系
也有将聚合关系表示如下图

聚合关系
//雁群类publicclassGooseGroup{privateGoose groose;publicGooseGroup(Goose groose){this.groose=groose;}}// 雁子类publicclassGroose{}注意 : 雁子类可单独存在,生命周期不跟雁群类绑定
5、组合关系(雁子有翅膀)

组合关系
也有将 组合关系表示如下图

组合关系
组合关系在Java 代码表示如下:
// 雁子类publicclassGoose{publicWing wing;publicGoose(){this.wing=newWing();}}//翅膀类publicclassWing{}注意 : 翅膀类在雁子类的构造函数中进行实例化,因此两者紧密耦合在一起,同生同灭,翅膀类不能脱离大雁类存在。
注意: 聚合和组合的区别主要是在构造函数上面的区别。聚合关系中,整件不会拥有部件的生命周期。组合关系中,整件拥有部件的生命周期。
6、多重性关系
表示两个关联对象在数量上的对应关系。在UML中,对象之间的多重性可以直接在关联直线上用一个数字或一个数字范围表示

多重性关系

多重性关系
在java中代码标示如下:
publicclassTools{publicButton buttons[];}publicclassButton{}
7、依赖关系
大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。

依赖关系
在java中代码标示如下:
// 父类publicclassPerson{publicvoiddrive(Car car){car.drive();}}// 汽车类publicclassCar{publicvoiddrive(){//执行一些任务}}
8、泛化(继承)关系

继承
在java中代码标示如下:
// 父类publicclassPerson{publicStringname;publicintage;publicvoidspeak(){}}// 学生类publicclassStudentextendsPerson{publicStringstudentNo;//特有学习能力publicvoidstudy(){}}// 教师类publicclassTeacherextendsPerson{publicStringteacherNo;// 特有的教书能力publicvoidteach(){}}
9、接口和实现关系

接口实现
在java中代码标示如下:
publicinterfaceVehicle{publicvoidmove();}publicclassShipimplementsVehicle{publicvoidmove(){}}publicclassCarimplementsVehicle{publicvoidmove(){}}
作者:时光机器01
链接:https://www.jianshu.com/p/a4226c003728
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。