当前位置: 首页 > news >正文

《软件设计师》复习笔记(14.1)——面向对象基本概念、分析设计测试

目录

一、面向对象基本概念

对象(Object)

类(Class)

抽象(Abstraction)

封装(Encapsulation)

继承(Inheritance)

多态(Polymorphism)

接口(Interface)

消息(Message)

覆盖(Override)

函数重载(Overload)

绑定(Binding)

真题示例:

二、面向对象分析与设计

1. 面向对象分析(OOA)

2. 面向对象设计(OOD)

3. 面向对象测试

测试层次

真题示例:


一、面向对象基本概念

  1. 对象(Object)

    • 由数据(属性)操作(方法)构成的封装体。
    • 组成:对象名、属性、方法。
  2. 类(Class)

    • 现实世界实体的形式化描述,是对象的模板。
    • 类的分类
      • 实体类:表示真实实体(如人、物、学生)。
      • 接口类(边界类):提供用户与系统的交互方式(如窗口、菜单、二维码、笔、计算机)。
      • 控制类:协调活动流(如业务逻辑控制、一个一个地排队)。
  3. 抽象(Abstraction)

    • 抽取共同特征形成概念,强调主要特征,忽略次要特征。
  4. 封装(Encapsulation)

    • 信息隐蔽技术,将数据和操作封装为整体,仅通过接口访问。
  5. 继承(Inheritance)

    • 类之间的层次关系(父类与子类),支持单继承多继承
  6. 多态(Polymorphism)

    • 同一消息不同对象产生不同结果,分为:
      • 参数多态(不同参数类型)
      • 包含多态(父子类关系)
      • 过载多态(同名不同参)
      • 强制多态(类型转换)
  7. 接口(Interface)

    • 定义操作规范(做什么),不定义具体实现(如何做)。
  8. 消息(Message)

    • 对象间交互的请求(如方法调用)。
  9. 覆盖(Override)

    • 子类重写父类同名同参的方法。
  10. 函数重载(Overload)

    • 同名函数,参数不同(与继承无关)。
  11. 绑定(Binding)

    • 静态绑定:编译时确定(如普通函数调用)。
    • 动态绑定:运行时确定(如多态调用)。

真题示例:

 一个类中可以拥有多个名称相同而参数表(参数类型或参数个数或参数类型顺序)不同的方法,称为( )。

A.方法标记 B.方法调用 C.方法重载 D.方法覆盖

  • 方法重载(Overload):在同一个类中,多个方法同名但参数不同(类型、个数、顺序不同)。
  • 方法覆盖(Override):子类重写父类同名同参的方法。
  • 方法标记:无此术语。
  • 方法调用:指执行某个方法,与定义无关。

在某销售系统中,客户采用扫描二维码进行支付。若采用面向对象方法开发该销售系统,则客户类属于()类,二维码类属于()类。

A. 接口 B. 实体 C. 控制 D. 状态

A. 接口 B. 实体 C. 控制 D. 状态

  • 客户类:代表现实世界的“客户”实体,属于实体类
  • 二维码类:提供支付交互方式(扫描二维码),属于接口类(也称边界类)。


二、面向对象分析与设计

1. 面向对象分析(OOA)

  • 目标:确定问题域,理解需求。

  • 活动

    • 认定对象
    • 组织对象
    • 描述对象交互
    • 确定对象操作
    • 定义对象内部信息
  • 组成

    • 顶层架构图
    • 用例与用例图
    • 领域概念模型

 面向对象需求建模:

2. 面向对象设计(OOD)

  • 目标:设计解决方案,生成源代码。

  • 设计原则

    • 单一责任原则:一个类仅有一个变化原因。
    • 开放-封闭原则:可扩展,不可修改。
    • 里氏替换原则:子类可替换父类。
    • 依赖倒置原则:抽象不依赖细节,细节依赖抽象。
    • 接口分离原则:客户不应依赖不用的方法。
  • 设计模型组成

    • 包图(软件体系结构)
    • 交互图(用例实现)
    • 类图(完整类结构)
    • 状态图(复杂对象行为)
    • 活动图(流程化处理)

