面向对象
基本概念
OOSD=OOA+OOD+OOP
关联 association
组成 Composition
多态性 polymorphism
聚集 aggregation
共享聚集 Shared Aggregation
组成 Composition
继承 inheritance
共享聚集 Shared Aggregation
OOA
1.识别对象
2.标识对象属性
3.识别对象行为
4.识别对象所属的类
OOD
模块化
抽象
信息 隐藏
低耦合
高内聚
OOP
所有对象赋予属性和方法 更人性化
UML
UML实现与部署
组件图
配置图
5类图 9种图形
用例图
静态图
行为图
交互图
实现图
用例图
----> <<include>>
子用例-----▷父用例
静态视图
类图
类
类名(Wall or java::awt::Wall)
首字母大写
正体为可实例化,斜体为抽象类
两个单词合并第二个首字母大写
[类的属性]
单个单词首字母小写
多个单词合并,第二个之后大写
可见性 名称:类型 = 默认值 {约束特性}
[类的操作列表]
name (parameter list) : type of value returned
单个单词小写
多个单词除第一个单词其他首字母大写
继承
接口继承------▷
类的继承------▶
抽象类
类或者方法用斜体为抽象
关联
单向关联-----▶
双向关联 没有箭头
聚合
基本聚合 ◇---- 空心菱形
独立存在
组合聚合 实心菱形
不能独立存在
反射关联
类和自己关联
类的一个实例和类的另一个实例关联
关联类
虚线指向关联关系中间.
可见性
public +
protected #
private -
package ~
接口
区分方法
<<interface>>
接口的名字以大写字母I开头
关系
依赖 Dependency
虚线加箭头
泛化 Generalization
is a
空心箭头 + 实线
关联 Association
has a
实线+箭头
聚合关系
强关联关系
空心菱形+实线+箭头 箭头指向部分
合成关系
比聚合关系强
实心菱形+实线+箭头
对象图
2个分栏 名称和属性
对象名:类名 匿名对象= :类名
不包含操作
链连接 不涉及多重性
只定义了属性的当前值,用于测试用例或例子中
包与包图
可见性
public
protected
private
类包图 用例包图
注意
命名简单 具有描述性
目的:简化图
动态视图
状态图
常见活动
入口动作
动作
出口动作
监护条件和动作
play [CD present]/ close drawer
入口和出口动作
entry / find start of track; lower head
exit / raisse head
在入口或者出口的状态里写
组合状态
状态图中间有分割线
组合状态内的子状态有一个为激活的
条件判断
菱形
活动图
表示对象的行为,与方法相关
可以表示整个系统的流程,与流程图相似
符号
菱形-分支
中括号-选择条件
虚线箭头-数据流
直线-信息分支和汇合点
点,圈中点-开始 结束
泳道图
时序图
带有生命线的对象:表示顺序图中参与交互的对象,每个对象下有生命线 Obj:class
X 删除对象
激活的对象 竖着的矩形
返回消息 虚线
异步消息 半个箭头的线
同步消息 箭头 线
协作图
活动者(Actor),对象(Object),连接(Link)和消息(Message)
消息名称,参数和序号标在箭头上方
1.1: OrderLine (n, c)
1: totalPrice := compute (a, b)
双向工程
逆向工程
逆向工程就是将使用特定语言的代码通过映射转换成模型的能力
逆向工程则是由编程语言代码重新构造UML模型
正向工程
正向工程是从UML模型到编程语言的代码生成