什么是UML
1、UML : Unified modeling language : 统一建模语言。
是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果。
2、UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系。
比如 类、接口、实现、繁华、依赖、组合、聚合等。
UML 类图
类图 是 描述 类 与 类 之间关系的图。
1、用于描述 系统中的 类本身的组成、类之间的各种关系;
2、类之间的关系 :依赖、泛化(继承)、实现、关联、聚合、组合。
3、类图中 +号 表示 公有属性、 -号表示 私有属性、#号表示 受保护属性、/ 表示静态成员。
下面 重点看一下 这六种关系 和 对应的方式方式。
类图-依赖关系(Dependence)
【定义】:一个类的变化,会影响另一个类的使用或实现。
只要是在类中用到的其他的类,那么他们之间就存在依赖关系。
如果没有对方,就连编译都通过不了。
1)类的成员变量 是 另一个类的对象;
2)类的方法的参数 是 另一个类的对象;
3)类的方法的返回值 是 另一个类的类型;
4)类的方法中 使用到了 另一个类。
【符号】:一条带箭头的虚线,箭头指向被依赖的类。
【举例】:一个类的方法参数中使用到了另一个类的对象。
Person 类 中 依赖 IDCard 类。
现实含义 : IDCard 是身份证类,Person 是 公民类。每一个公民都有一个身份证信息。
类图-泛化(Generalization)
【定义】:泛化关系 就是 继承关系。
如果 A类 继承了 B类,那么 A 和 B 就存在泛化关系。
【符号】:一条 有空心三角形箭头的 实线,指向 父类。
【举例】:一个类继承了另一个类。
类图-实现关系(Implementation)
【定义】:实现关系 就是 接口 和 实现类 之间的关系。
如果 B类 实现了 接口 A,则二者之间就是 实现关系。
【符号】:一条 有空心三角形的虚线,指向 接口。
【举例】:一个类,实现了 一个接口。
类图-关联关系(Association)
【定义】:关联关系 用于表示 不同类之间的一种结构化的关系,描述了对象之间是如何相互作用的。
(是依赖关系的特例)
1、角色名称 : 可以在关联的两端 标注 名称用于区分理解;
2、多重性 :定义了一个类的对象可以与另一个类的多少个对象进行关联,写在关联线的两端:
【1】 : 表示只有1个;
【0..1】 : 表示 0个 或 1个;
【0..*】 或【*】 :表示 0个 或 多个;
【1..*】: 表示 1个 或 多个。
3、导航性 (种类):
【单向关联】:只有从一个类 到 另一个类单方向 的关联;
【双向关联】:两个类互相都可以访问对方;
【自关联】:一个类与其自身之间的关联。
【符号】:一条 实线 ,如果需要指定关联的方向,可以添加箭头,箭头指向被依赖的类。
【举例】:一个人可以有多辆车。
类图-聚合关系(Aggregation)
【定义】: 表示 整体 和 部分 的关系,且 整体 与 部分 是可以分开的,部分对象可以独立存在。
(是关联关系的特例)
1、整体和部分之间是一种松散的关联,整体不存在了,部分 仍然可以独立存在。
2、部分对象不是由整体对象创建的,而是可以在外部创建后添加到整体中。
3、多重性:一个整体可以包含多个部分;一个部分可以参与多个整体。
4、导航性:通常情况下是单项的,由 整体到部分。
【符号】: 一条 带有 空心菱形箭头 的 实线,箭头指向整体类。
【举例】:一个汽车 有 四个轮胎;汽车 如果报废了,但是 轮胎还可以继续给别的车用。
类图-组合关系(Composition)
【定义】:表示 整体与部分的关系,但是 整体与部分不可以分开。
1、部分对象的生命周期完全依赖于整体对象,整体对象被销毁,则部分对象也会被销毁;
2、独占性 :部分对象只能属于一个整体对象,不可以共享给其他整体对象。
3、多重性 :部分对象的多重性只能是 【0...1】,表示 只能属于一个整体。
4、导航性 :通常是单项的,只能从整体到部分。
【符号】:一条 带有实心菱形箭头的实线,箭头指向整体。
【举例】:一个房子有多个房间。