Dart 之面向对象分析

342 阅读4分钟

Dart之面向对象分析.png

前言

面向对象方法(OOM)的核心思想是通过引入对象的概念,将现实世界中的事物、事件、规则和概念进行抽象,以一种更接近现实世界的视角建模问题域。而面向对象分析(OOA)是面向对象方法中的第一阶段,这一阶段将决定后续阶段的实现。

一、面向对象分析概述

面向对象分析是将现实世界中的问题抽象为对象的过程。

  • 目的:通过对问题的分析建立分析模型,也就是将现实世界中的事物转换为抽象模型。
  • 方法:将数据和功能结合为一个对象来考虑,将系统的行为和信息间的关系表示为迭代构造特征。可以理解为其构造过程是迭代进行的,而不是从一而终的。
  • 主要活动:认定对象、组织对象、描述对象之间的相互作用、确定对象的操作、定义对象的内部信息。

二、面向对象分析

面向对象分析主要包含以下几个活动。 面向对象分析.png

2.1、认定对象

  • 识别出需要建模的对象,也就是现实世界中的实体或概念(如:猫、狗等)
  • 一般是从需求文档中提取名词。
  • 注意:认定对象是面向对象分析的第一步,其认定结果对后续影响非常大,应当仔细确定这些实体是否有必要建模。

示例:

对象动物园系统中的实体或概念
动物如老虎、狮子、大象、长颈鹿等,它们是动物园的主要展示对象。
游客来动物园参观的人群,他们与动物进行互动,如观看动物表演、喂食等。
饲养员负责动物的日常饲养、照顾和清洁工作的人员。
管理员负责动物园的整体运营和管理,包括动物引进、园区维护、游客安全等。

2.2、组织对象

  • 确定对象之间的关系和层次结构。
  • 常涉及到识别对象的类(或类型),以及它们之间的继承、关联、聚合等关系。
  • 如对象之间的关系能够用是一种来描述,则建立泛化继承关系。
  • 如对象之间的关系能够用有一个来描述,则建立组合聚合来组织对象。

示例:

注:我们这里只举例老虎这个动物。

对象/类名称组织关系与说明
动物类(基类)作为所有动物种类的基类,包含共同属性和方法(如体重、年龄、叫声等)。
老虎类继承自动物基类,包含老虎特有的属性和方法(如条纹、捕猎行为等)。
游客类包含游客的个体信息(如姓名、年龄等)和游客行为(如购票、参观等)。
饲养员类包含饲养员的个人信息(如姓名、负责动物种类等)和饲养行为(如喂食、清洁等)。
管理员类包含管理员的个人信息(如姓名、管理职责等)和管理行为(如动物引进等)。

2.3、描述对象之间的相互作用

  • 描绘对象之间如何协作完成任务
  • 涉及定义对象之间如何相互通信和协作。
  • 通过绘制UML(统一建模语言)中的序列图、协作图或活动图来展示对象间的交互。

示例:

注:我们这里只举例老虎这个动物。

相互关系示例
游客与动物观看、拍照、喂食(允许时)。
饲养员与动物喂食、清洁笼舍、观察健康状况。
管理员与饲养员分配任务、检查工作、沟通需求。
管理员与游客维护秩序、处理投诉、传达信息。
动物与动物社交互动、竞争关系(如领地争夺)。

2.4、确定对象的操作

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

示例:

对象/类操作/方法
动物类makeSound():发声 eat():进食 rest():休息 interact():与游客互动
游客类purchaseTicket():购票enter():入园 visit():参观动物
饲养员类feed():喂食动物 clean():清洁笼舍monitorHealth():监控健康
管理员类introduceAnimal():引进动物 maintainPark():维护园区

2.5、定义对象内部信息

  • 定义对象的内部信息涉及描述对象的内部状态或属性
  • 内部信息包括内部数据信息、信息存储方法、继承关系等。

示例:

对象/类内部信息/属性
动物类name:动物名称species:动物种类 age:年龄 healthStatus:健康状况
游客类name:游客姓名ticket:门票信息(类型、购买时间等)
饲养员类name:饲养员姓名 assignedAnimals:负责的动物列表
管理员类name:管理员姓名 parkStatus:园区状态(开放、关闭、维护中)

三、总结

本小节我们从动物园的例子出发,分别介绍了面向对象分析里面的几个重要活动,包括认定对象、组织对象、描述对象之间的相互作用、确定对象的操作、定义对象的内部信息。