当前位置:文档之家› 第5章 软件系统静态结构分析与设计

第5章 软件系统静态结构分析与设计

类是对象类型的描述,所有对象都是相应 类的实例,类描述了一种对象的特征和行 为。
2020/4/19
5.1 类和对象
当模型是基于它们在现实世界中的对应物的 真实外观,以及基于问题域内的概念而建造 的时候,使用面向对象技术就非常合适。
面向对象分析与设计的基础是类、对象,以
及它们之间的关系。
2020/4/19
2020/4/19
5.11 网上求职招聘系统
2020/4/19
2020/4/19
5.4 关联
聚合关联
Navy
Warship
*
contains
2020/4/19
5.4 关联
共享聚合关联
Team
*
*
Person
Members
2020/4/19
5.4 关联
组合聚合关联
*
Text
Window
*
ListBox
*
Button
2020/4/19
5.4 关联
限定关联
Canvas
2020/4/19
5.4 关联
一个关联表示两个类的对象之间存在一个链 接。即它们“相互知道”、“被连接在一 起”、“对于每一个X,都有一个Y与之对应。
2020/4/19
5.4 关联
标准关联
Person
Owns
Owned by
1..*
0..*
Car
2020/4/19
5.4 关联
标准关联
use used by
figure id
*
Figure
限定符
2020/4/19
5.4 关联
或关联
1
保险公司
1..*

0..* 保险合同
0..* 0..*
1..*
公司
2020/4/19
5.4 关联
或关联
1
保险公司
1..*

0..* 保险合同
0..* {or} 0..* 1..*
公司
2020/4/19
5.4 关联
关联类
+drive()
2020/4/19
5.5 泛化
标准泛化关系
drives
2020/4/19
5.5 泛化
受约束的泛化关系 ➢重叠 overlapping ➢互斥 disjoint ➢完全 complete ➢不完全 incomplete
2020/4/19
5.5 泛化
重叠与互斥泛化关系
Vehicle
电梯控制器
队列 4 电梯
* 按钮
2020/4/19
5.4 关联
三元联类
保险公司 1
0..* 保险合同
0..*
保险契约 0..1 1..*

2020/4/19
5.5 泛化
标准泛化关系
交通工具
汽车

火车
2020/4/19
5.5 泛化
标准泛化关系
Vehicle +drive()
Car
Boat
+drive()
<<子系统>> 子系统C
<<子系统>> 子系统A
2020/4/19
<<子系统>> 子系统B
5.9 模板
T, n:int Array
<<bind>> <Color,50>
ColorArray
2020/4/19
5.10 模型质量
➢实用性 ➢易于交流和维护 ➢一致性 ➢完整性 ➢集成性
2020/4/19
5.6 依赖和精化关系
精化关系
分析类
<<refines>>
设计类
2020/4/19
5.7 接口
<<接口>> Runnable +run()
<<接口>> Storable
+load() +save()
2020/4/19
5.7 接口
2020/4/19
5.8 包
子系统 一个模型元素不能被一个以上的包拥有。
2020/4/19
5.2 类图
名称部分: 类的名称应该来自系统的问题域,并且应
该尽可能地明确,不会造成歧义。 类的名称应该是一个名词。
2020/4/19
5.2 类图
属性部分: 类属性捕获了描述和识别该类的一个特定实 例的信息。 类只应该包括当前正建模的系统感兴趣的属 性。
2020/4/19
5.2 类图
5.11 网上求职招聘系统
2020/4/19
5.11 网上求职招聘系统
2020/4/19
5.11 网上求职招聘系统
2020/4/19
5.11 网上求职招聘系统
2020/4/19
5.11 网上求职招聘系统
2020/4/19
5.11 网上求职招聘系统
• UserBean(用户实体) • PersonBean(求职者实体) • CompanyBean(企业实体) • AdminBean(管理员实体) • ApplyInfoBean(求职信息实体) • NewsBean(新闻实体) • JobInfoBean(招聘信息实体)
软件开发与实践
第5章 软件系统静态结构分析与设计
2020/4/19
第5章 软件系统静态结构分析与设计
5.1 类和对象 5.2 类图 5.3 关系 5.4 关联 5.5 泛化 5.6 依赖和精化关系 5.7 接口 5.8 包 5.9 模板 5.10 模型质量
2020/4/19
5.1 类和对象
对象就是我们可以谈论和操纵的一个事物, 它总是以某种方式与我们对现实世界的理 解相关联。
+drive()
{overlapping}
Car
Boat
+drive()
+drive()
Amphibian +drive()
2020/4/19
5.5 泛化
完全与不完全泛化关系
Person
Man
{complete} Woman
2020/4/19
5.6 依赖和精化关系
依赖关系
类A
<<友元>>
类B
2020/4/19
操作部分:
Figure +size : Size +pos : Position #figcounter : int +draw() +getCounter() : int
2020/4/19Fra bibliotek 5.3 关系
常用的关系: 关联(Association) 泛化(Generation) 依赖(Dependency) 精化(Refinement)
5.1 类和对象
保险业务简单模型
保险公司 1
保险合同
0..*
0..*
1..* 客户
2020/4/19
5.2 类图
类图的一个目的是为其它图定义一个基础, 例如在动态图中显示对象的状态以及对象之 间的协作。
2020/4/19
5.2 类图
发现类: 发现类的任务应该由系统问题域专家来完成。 可以通过提问的方式: ➢我们有需要存储或分析的信息吗? ➢我们有外部系统吗? ➢我们有任何模式、类库、组件等诸如此类的 东西吗? ➢存在系统必须处理的设备吗? ➢我们有组织机构部分吗? ➢参与者在业务中扮演哪些角色?
相关主题