系统化掌握Dart编程之面向对象分析

前言

面向对象分析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 包含多个 BookMember 实例,形成了一种"有一个"的关系。
  • Loan 对象关联了 MemberBook,体现了它们之间的交互。

2.4、结果

  • 构建了清晰的类图,展示了对象之间的关联层次结构,确保了合理的依赖关系

三、描述对象间的相互作用

3.1、目标

  • 描绘对象之间如何协作完成任务。

3.2、实践

  • 创建用例图 来表示不同角色之间的互动
  • 使用序列图 具体化对象间的消息传递顺序

3.3、案例

Member 请求借阅一本书时,过程如下:

  • MemberrequestLoan(Book book)
  • LibrariancheckAvailability(Book book)
  • BookisAvailable()
  • 如果可用,则 LoancreateRecord(Member member, Book book)
  • 更新 Book 的状态为不可用。

3.4、结果

  • 通过用例图序列图 ,清晰地展示了对象间的交互方式,确保它们能够有效合作

四、确定对象的操作

4.1、目标

  • 细化每个对象的具体操作,包括它们的参数返回值以及必要的内部状态管理

4.2、实践

  • 精确定义每个方法的签名参数类型返回类型)。
  • 决定哪些数据成员应该公开,哪些应该私有

4.3、案例

  • Loan 类的 createRecord(Member member, Book book) 方法需要传入 MemberBook 的引用,并返回一个唯一的借阅 ID
  • Loan 可能维护一些内部状态,如借阅日期预计归还日期,这些信息应该是私有的,仅通过公共方法访问

4.4、结果

  • 确保每个对象有足够的信息方法来正确执行其任务,同时保持良好的封装性

五、定义对象的内部信息

确定对象的操作后,再定义对象的内部信息,内部信息包括其内部数据信息信息存储方法继承关系等。

五、总结

OOA是一个迭代 的过程,随着对领域理解的加深,最初的模型可能会不断调整完善。通过认定对象组织对象描述对象间的相互作用确定对象的操作定义内部信息这五个活动,可以构建出既贴近业务逻辑又具备强大技术支撑软件系统

码字不易,记得 关注 + 点赞 + 收藏 + 评论

相关推荐
FinelyYang1 小时前
UniApp + LiveKit:Android 端为什么要用原生做屏幕共享,以及我们怎么落地的
android·uni-app
蓝速科技1 小时前
蓝速科技信创落地:平衡安全合规与项目成本的实战方案
android·运维·人工智能·科技·安全·电脑·鸿蒙
又见情义3 小时前
RK3568 Android 13 SDK 开机自动开启共享热点实践
android
mmsx4 小时前
return false 不是拦截:一次按键触发两个动作的事件冒泡陷阱
android·bug
DU_YULIN5 小时前
Camera HAL ThreadManager概述
android·camera hal
淡淡的香烟5 小时前
Android中的MQTT通信原理解析
android·物联网
淡淡的香烟5 小时前
Android Camera开发详解
android·音视频
mmsx7 小时前
基于 Android 的校园信息管理系统源码
android·java·okhttp
xcyxiner7 小时前
flutter wsl2安装记录(使用宿主机虚拟机)
前端·flutter
YF02117 小时前
如何进入Android工程模式
android