3. 面向对象测试

测试层次

  1. 算法层:测试类中的方法(单元测试)。
  2. 类层:测试类内属性与方法的交互(模块测试)。
  3. 模板层:测试类间协作(集成测试,关注消息传递)。
  4. 系统层:组装子系统并测试(系统测试)。

真题示例:

面向对象的分析模型主要由顶层架构图、用例与用例图和( )构成:设计模型则包含以( )表示的软件体系机构图、以交互图表示的用例实现图、完整精确的类图、描述复杂对象的( )和用以描述流程化处理过程的活动图等。

A. 数据流模型 B. 领域概念模型 C. 功能分解图 D. 功能需求模型

A. 模型视图控制器 B. 组件图 C. 包图 D. 2层、3层或N层

A. 序列图 B. 协作图 C. 流程图 D. 状态图

  1. 分析模型构成

    • 领域概念模型是分析阶段的核心,用于描述系统中的关键实体及其关系,区别于数据流模型(A)和功能分解图(C)。
  2. 设计模型表示

    • 包图(C)通过模块化组织代码结构,比组件图(B)更侧重逻辑分层,而MVC(A)是具体架构模式。
  3. 复杂对象描述

    • 状态图(D)适合描述对象生命周期内的状态转换,序列图(A)和协作图(B)更侧重交互流程。

在面向对象设计的原则中,( )原则是指抽象不应该依赖于细节,细节应该依赖于抽象,即应针对接口编程,而不是针对实现编程。

A. 开闭 B. 里氏替换 C. 最少知识 D. 依赖倒置

依赖倒置原则强调抽象不应依赖细节,细节应依赖抽象,通过接口编程降低耦合

相关文章:

  • 欣佰特携数十款机器人相关前沿产品,亮相第二届人形机器人和具身智能行业盛会
  • 网络编程 - 2
  • 阿里AI模型获FDA“突破性”认证,胰腺癌早筛实现关键突破|近屿智能邀你入局AIGC大模型
  • WordPress自定义页面与文章:打造独特网站风格的进阶指南
  • java 设计模式之模板方法模式
  • 「数据可视化 D3系列」入门第十一章:力导向图深度解析与实现
  • 【IDEA2020】 解决开发时遇到的一些问题
  • Echart 地图放大缩小
  • 2025年MathorCup数学应用挑战赛【B题成品论文第二版】(免费分享)
  • 互联网大厂Java面试:微服务与分布式系统挑战
  • 人脸扫描黑科技:多相机人脸扫描设备,打造你的专属数字分身
  • C++ STL编程-vector概念、对象创建
  • 在 PDF.js 的 viewer.html 基础上进行改造,实现同一个 PDF 文件在网页中上下拆分显示,并且两部分的标注数据能够实时同步
  • 五款小众工作软件
  • PDF.js 生态中如何处理“添加注释\添加批注”以及 annotations.contents 属性
  • 2025TGCTF Web WP复现
  • “星睿O6” AI PC开发套件评测 - 部署PVE搭建All in One NAS服务器
  • Web三漏洞学习(其三:rce漏洞)
  • MQTTClient.c的线程模型与异步事件驱动
  • java面向对象编程【基础篇】之基础概念
  • 科普|结石疼痛背后的危机信号:疼痛消失≠警报解除
  • 青岛:今年计划新增城镇住房约5.77万套,推动房地产市场回稳
  • 全球最大车展在上海启幕,解放日报头版头条:“看懂上海车展,就能预判未来”
  • 国际货币基金组织报告:将今年全球经济增长预期由此前的3.3%下调至2.8%
  • 中国政府援缅第八批紧急人道主义地震救灾物资抵达缅甸
  • 日媒:日本公明党党首将访华,并携带石破茂亲笔信