面向对象分析OOA的第一个步骤是识别问题域中的对象和类也称为“识别对象与类”或“确定问题域中的概念类”。这一步要求分析师深入理解用户需求和现实世界的问题背景通过用例分析、领域建模、名词提取等方法找出系统中关键的实体、事物、角色或概念并将其抽象为具有属性和行为的类或对象。它是后续建立对象关系、定义属性与操作、构建动态模型如状态图、交互图的基础。在面向对象分析OOA中从用例描述中有效识别候选类和对象核心方法是名词/名词短语分析法Noun Phrase Analysis辅以语义判断、职责分析和领域知识验证。具体步骤如下通读用例文本包括用例名称、参与者、前置条件、主事件流基本路径、备选事件流、后置条件等。提取所有名词和名词短语重点关注表示实体、事物、角色、概念、设备、文档、规则、状态、组织单位等的词例如“订单”“客户”“购物车”“支付方式”“库存数量”“退货申请”“管理员”。排除明显冗余、过于泛化如“系统”“数据”“信息”、实现细节如“XML文件”“数据库表”或纯属性如“订单号”“创建时间”——它们属于类的属性而非独立类。筛选与归并候选类合并同义词如“顾客”与“客户”→统一为“Customer”拆分歧义词如“地址”可能是“客户地址”或“仓库地址”需结合上下文区分判断是否具备独立身份、状态和行为责任例如“折扣策略”可封装为类因其有计算逻辑和配置状态而“总价”只是属性不应建模为类。使用CRC卡Class-Responsibility-Collaborator辅助验证为每个候选类写下其核心职责responsibility及协作对象collaborator若职责模糊、无协作或无法明确边界则可能不是真正类。结合用例图与活动图交叉验证观察哪些实体频繁参与多个用例交互或在活动图中作为主动/被动参与者出现增强其作为类的合理性。✅ 补充技巧关注动词宾语如“创建订单”→“订单”是宾语高优先级候选类注意“拥有”“包含”“属于”等关系提示聚合/组合如“订单包含多个订单项”→“OrderItem”也是候选类领域专家访谈可快速澄清模糊术语如“信用额度”是属性还是独立的“CreditPolicy”类。# 示例从用例“处理退货”中提取候选类简化# 文本片段顾客提交退货申请系统验证订单有效性检查商品库存状态生成退货单并通知仓库管理员。# 提取名词短语顾客、退货申请、系统、订单、商品、库存状态、退货单、仓库管理员# 筛选后候选类Customer、ReturnRequest、Order、Product、Inventory、ReturnSlip、WarehouseStaff# 排除系统非问题域类属实现边界、库存状态是Inventory的属性非独立类
面向对象分析(OOA)的第一个步骤是**识别问题域中的对象和类**(也称为“识别对象与类”或“确定问题域中的概念类”)
面向对象分析OOA的第一个步骤是识别问题域中的对象和类也称为“识别对象与类”或“确定问题域中的概念类”。这一步要求分析师深入理解用户需求和现实世界的问题背景通过用例分析、领域建模、名词提取等方法找出系统中关键的实体、事物、角色或概念并将其抽象为具有属性和行为的类或对象。它是后续建立对象关系、定义属性与操作、构建动态模型如状态图、交互图的基础。在面向对象分析OOA中从用例描述中有效识别候选类和对象核心方法是名词/名词短语分析法Noun Phrase Analysis辅以语义判断、职责分析和领域知识验证。具体步骤如下通读用例文本包括用例名称、参与者、前置条件、主事件流基本路径、备选事件流、后置条件等。提取所有名词和名词短语重点关注表示实体、事物、角色、概念、设备、文档、规则、状态、组织单位等的词例如“订单”“客户”“购物车”“支付方式”“库存数量”“退货申请”“管理员”。排除明显冗余、过于泛化如“系统”“数据”“信息”、实现细节如“XML文件”“数据库表”或纯属性如“订单号”“创建时间”——它们属于类的属性而非独立类。筛选与归并候选类合并同义词如“顾客”与“客户”→统一为“Customer”拆分歧义词如“地址”可能是“客户地址”或“仓库地址”需结合上下文区分判断是否具备独立身份、状态和行为责任例如“折扣策略”可封装为类因其有计算逻辑和配置状态而“总价”只是属性不应建模为类。使用CRC卡Class-Responsibility-Collaborator辅助验证为每个候选类写下其核心职责responsibility及协作对象collaborator若职责模糊、无协作或无法明确边界则可能不是真正类。结合用例图与活动图交叉验证观察哪些实体频繁参与多个用例交互或在活动图中作为主动/被动参与者出现增强其作为类的合理性。✅ 补充技巧关注动词宾语如“创建订单”→“订单”是宾语高优先级候选类注意“拥有”“包含”“属于”等关系提示聚合/组合如“订单包含多个订单项”→“OrderItem”也是候选类领域专家访谈可快速澄清模糊术语如“信用额度”是属性还是独立的“CreditPolicy”类。# 示例从用例“处理退货”中提取候选类简化# 文本片段顾客提交退货申请系统验证订单有效性检查商品库存状态生成退货单并通知仓库管理员。# 提取名词短语顾客、退货申请、系统、订单、商品、库存状态、退货单、仓库管理员# 筛选后候选类Customer、ReturnRequest、Order、Product、Inventory、ReturnSlip、WarehouseStaff# 排除系统非问题域类属实现边界、库存状态是Inventory的属性非独立类