【软考笔记】11. 面向对象

文章详细阐述了软件设计中的核心原则,包括单一职责原则、开放-封闭原则、李氏替换原则、依赖倒置原则和迪米特原则。同时,介绍了UML的各种图形,如类图、对象图和行为图。此外,还涵盖了设计模式的分类和应用场景,如创建型、结构型和行为型模式。
摘要由CSDN通过智能技术生成

概念

  1. 对象
    1. 实体类:数据
    2. 边界类:系统用于连接外部的类
    3. 控制类:类与类之间衔接控制
  2. 抽象
  3. 封装
  4. 继承与泛化
    1. 泛化:将多个相似子类抽象成一个父类
  5. 多态:重载
  6. 接口
  7. 消息:对象间通信采用的机制,异步传输
  8. 组件
  9. 模式和复用:包含架构模式,设计模式等。模式是为了复用

设计原则

考法 1:给一段描述,问是否符合/违反 xx 原则
考法 2:给一段描述,问是否规范

单一职责原则

开放-封闭原则:对扩展开放,对修改封闭

  1. 来了新需求不是修改原有的类,而是扩展出新类

李氏替换原则:子类可以替换父类

  1. 这就要求不要随意修改父类

依赖倒置原则:依赖于抽象(接口),而不是具体实现;针对接口编程,不要针对实现编程

组合重用原则:尽量使用组合而不是继承关系达到重用目的

  1. 继承是紧耦合,父类变子类也要跟着变,所以要少用

迪米特原则/最少知识法则:一个对象应当对其他对象有尽可能少的了解

UML

考点 1:了解 UML 的一系列图
考点 2:了解四种关系

考点 1:掌握哪些是结构图(静态图),哪些是行为图(动态图)

结构图(静态图)

类图

对象图

包图

组合结构图

构件图

部署图

软件的构件应当部署在哪些硬件的节点上

制品图

行为图(动态图)

用例图(最常考)

用例图有些教材定义为静态图,有些定义为动态图

系统与外部的交互关系

特点:小人

顺序图/序列图

强调按时间顺序

通信图/协作图

不强调时间顺序的顺序图

状态图

状态的变迁,转移的情况

活动图

类似于流程图

定时图(不咋考)

交互概览图(不咋考)

设计模式

概念

架构模式(高层)

全局的

如 C/S,B/S,SOA

设计模式(中层)

局部的软件系统的设计,这一步与语言无关

进行构件设计的时候会用到设计模式

惯用法(低层)

与语言有关

如:引用-计数就是 C++语言的一种惯用法

分类

考点:xx 模式是什么类型的模式

创建型模式

用于创建对象的模式

简单使用 new 来创建对象灵活性不够

抽象工厂模式
  1. 是其他工厂的工厂
  2. 例:一系列工厂是用于数据库相关的,则创建一个数据库工厂
构建器模式
  1. 一个对象由多个对象组合起来,可以把各个部分封装起来
工厂方法模式
  1. 可以在运行时指定创建具体是哪个类的对象
原型模式(克隆模型)
  1. 通过拷贝原有的对象生成新的对象
  2. 效率比 new 高
单例模式

结构型模式

处理类或对象的组合问题

适配器模式:转换接口

“适配器”的含义与电源适配器相同
将接口转换成用户能用的接口

桥接模式:拆分继承树

将一个类的抽象部分和实现部分分开,拆成两棵继承树,这样原有的继承树就不会很大

组合模式:树形目录结构

将类组合成类似于树形目录结构

装饰模式:附加职责

动态给对象添加额外的职责

外观模式:对外统一接口

定义一个高层接口,包含一组接口

行为型模式

类和对象交互
职责分配问题

职责链模式:传递职责

例:员工发送报销请求,1000 元以下部门经理审批,10000 元以下总经理审批
不分别连接员工和部门经理、员工和总经理,而是形成员工-部门经理-总经理的职责链
减少发送者与接收者之间的耦合

命令模式:日志记录,可撤销

命令不是一个简单的消息,而是封装成一个对象

便于日志记录,撤销操作

解释器模式

构造一个虚拟机,根据文法表示来解释语句

迭代器模式
中介者模式:不直接引用

用一个中介对象来封装一系列对象交互
这样就不用互相显式调用,降低了耦合程度

备忘录模式

在对象之外保存对象的状态,以便后期恢复状态

观察者模式

一对多
一个对象发生改变,所以依赖它的东西都得到通知并自动更新

状态模式:状态定义成类

一个对象,状态改变时行为跟着改

例:白银会员 9 折,黄金会员 8 折

策略模式:多种方案切换

例:把冒泡排序,选择排序等算法一一封装,可以随时用一个替换另一个

模板方法模式
访问者模式

按照类模式/对象模式分类

既可以是类模式,也可以是对象模式的:

工厂方法模式
适配器模式
解释器模式
模板方法模式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值