面对对象分析与设计

面向对象分析

  • ⾯向对象分析技术关注应⽤领域中的实体,并将其建模为对象
  • ⾯向对象分析技术主要基于分类、泛化、聚合关系在对象集合之间建⽴结构
  • 对象的⾏为是执⾏预定的动作(服务/活动)
  • 对象通过执⾏动作来完成状态变迁

面向对象分析的五个核心概念:对象、属性、结构、服务和主题

软件系统建模原则

支持修改和重用

  • 模型组件重用

  • 模型结构重用

  • 建立可重用的模型组件

  • 建立易于修改的模型结构

  • 抽象:关注重点,暂忘细节

  • 分解:将问题切分,分而治之

  • 多视角映射:切换关注点,分别讨论

  • 模块化:建立稳定结构、缩小变化影响范围

  • 模式:多次成功应用的模型结构

抽象

在对象间找出共性,忽略不相关细节
关注对象间的一般/特殊关系

  • 将具有相同属性或角色的对象放入同一个类集合中
  • 再通过父子关系,将由共性的类定义为同一个父类的子类
继承/⼀般-特殊结构

在这里插入图片描述

分解

表达整体部分关系,细分为聚合和组合

整体-部分结构

整体部分结构描述对象间的组合关系. 例如,⼀个交通灯对象由0-3个灯组,⽀撑杆和位置对象组合⽽成。

服务建模(虚线)

对象为其周遭的其他对象提供服务,例如,医⽣对象对外提供的服务包括:体检,出体检报告等。 (从面向对象到面向服务)

  • 瞬时服务:对象的创建、结束,修改等等
  • 计算服务:对象为其他对象完成计算任务等
  • 监控服务:对象持续监控流程,检查预设条件是否满⾜

多视角映射

从多个视角分别建模问题的不同方面
在这里插入图片描述

CRC分析法

CRC是类(Class)、责任(Responsibility)和协作(Collaboration)的简称,CRC分析法根据类所要扮演的职责来确定类

类筛选

在候选类中排除以下类:

  • 超出问题关注的范围的类;
  • 指代整个系统的类;
  • 功能重复的类;
  • 过于含糊或过于具体的类
  • 可观察到的现象是,实例对象过多过少

Coad & Yourdon’s 的筛选原则:

  • 保存对象信息: 系统需要保存对象信息吗?
  • 提供所需服务: 类对象是否对外提供修改属性值的操作?
  • 具有多个属性: 只有一个属性的类,应该建模为属性
  • 具有公共属性: 类属性是否为所有实例对象共享?
  • 具有公共操作: 类操作是否为所有实例对象共享?
  • 外部实体:如果生产或使用对象的信息,也应考虑建模为系统类

类识别

从原始资料中识别类:

  • 找出干系人提交的问题描述中名词及短语
    如果他描述应用领域中的信息结构或本质,则加入模型

从其他来源识别类:

  1. 背景信息调查
  2. 用户及干系人提供
  3. 分析模式

识别类的功能职责

功能职责关乎行为动作,因此是问题描述中的动词…
注意

  1. 并非所有动词均将成为类职责
  2. 有时多个动作合并为一个职责
  3. 随着分析过程深入会发现新的职责
  4. 不断修正类定义和职责定义
  5. 当两个类分享职责时,为二者同时添加该职责

面向对象设计

面向对象设计过程

  • 进行适当的领域分析
  • 撰写问题描述,确定系统的开发任务
  • 基于问题描述抽取需求
  • 开发用户界面原型
  • 识别对象类
  • 定义每个类的职责
  • 确定类之间的交互关系
  • 建立系统的设计模型

面向对象思维方式的核心理念

  • 区分接口与实现
  • 从具体到抽象
  • 最小接口原则

抽象的接口与不太抽象的接口

在这里插入图片描述
在这里插入图片描述
向用户暴露尽可能少的实现细节(最小用户负担原则)
让⽤户知道的关于类的内部实现细节越少越好:

  • 只给看必须的
  • 只看公开的
  • 只为⽤户的业务需求考虑

确定对象行为

识别环境约束

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐贤俊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值