12_1 需求工程【面向对象,UML相关,重点】

在这里插入图片描述
补充:

  • 12.09 面向对象的开发阶段

12.01 面向对象基本概念

在这里插入图片描述
对象

  • 属性和方法

  • 概念:把对象的共性抽取出来
  • 实体类:与数据相关
  • 边界类:有与外界交互的职能
  • 控制类:类与类之间的衔接

抽象

  • 抽象就是把事物的共同特征总结为一点。
  • 我们可以看出我们可以通过继承我们的父类(这里父类也可以叫做抽象类,里面的方法也可以叫做抽象的方法),重写其中的方法或者引用父类的属性来实现我们代码的复用,这就是抽象思想给我解决的最大的问题-----实现代码的复用。

面向对象的三大特性:继承,封装,多态
封装

  • public,protected,final,private

继承与泛化

  • 子类与父类

多态

  • 多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
  • 重写与重载
    • 重载就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
    • 重写就是在子类方法重写父类方法,重写的方法和被重写的方法必须具有相同方法名称、参数

接口

  • 是一种特殊的类
    • 只有方法的定义,没有方法的实现

消息

  • 对象之间进行交互的时候采用的机制
    • 异步通信的方式
    • 消息传递:接收到信息的对象经过解释,然后予以响应

组件

  • 一些符合某种规范的类组合在一起形成的组件

模式和复用

  • 模式就是一种经验的传承
  • 模式就是为了复用
例题讲解【2021上】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.02 面向对象设计(设计原则)

考察:知道每个原则理论
在这里插入图片描述
面向对象设计原则提出目的

  • 设计方面很适用
  • 后面讲的设计模式就是利用了设计原则来解决问题的实际方案

单一责任原则

  • 设计一个类出来,它目的只有一个,解决一个问题
    • 会降低程序的耦合程度

开放-封闭原则

  • 不要做程序的修改,要的话就做程序的扩展
  • 修改原有程序可能影响原有正常功能

李氏替换原则

  • 自类可以替换父类
  • 就是为了倡导我们设计程序时候,尽量不要在子类中使用重载,使父类和子类某一个方法的功能不一样——所以后面父类成为一个接口就可以避免用到子类的重载

依赖倒置原则——尽量使用父接口(抽象),而不是使用父接口的儿子

  • 要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
  • 依赖接口的好处:操作灵活(容易扩展),不受太多的制约

接口隔离原则

  • 使用多个专门的接口比使用单一的总接口要好。
  • 不强迫客户依赖于他们不用的方法,即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。

组合重用原则

  • 继承是一种紧耦合关系(父类一变,子类都变)

迪米特原则——最少知识原则,不要知道别人东西(另一个对象)

  • 信息隐蔽,对另一个对象了解很少,才能够用标准的方式去调用它
    • 一般通过前面讲的封装来实现
    • 当a大量调用b,当b改动时候,a要跟着改很多内容
例题讲解【2021上】

在这里插入图片描述
在这里插入图片描述

12.03 UML【考点】

考察:了解各种图;了解四个关系
在这里插入图片描述
UML分为:构造块【考试重点】,规则,公共机制

构造块分为:事物,关系【考试重点】,图【考试重点】

关系

依赖:形参
关联:成员变量
聚合:整体和部分

  • 局部可以单独存在

组合:聚合+生命周期

  • 局部不能单独存在
例题讲解【2021 下】

在这里插入图片描述在这里插入图片描述

分两大类:结构图(静态)和行为图(动态)

  • 注:用例图两大类未明确,所以考试先选其他的,剩下的空填用例图

结构图(静态)

  • 部署图:软件的构建应该部署在那个硬件的节点上

行为图(动态)

  • 用例图:系统和外部的交互关系
  • 顺序图/序列图:强调按时间顺序
  • 通信图/协助图:去上面类似,只不过没有强调按时间顺序
  • 状态图:状态的变迁
  • 活动图:和流程图结构一致

12.04 面向对象设计(设计模式的概念)【重点】

在这里插入图片描述
模式:就是以前成果方案的复用

