类图和对象图概论
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用建议
关联关系的增强机制,如关联名、关联角色、限定关联、 约束、派生属性和派生关联等虽然拥有很强的语义,但 是在类的建模实践中不要滥用,也不要刻意使用,否则 容易陷入过渡设计,并降低类图的可读性。
1、聚合(aggregation) 聚合是一种特殊形式的关联,表示部分与整体(part of)的关系,“部分”可以独立于“整体”而存在。 聚集使用带空心菱形的实线表示,菱形指向“整体”。
派生属性(derived attribute)和派生关联(derived association):指可以从其他属性和关联计算推演得到 的属性和关联。
Company 1
n Department
/Work ForCompany
1 Work ForDepartment
0..n
Person
派生关联
派生属性
有两个元素X、Y,如果修改元素X的定义可能会引起对 另一个元素Y的定义的修改,则称元素Y依赖 (Dependency)于元素X。
依赖关系
引起依赖关系的原因
如客户类向提供者类发送消息 提供者类是客户类的属性类型 提供者类是客户类的操作的参数类型 提供者类是超类或接口
5.3.1 抽象类
当某些类有一些共同的方 法或属性时,可以定义一 个抽象类来抽取这些共性, 然后将包含这些共性方法 和属性的具体类作为该抽 象类的继承。
类的特征,描述该类实例中包含的信息。 [可见性] 属性名[:类型] [多重性] [=初始值] [{特性}] 静态属性:用下划线标识的属性名,该类的所有对象
之间共享该静态属性。 类所提供的服务。
[可见性] 操作名 [(参数列表)] [:返回类型] [{特性}]
静态方法:用下划线标识的方法名(操作名)
关联名
关联的角色是关联关系中一个类对另一个类所表现出来 的职责。角色的名称是名词或名词短语。 关联关系上没有标出角色名,隐含用类名作为角色名。
关联的角色
多重性表示
语义
*
0或多
n
0或多
0..*
0或多
0..n
0或多
0..1
0或1
1..*
1或多
5..15
5到15个
3
只能3个
说明:UML中用*表示不确切的最 大数,Rose中用n表示
建模。
DemandDepositAccount
Customer
holds
Account
1
0..n
FixedDepositAccount CreditCardAccount
银行账户模型类图1:泛化
泛化定义了一般元素和特殊元素之间的分类关系,可以 克服以上两个问题。一般元素称为父类或超类,特殊元 素为子类。
双向关联、单向关联
关联类即是关联也是类,不仅像关联那样连接两个类, 还可以定义一组属于关系本身的
约束:用来说明规则,加强(关联的)含义,也可以应用于 其他建模元素。
限定关联:存在限定符(qualifier)的关联称为限定关 联(qualified association)。限定符用于从规模较大 的相关对集合中,依据限定符的值选择一个或多个对象。
第5章
类图和对象图
5.1 类定义 5.2 类之间的关系 5.3 其他概念 5.4 类图 5.5 OO设计的原则 5.6 对象图 5.7 类图建模实例
类
隐藏属性和操作的类
类名:名词,一般采用CamelCase格式。 简单名(simple name):如Member 全名,也称路径名(path name):是在类名前面加 上包的名称,如com::domain::Member
多重性:若类A和类B之 间有关联关系,多重性定 义了类A有多少个实例可 以和类B的一个实例关联。
多重性的值表示在特定时 刻(而不是在某个时间跨 度内)有效关联的实例数 量。
导航性:关联关系的方向。在关联关系上加上导航箭头表 明可以从源类的任何对象到目标类的一个或多个对象(取 决于关联端的多重性)。箭头指向目标类。
关联的种类
自返关联(reflexive association):又称递归关联,是一 个类与它本身相关联,也就是同一个类的两个对象间的关 联。
自返关联
二元关联:指在两个类之间进行关联。 N元关联:在3个或3个以上类之间的关联。N元关联中多
重性的意义是:在其他N-1个实例值确定的情况下,关联 实例元组的个数。
3、何时使用聚合和组合
例 电脑是整体类,主板、CPU等相对于电脑是部分类。
在固定资产管理系统中: 组合 在线DIY系统: 聚合 判断是聚合还是组合关系,要根据需求分析描述的上下 文来确定。
银行账户模型类图1:关联
存在问题:此例中关联使简单问题复杂化。
(1) 关联过多, (2) 拥有大量公共结构的不同种类账户作为完全不相关的类
5.2.1 关联
关联是模型元素间的一种语义联系,它是对具有共同特 征、行为特性、关系和语义的链的描述。 关联和链,类和对象
A
B
类之间的关联关系(双向关联)
关联端:关联的任何一个连接点都叫做关联端,一个关 联可以有两个或多个关联端,每个关联端连接到一个类。
关联名:动词或动词短语,用来描述关联的性质和作用。
可替换性:在任何需要一个父类的实例的地方,都可以 用一个子类的实例代替。这种现象是多态性的一种形式。
:Customer
:Customer
:DemandDepositAccount
:FixedDepositAccount
:CreditCardAccount
泛化----子类实例替换父类实例
注意:泛化关系只能使用在类型上,而不是实例上
抽象类是不能被直接实例 化的类,即不能创建一个 属于抽象类的对象。
抽象类
1、接口 接口是一个提供给外界的操作的命名集合,不含有属性。 2、实现关系 接口和类之间的实现关系,意味着这个类必须自己声明
Rectangle不存在了,并不意味着Style也消失了。
聚合关系的实例具有传递性和反ห้องสมุดไป่ตู้称性。
2、组合(composition)
组合也表示整体与部分的关系,又被称为强聚合。在 组合中,部分与整体具有相同的生命周期,“部分” 对象完全依赖于“整体“对象。
Window
1
Frame
1..n
撤销一个Window时,Window对象必须依次撤销它的 Frame 部分。