第4章 静态建模: 类图和对象图
构成面向对象模型的基本元素有class(类),objects(对象),类与类之间的关系等.
4.1 类和对象
对象就是可以控制和操作的实体,是类的实例化,所有操作都是针对对象进行的.
4.2 类图
是用类和它们之间的关系描述系统的一种图示,属于静态图.
类的图示如下:
1.定义类的方法:
a>有没有一定要存储或分析的信息?如果存在需要存储,分析或处理的信息,那么该信息就可能是一个
类.
b>有没有处部系统?如果有,外部系统可以看作类,
c>有没有模板,类库,组件等,有则当作类
d>系统中有被控制的设备吗?有,则创建相应的类,由类来控制设备
e>有无需要表示的组织机构?
f>系统中有哪些角色?
2.名字,属性和操作
a>类名:表示为一个名词,无前缀,无后缀
b>属性:抽取系统中需要使用的特征作为类的属性
可见性:+表示公有,-表示私有,放在属性的左侧.static成员属性带下划线
格式为: 可见性 属性名:类型名 = 初值{性质串}
c>操作:格式: 可见性 操作员(参数表):返回值类型{性质串}
static成员函数带下划线
持久类:需要在类的名字旁边加上{persistent}标志
4.3 关系
关联,通用化(继承),依赖,精化
1.关联:一般双向,分为:普通,递归,限定,或,有序,三元关联和聚合共7种
a>普通关联:
如图:
黑三角的尖角指明这个关联只能用在尖角所指的类上.
导航关联:类与类之间的关联是单向的.如图:
在图中,可以使用数量关系(重数):
0...1 表示 零到1个对象
0..*或* 表示 零到多个对象
5..17 表示 5到17个对象
2 表示 2个对象
如果没有明确标识,即是1
重数标识在表示关联关系的某一方向上直线的末端
对于多对多的关联可以转化为两个一对多的关联,如图:
b>递归关联(recursive association): 一个类与它本身有关联关系.指同类的对象之间语义的连接
如图:(网络结点)
c>关联中的角色:把角色的名字写在与此角色有关的关联关系(直线)的末端,紧挨使用该角色的类.
如图:
d>限定关联:如图
e>或关联:如图
f>有序关联:如图
g>关联类: 与一个关联关系相连的类 .关联中的每个连接与关联类中的对象相联系,如图:
h>三元关联:三元关联中不能出现限定词和聚合.
i>聚合:类与类之间具有"整体与部分"的特点.
如图:
2.通用化:
一个类(通用元素)的所有信息(属性或操作)能被另一个类(具体元素)继承,
继承某个类的类中不仅可以有属于自己的信息,而且还拥有了被继承类中的信息。
a>普通通用化:子类从父类中继承的信息有属生,操作和所有的关联关系
抽象类:图示抽象类时,在类的名字下方附加一个标记值{abstract},子类一定要实现抽象类中的抽象操作
b>受限通用化:多重,不相交,完全和不完全
3.依赖和精化关系:
a>依赖:描述两个模型元素之间的语义上的连接关系.
一个模型元素是独立的,另一个是非独立的(依赖的),
例如:一个类中使用另一个类的对象作为操作中的参数.一个类存取另一个类中的全局对象.
一个类调用另一个类中的类作用域的操作.如图:
b>精化关系:表示同一事物的两描述之间的关系.例如,抽象定义的类型与用语言实现的类之间就是精化关系
用于模型的协调.
4.4约束 和 派生规则
UML中的规则称为约束和派生.它们最常用于属性,关联,继承,角色和时间.
a>约束:用于限制一个模型.或关联,有序关联,和四种继承(多重,不相交,完全和不完全).
如图:"领导" 关联中的政治家是"组成"关联中成员的子集.
如图:"VIP客户"关联就是派生而来,
b>派生:描述某种事物的产生规则.
4.5 接口
利用接口说明包,组件和类能够支持的行为. 如图:
4.6 包:
通常用于对模型的组织管理,包与包之间不能共用一个相同的模型元素.如图:
4.7模板:
4.8模型质量:
能够满足用户需求,抓住了事物的本质且能与之交互的模型,才能算得上"好".