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

《软件设计师》复习笔记(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. 依赖倒置

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

http://www.xdnf.cn/news/335.html

相关文章:

  • Qt文件操作
  • 影楼精修行业浅见-序言
  • 使用人工智能大模型,如何免费快速把文本转成语音,保存mp3文件
  • Ubuntu 修改语言报错Failed to download repository information
  • 2025/4/18 数据库相关基础知识
  • 编程规范之整数运算
  • 进程间通信(IPC)----共享内存
  • 热蛋白质组分析技术(TPP)在前列腺癌治疗研究中的应用
  • c++ map与unordered_map的比较
  • 抖音“碰一碰发视频”源码搭建:碰一碰定制化开发
  • 西门子 博途 软件 崩溃
  • 接口自动化测试(二)
  • 不一样的flag 1(迷宫题)
  • 《软件设计师》复习笔记(11.2)——开发方法、产品线、软件复用、逆向
  • 从零实现Git安装、使用
  • Java 爬虫按关键字搜索淘宝商品:实现与优化
  • MARA/MARC表 PSTAT字段
  • [特殊字符] 当Docker遇上大模型:本地运行LLM的奇幻漂流 [特殊字符]
  • 高阶数据结构 图 (上)
  • UR5e机器人动力学
  • 大模型如何突破“知识盲区”?一场静悄悄的技术革命正在发生
  • [Vue3]动态引入图片
  • NHANES指标推荐:CMI
  • 阿里云服务器搭建开源版禅道
  • 高级工程师评审-隐藏的条件都有哪些
  • gitee提交大文件夹
  • MapWindow GIS:开源的GIS程序 库和工具,适用于基于C#和.NET的应用程序
  • 电路安全智控系统与主机安全防护系统主要功能是什么
  • Spring lazy-init 懒加载的原理
  • Vue自定义指令-防抖节流