《软件设计师》复习笔记(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.mzph.cn/web/76245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu22.04 安装有度即时通

1.官网下载deb的安装包 官网地址:有度客户端下载-有度 注意:这个网站的下载是有时间限制的,有时候无法下载 需要对应系统版本,否则无法使用 我之前使用了dpkg安装了一个旧版本,卸载使用以下命名行: 使用…

ValueError: model.embed_tokens.weight doesn‘t have any device set

ValueError: model.embed_tokens.weight doesn’t have any device set model.embed_tokens.weight 通常在深度学习框架(如 PyTorch)中使用,一般是在处理自然语言处理(NLP)任务时,用于指代模型中词嵌入层(Embedding layer)的权重参数。下面详细解释: 词嵌入层的作用 …

如何提高单元测试的覆盖率

一、定位未覆盖的代码 ​利用 IDEA 的覆盖率工具​: 右键测试类 → ​Run with Coverage,或使用 AltShiftF10(Windows)打开运行菜单选择覆盖率。​查看高亮标记​: ​绿色​:已覆盖代码行。​红色​&#x…

聚合直播-Simple Live-v1.7.7-全网直播平台能在一个软件上看完

聚合直播-Simple Live 链接:https://pan.xunlei.com/s/VOO7u3o4FNL_XA9VJ6l7KBNfA1?pwdyrau# 聚合直播-Simple Live-v1.7.7-全网直播平台能在一个软件上看完

三大等待和三大切换

三大等待 1、三大等待:等待的方式有三种:强制等待,隐性等待,显性等待。 1、强制等待:time.sleep(2),秒 优点:使用简单缺点:等待时间把握不准,容易造成时间浪费或者等待时…

使用Lombok @Builder 收参报错提示没有无参构造方法的原因与解决办法

使用Lombok Builder 收参报错提示没有无参构造方法的原因与解决办法 类上加了Builder之后接口接收前端传来的参数报错:(no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) 1.解决办法…

SAP 查找JOB进程ID

如何查找后台JOB的进程ID SM37勾选对于JOB

通过C# 将Excel表格转换为图片(JPG/ PNG)

Excel 表格可能会因为不同设备、不同软件版本或字体缺失等问题,导致格式错乱或数据显示异常。转换为图片后,能确保数据的排版、格式和外观始终保持一致,无论在何种设备或平台上查看,都能呈现出固定的样式,避免了因环境…

Langchain构建RAG对话应用

本文:关注 检索器与上下文的子链、父链;即检索器也需要上下文内容。 RAG是一种增强LLM知识的方法,通过引入额外的数据来实现。 实现思路:加载—》分割—》存储—》检索—》生成。 初始化 import os import bs4 from langchain.c…

关于模拟噪声分析的11个误区

目录 1. 降低电路中的电阻值总是能改善噪声性能 2. 所有噪声源的噪声频谱密度可以相加,带宽可以在最后计算时加以考虑 3. 手工计算时必须包括每一个噪声源 4. 应挑选噪声为ADC 1/10的ADC驱动器 5. 直流耦合电路中必须始终考虑1/f噪声 6. 因为1/f噪声随着频率降…

vue,uniapp解决h5跨域问题

如果有这样的跨域问题,解决办法: ✅ 第一步:在项目根目录下创建 vue.config.js 和 package.json 同级目录。 // vue.config.js module.exports {devServer: {proxy: {/api: {target: https://app.yycjkb.cn, // 你的后端接口地址changeOrig…

SQL通用语法和注释,SQL语句分类(DDL,DML,DQL,DCL)及案例

目录 SQL通用语法和注释 SQL语句分类(DDL,DML,DQL,DCL,TPL,CCL) DDL(数据定义语言) 数据库操作 查询(SHOW、SELECT) 创建(CREAT…

Linux:线程概念与控制

✨✨所属专栏:Linux✨✨ ✨✨作者主页:嶔某✨✨ Linux:线程概念于控制 var code “d7e241ae-ed4d-475f-aa3d-8d78f873fdca” 概念 在一个程序里的一个执行路线就叫做线程thread。更准确一点:线程是“一个进程内部的控制序列” …

人脸识别联合行为检测的办公管理新模式

基于人脸识别与行为检测的办公智能化解决方案 一、背景 在传统办公场景中,员工考勤管理、工位使用情况统计、安全监控等环节存在诸多痛点。例如,传统考勤方式如指纹打卡、刷卡等存在代打卡现象,考勤数据不准确;对于员工是否在工…

ceph weight 和 reweight 的区别

ceph osd df ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS0 nvme 6.98630 0.95508 7.0 TiB 5.0 TiB 4.9 TiB 13 GiB 33 GiB 2.0 TiB 71.10 0.96 83 up1 nvme 6.98630

WInform当今技术特性分析

Windows Forms (WinForms) 技术特性分析 引言 Windows Forms (WinForms) 作为微软最早推出的基于.NET的图形用户界面开发框架,已经存在了20多年。在如今充满了各种现代UI框架的软件开发生态系统中,WinForms仍然保持着其独特的地位。本文将深入分析WinF…

Spark rdd算子解析与实践

一、RDD基础回顾 RDD(Resilient Distributed Dataset) 是Spark的核心抽象,代表一个不可变、分区的分布式数据集合。其核心特性包括: 容错性:通过血缘(Lineage)记录数据生成过程,支…

sqlite3的API以及命令行

sqlite是目前最流行的嵌入式数据库。 所谓嵌入式,就是足够简单,可以嵌入到我们自己开发的应用程序之中。 在Linux系统中,sqlite的使用只需要使用它的API,连接它的动态连接库,甚至都不用连接,sqlite的实现…

Allure测试报告按测试终端和测试类型智能分类查看

以下是实现Allure测试报告按测试终端和测试类型智能分类的完整方案: 一、测试框架分层设计 # 项目结构 project/ ├── api_tests/ # API测试 │ └── test_order.py ├── app_tests/ # 移动端测试 │ ├── android/ │ └── ios/ ├── pc_te…

Spine-Leaf 与 传统三层架构:全面对比与解析

本文将详细介绍Spine-Leaf架构,深入对比传统三层架构(Core、Aggre、Access),并探讨其与Full-mesh网络和软件定义网络(SDN)的关联。通过通俗易懂的示例和数据中心网络分析,我将帮助您理解Spine-L…