按照复用性从高到低排序分为

  • 架构模式(整体全局角度
  • 设计模式(局部设计问题,往往在构建设计的使用应用)
    • 各种语言都可以实现
  • 惯用法(和语言相关了,所以不同语言惯用法不一样)

12.05 面向对象设计(设计模式的分类)【重点】

在这里插入图片描述

  • 注意图中红框属于既可以类模式,也可以对象模式

设计模式主要分三类:创建型模式,结构型模式,行为型模式

创建型模式

用于创建对象的模式,为设计类实例化新对象提供指南

  • 将创建对象的功能剥离出来

起因:因为new一个对象的灵活性不够,所以出现了创建型模式

工厂方法模式

  • 构建一个工厂,给工厂下发指令,就能够生产出你需要的对象
  • 不同类型的对象,只需要改工厂,不需要改原有业务逻辑代码

抽象工厂模式

  • 按系列生成对象
结构型模式

主要处理类和对象的组合问题

适配器模式

  • 把原来不统一的统一起来(比如:电源适配器)
行为型模式

主要用来描述类或者对象交互的情况,以及职责分配问题

12.06 面向对象设计(创建型模式)【重点】

用于创建对象的模式,为设计类实例化新对象提供指南

  • 将创建对象的功能剥离出来

在这里插入图片描述

  • 工厂方法模式:在运行的时候,去指定要创建的是哪一个类的对象
  • 原型模式【克隆模式】:用new的方式创建对象,消耗资源多【主要考虑效率】
  • 单例模式:比如网页每次打开跳转到主窗口

12.07 面向对象设计(结构型模式)【重点】

主要处理类和对象的组合问题
在这里插入图片描述

  • 适配器模式:类似电源适配器
  • 桥接模式
    • 原有类很复杂,但是可分为两大类,则将他们分开之后桥接起来
      在这里插入图片描述
  • 组合模式:树形目录结构
  • 装饰(Decorator)模式【考点】:动态给一些对象添加额外的职责【比如:去和咖啡,有些人要加糖】
    • 装饰模式又称为装饰器模式
    • 该模式用于将一个对象加以包装以提供一些额外的行为
  • 外观(Facade)模式【考点】:多个边界类对外访问,会变得很复杂,所以为了简化——创建一个类与多个边界类交互,然后通过这一个类对外访问
    • 该模式用于:将一系列对象加以包装以简化其接口
      在这里插入图片描述
  • 过滤器模式(Filter Pattern)【又称:标准模式(Criteria Pattern)】
    在这里插入图片描述

12.08 面向对象设计(行为型模式)【重点】

主要用来描述类或者对象交互的情况,以及职责分配问题

行为型模式(一)

在这里插入图片描述

  • 职责链模式【责任链模式】:传递职责

    • 发送者给一个任务,将一群接收者连成串,从第一个人开始知道有人给出反馈结束
    • 应用场景:财务审批(金额从小到大对应不同接收者)
    • 在这里插入图片描述
    • 在这里插入图片描述
    • 在这里插入图片描述
  • 命令模式
    在这里插入图片描述

    • 特点:不是一个消息了,而是封装成了一个对象
    • 命令模式属于:行为型对象模式
    • 适用于:
      • 抽象出待执行的动作以参数化某对象
      • 在不同的时刻指定、排列和执行请求
      • 支持取消操作(可撤销)
      • 支持修改日志(日志记录)
      • 用构建在原语操作上的高层操作构造一个系统
  • 解释器模式

    • 相当于构造一个虚拟机去处理问题
  • 迭代器模式

    • 比如单链表中的.next
  • 中介者模式

    • 多个对象当中引入中间件
    • 特点:不直接引用
    • 适用于:
      • 一组对象以定义良好但是复杂的方式进行通信产生的相互依赖关系结构混乱且难以理解;
      • 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象;
      • 想定制一个分布在多个类中的行为,而又不想生成太多的子类。
例题讲解【2021 下】

考察:中介者模式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例题讲解【2021上】

考察:命令模式
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

行为型模式(二)

在这里插入图片描述

  • 备忘录模式
    • 新开辟一个空间来存现有的对象,后面用来恢复
    • 应用场景:做恢复操作
    • 在这里插入图片描述
  • 观察者模式
    • 比如:excel中a单元格存了1,b单元格存了2,c单元格做加法运算得到3,当a单元格变成3时候,c单元格自动变为5
    • 此模式体现的最主要的特征是:使所有交互的对象尽量松耦合
  • 状态模式
    • 状态变成类
    • 应用场景:不同等级的vip,就是不同的类,每种等级的vip所能做的行为都不一样
  • 策略模式
    • 应用场景:灵活的多种方案切换的时候【比如树排序能用到多种排序算法】
      在这里插入图片描述
例题讲解【2021年下】

考察:策略模式
在这里插入图片描述

例题讲解【2017年下】

考察:状态模式
自动售货机根据库存、存放货币量、找零能力、所选项目等不同,在货币存入并进行选择时具有如下行为:交付产品不找零 :交付产品找零:存入货币不足而不提供任何产品;库存不足而不提供任何产品。这一业务需求适合采用(44)模式设计实现,其类图如下图所示,其中(45)是客户程序使用的主要接口,可用状态来对其进行配置。此模式为(46),体现的最主要的意图是(47)。
在这里插入图片描述
(44)A.观察者(Obeserver) B.状态(State)
C.策略(Stratehy) D.访问者(Visitor)

(45)A.VendingMachineState B.Buy
C.VendingDepositState D.VendingStockState

(46)A.创建型对象模式 B.结构型对象模式
C.行为型类模式 D.行为型对象模式

(47)A.当一个对象状态改变时所有依赖它的对象得到通知并自动更新
B.在不破坏封装性的前提下,捕获对象的内部状态并在对象之外保存
C.一个对象在其内部状态改变时改变其行为
D.将请求封装为对象从而可以使用不同的请求对客户进行参数化

答案:B,A,D,C

解析:
有State关键词 状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。
是整个状态模式的基类也是对外的接口

12.09 面向对象的开发阶段

面向对象分析阶段包括5个活动:【活动顺序从上到下】

  • 认定对象
  • 组织对象
  • 描述对象间的相互作用
  • 定义对象的操作
  • 定义对象的内部信息

面向对象设计阶段5个活动

  • 识别类及对象
  • 定义属性
  • 定义服务
  • 识别关系
  • 识别包

面向对象程序设计2个活动

  • 程序设计范型
  • 选择一种OOPL

面向对象测试4个活动

  • 算法层
  • 类层
  • 模板层
  • 系统层
例题讲解【2021上】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例题讲解【2021下】

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

狂野小白兔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值