前言
面向对象分析 (Object-Oriented Analysis
, OOA
)是将现实世界的问题抽象 为软件系统中对象 的过程,其任务和目的 是通过对问题空间的分析
,建立 系统的分析模型。
OOA
方法将数据
和功能
结合在一起作为一个综合对象 来考虑。OOA
技术可将系统的行为
和信息间的关系
表示为迭代构造特征 。换言之,通过迭代 的方式,逐步构建出系统的行为
和信息之间
的关系模型 ,使得系统的结构更加清晰
、易于理解和维护
。
- 系统的行为 :指的是系统中各个组件 或对象 如何
交互
、执行任务
或响应事件
。 - 信息间的关系 :指的是系统中不同数据 或对象 之间的
关联
和依赖
。 - 迭代构造特征 :意味着这些
行为
和信息
的关系不是一次性设计完成的,而是通过多次迭代逐步完善和细化的
。
OOA
包含5个活动:认定对象
、组织对象
、描述对象间的相互作用
、确定对象的操作及定义对象的内部信息
。
为了深入理解 OOA
,我们将通过一个具体的例子------图书馆管理系统 ------来详细探讨其五个核心活动
,并展示每个阶段的具体步骤
和成果
。
一、认定对象
1.1、目标
- 识别系统中的关键实体 或概念。
1.2、实践
- 从
需求文档
或需求讨论
中提取名词。 - 确认这些实体是否对系统的功能
至关重要
。
1.3、案例
在图书馆管理系统中,可能会识别出以下对象:
Book
:书籍 ,包括书名
、作者
、出版日期
等信息。Member
:会员 ,包括姓名
、ID
、联系方式
等信息。Loan
:借阅记录 ,包括借阅日期
、归还日期
等信息。Librarian
:管理员 ,负责管理图书
和会员
的操作。Library
:图书馆本身 ,作为所有资源的容器
。
1.4、结果
- 创建了一个初步的
对象列表
,明确了哪些元素对于解决问题至关重要
。
二、组织对象
2.1、目标
- 确定对象之间的
关系
和层次结构
。
2.2、实践
- 分析
"是一种"
(Is-a
)关系,建立泛化 或继承关系。 - 考虑
"有一个"
(Has-a
)关系,使用组合 或聚合来组织对象。
2.3、案例
Book
类可以有多个子类如Textbook
,Novel
来表示不同类型的书籍。Library
包含多个Book
和Member
实例,形成了一种"有一个"
的关系。Loan
对象关联了Member
和Book
,体现了它们之间的交互。
2.4、结果
- 构建了清晰的
类图
,展示了对象之间的关联
和层次结构
,确保了合理的依赖关系
。
三、描述对象间的相互作用
3.1、目标
- 描绘对象之间如何协作完成任务。
3.2、实践
- 创建用例图 来表示
不同角色之间的互动
。 - 使用序列图 具体化
对象间的消息传递顺序
。
3.3、案例
当 Member
请求借阅一本书时,过程如下:
Member
:requestLoan(Book book)
。Librarian
:checkAvailability(Book book)
。Book
:isAvailable()
。- 如果可用,则
Loan
:createRecord(Member member, Book book)
。 - 更新
Book
的状态为不可用。
3.4、结果
- 通过用例图 和序列图 ,清晰地展示了
对象间的交互方式
,确保它们能够有效合作
。
四、确定对象的操作
4.1、目标
- 细化每个对象的
具体操作
,包括它们的参数
、返回值
以及必要的内部状态管理
。
4.2、实践
- 精确定义每个方法的签名 (
参数类型
和返回类型
)。 - 决定哪些数据成员应该
公开
,哪些应该私有
。
4.3、案例
Loan
类的createRecord(Member member, Book book)
方法需要传入Member
和Book
的引用,并返回一个唯一的借阅ID
。Loan
可能维护一些内部状态,如借阅日期
和预计归还日期
,这些信息应该是私有的
,仅通过公共方法访问
。
4.4、结果
- 确保每个对象有足够的
信息
和方法
来正确执行其任务,同时保持良好的封装性
。
五、定义对象的内部信息
当确定对象的操作
后,再定义对象的内部信息
,内部信息包括其内部数据信息
、信息存储方法
、继承关系
等。
五、总结
OOA
是一个迭代 的过程,随着对领域理解的加深,最初的模型可能会不断调整
和完善
。通过认定对象
、组织对象
、描述对象间的相互作用
、确定对象的操作
和定义内部信息
这五个活动,可以构建出既贴近业务逻辑
又具备强大技术支撑
的软件系统。
码字不易,记得 关注 + 点赞 + 收藏 + 评论