UML语言组成
uml主要有是三大块组成, 组件, 关系, 图。组件是最小的原子结构体, 关系描述组件之间的联系, 图由组件和关系描述组成的更大结构体。
组件
组件是抽象的最小的原子实体,分为结构组件, 行为组件, 分组组件, 注释组件。
结构组件
结构组件是UML模型中的静态部分, 用于呈现概念和实体的表现元素,主要包含7个结构组件
组件 | 英文 | 解释 | 图例 |
---|---|---|---|
类 | Class | 具有相同属性,方法的对象集合 | |
接口 | Interface | ||
节点 | Node | 运行时存在的物理元素 | |
用例 | User case | ||
协作 | Collaboration | 定义元素之间的相互作用 | |
组件 | Component | 物理系统的一部分 | |
活动类 | Active class | 指对象有一个或者多个进程或者线程 |
行为组件
行为组件是UML模型中的动态部分, 用于呈现运行时的动态动作,主要包含2个行为组件
组件 | 英文 | 解释 | 图例 |
---|---|---|---|
交互 | Interaction | 一组元素之间的数据的交互 | |
状态机 | state machine | 由一系列对象状态组成 |
分组组件
结构组件,行为组件, 分组组件都可能会在分组组件中, 只存在于开发阶段
组件 | 英文 | 解释 | 图例 |
---|---|---|---|
包 | package | 包组件 |
注释组件
对UML模型对象进行解释的组件。 | 组件 | 英文|解释 | 图例 | | —- |—| —————- | —————————————————- | | 注释 | note|对其他组件的解释 | |
图
UML建模语言中的图一共有13种, UML1.5中有9中, 分别是, 类图, 对象图, 构件图, 部署图, 活动图, 状态图, 用例图, 时序图, 协作图。 UML2.0中增加4中, 包图, 组合结构图,时间图, 交互概览图。
细化分,开发时的结构图, 运行时的行为图和交互图。
图 | 英文 | 解释 |
---|---|---|
类图
类图由类名, 成员变量和方法组成。抽象方法和抽象类名用斜体。
类名,字符串
成员变量
[可见性]属性名:类型[=默认值] 可见性包括,public, private, protected, friendly, 分别用+ - # ~标识
方法
[可见性]方法名(参数列表)[:返回类型]
类图关系
依赖关系
依赖(dependency)是耦合性最弱的临时性关联。某个方法通过局部变量, 方法参数, 调用某个静态方法的方式进行耦合另一个类。
表现方式:依赖关系用带箭头的虚线表示,从使用类指向被使用类
关联关系
关联(Association)是对象间的一种引用关系,可以是双向的也可以是单向的。
表示方式:双向的可以用带两个箭头或者没有箭头的实线表示。单向的关联用带一个箭头的实线表示。
聚合关系
聚合(Aggregation)是对象之间的一种强关联关系, 整体与部分的关系, 是拥有的关系(has-a)。
表现方式:空心菱形实线表示, 菱形指向整体部分。
组合关系
组合(Composition)是相对聚合更强烈的强关联关系。是包含的关系(contain-a)。
表现方式:实心菱形实线表示,菱形指向整体部分。
泛化关系
泛化(Generalization)关系是对象之间耦合度最松的一个,代表子类和父类的关系,是一种继承关系, 是is-a关系
表现形式:空心三角箭头的实线表示,箭头由子类指向父类。
实现关系
实现(Realization)是接口与实现类之间的关系。
表现形式:空心三角箭头虚线,箭头有实现类指向接口
设计原则
设计原则 | 一句话归纳 | 目的 |
---|---|---|
开闭原则 | 对扩展开放,对修改关闭 | 降低维护带来的新风险 |
依赖倒置原则 | 高层不应该依赖低层,要面向接口编程 | 更利于代码结构的升级扩展 |
单一职责原则 | 一个类只干一件事,实现类要单一 | 便于理解,提高代码的可读性 |
接口隔离原则 | 一个接口只干一件事,接口要精简单一 | 功能解耦,高聚合、低耦合 |
迪米特法则 | 不该知道的不要知道,一个类应该保持对其它对象最少的了解,降低耦合度 | 只和朋友交流,不和陌生人说话,减少代码臃肿 |
里氏替换原则 | 不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义 | 防止继承泛滥 |
合成复用原则 | 尽量使用组合或者聚合关系实现代码复用,少使用继承 | 降低代码耦合 |