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

软考中级_【软件设计师】知识点之【面向对象】

简介:

软件设计师考试中,面向对象模块为核心考点,涵盖类与对象、继承、封装、多态等基础概念,重点考查UML建模(类图/时序图/用例图)、设计模式(如工厂、单例模式)及SOLID设计原则。要求考生掌握对象间协作机制,具备需求分析、系统建模能力,并能通过高内聚低耦合设计解决实际问题,强调面向对象思想在软件工程中的实践应用。

一、面向对象和面向过程的区别

  1. 例如:把大象装入冰箱,需要多少步:
    1. 面向过程


2. 面向对象

二、面向对象的基本概念

  1. 面向对象= 对象+分类+继承+通过消息的通信

(一)、类

  1. 类是对想的抽象,对象是类的实例
  2. 类包含的方法和数据描述一组对象的共同行为和属性
    1. 方法:对应 行为
    2. 数据:对应 属性
public class Person{String name;String sex;void play(){// 具体行为}
}
  1. 分类
    1. 实体类:关键字(人、物)
      1. 例如:书本、课桌
    2. 接口类(边界类):关键字(媒介)
      1. 为用户提供一种系统合作交互的方式
        1. 例如:人的接口可以是web窗体、菜单、条形码
      2. 系统接口涉及把数据发送到其他系统
    3. 控制类:关键字(协调)
      1. 解释:控制类用来控制活动流,充当协调者
  2. 一般和特殊关系
    1. 一般表示父类或基类
    2. 特殊表示子类或派生类
  3. 例题:

(二)、对象

扩展:

行为的别名:方法、函数

属性的别名:状态

  1. 对象的组成:属性+对象名+方法
// 为一个person类创建一个对象
public class test{class Person {}public static void main(String args[]){Person p= new Person();}
}

(三)、消息

  1. 理解:给这个对象发消息,包含外界的消息
  2. 例如:一个类中有eat方法,
public class test{public static void main(String args[]){Person p= new Person();p.eat("汉堡"); // 发送消息}
}
  1. 例题:

二、方法重载

前提:方法名相同

  1. 方法重载分为三中情况
    1. 参数个数不同
    2. 参数类型不同
    3. 参数类型顺序不同

三、封装

  1. 记:对象是封装一组属性和行为的整体
  2. 属性私有化,对外提供set和get方法
  3. 方法私有化,使用private关键字修饰
  4. 例如
class Person{String name;public void setName(String name){this.name=name;}public String getName(){return this.name;}private void fun(){// 私有方法}
}

四、继承

关键字:extends

注意:私有属性不可背继承

  1. 继承是父类和子类之间共享数据和方法的机制
  2. 单重继承:一个子类继承一个父类
  3. 多重继承:一个子类继承多个父类
  4. 例题:

五、多态

编译:父类

运行:子类

  1. 不同的对象收到同一消息可以产生不同的结果

例如

public class test(){class Person{}class Student extends Person{}public static void main(String[] args){Person stu = Student();}
}
  1. 多态分类:

1. 通用:1. **参数多态:**1. 特征:是应用比较广泛的多态,被称为**最纯的多态**2. **包含多态:**1. 特征:一个类型是另一个类型的子类型
2. 特定:1. **过载多态:**1. 重载方法2. 强制多态:1. 特征:强制类型转换
  1. 例题:

  1. 动态绑定和静态绑定

多态在编译时 是静态绑定

多态在运行时 是动态绑定

六、面向对象设计原则

原则:

  1. 单一原则:对一个类来说,只有一个引起它变化的原因
  2. 开放-封闭原则:对扩展开放,对修改封闭
  3. 里式替换原则:基类出现的地方,子类一定也可以出现
  4. 依赖倒置原则:依赖抽象,不依赖细节/实现
  5. 接口分类原则:依赖抽象,不依赖具体
  6. 共同重用原则:重用包中的一个类,就要重用包左手拿个的所有类
  7. 共同封闭原则:一个变化对一个包产生影响,则对包中的所有类都产生影响
  8. 无环依赖原则:包的结构是一个五环图形

例题:

七、面向对象分析(OOA)

分析的目的:确定系统的功能、性能要求

包含5个活动

  1. 认定对象:定义问题,名词转为一个对象
    1. 例如:银行系统中的实质性对象:客户账务、清算。
  2. 组织对象:
  3. 描述对象间的相互作用:
  4. 确定对象的操作:
  5. 定义对象的内部信息:

八、面向对象设计(OOD)

  1. 将OOA锁创建的分析模型转为设计模型
  2. 目的:定义系统构造蓝图
  3. 5个活动
  1. 识别类及对象
  2. 定义属性
  3. 定义服务
  4. 识别关系
  5. 识别包

例题:

九、面向对象设程序设计(OOP)

十、面向对象测试

  1. 面向对象的综合测试是有底向上的测试
  2. 分为四个层次
  1. 算法层
  2. 类层
  3. 模板层
  4. 系统层

十一、扩展

  1. 一个类要实现一个接口,需要把该接口的所有方法都重写
  2. UML图基本图形
    1. 实现

2. 继承

  1. 斜体字为:抽象类
  2. 正体字为:类:可被实例化

十二、杂题

相关文章:

软考中级_【软件设计师】知识点之【面向对象】

简介: 软件设计师考试中,面向对象模块为核心考点,涵盖类与对象、继承、封装、多态等基础概念,重点考查UML建模(类图/时序图/用例图)、设计模式(如工厂、单例模式)及SOLID设计原则。要…...

Excel中COUNTIF用法解析

COUNTIF 是 Excel 中一个非常实用的函数,用于统计满足某个条件的单元格数量。它的基本语法如下: 基本语法 COUNTIF(范围, 条件) 范围:需要统计的单元格区域,例如 A1:A10 或整列 A:A。 条件:用于判断哪些单元格需要被…...

分布式锁—7.Curator的分布式锁一

大纲 1.Curator的可重入锁的源码 2.Curator的非可重入锁的源码 3.Curator的可重入读写锁的源码 4.Curator的MultiLock源码 5.Curator的Semaphore源码 1.Curator的可重入锁的源码 (1)InterProcessMutex获取分布式锁 (2)InterProcessMutex的初始化 (3)InterProcessMutex.…...

《UE5_C++多人TPS完整教程》学习笔记35 ——《P36 武器类(Weapon Class)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P36 武器类(Weapon Class)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Stephen …...

【SpringMVC】SpringMVC的启动过程与原理分析:从源码到实战

SpringMVC的启动过程与原理分析:从源码到实战 SpringMVC是Spring框架中用于构建Web应用的核心模块,它基于MVC(Model-View-Controller)设计模式,提供了灵活且强大的Web开发能力。本文将深入分析SpringMVC的启动过程、核…...

出现“ping不通但可以远程连接”的情况可能由以下原因导致

出现“ping不通但可以远程连接”的情况可能由以下原因导致: 1.防火墙或安全软件限制 • 原因:防火墙或安全软件可能阻止了ICMP数据包(ping使用的协议),但允许了远程连接所需的协议(如TCP)。 …...

MySQL表空间碎片原理和解决方案

一、表空间与碎片的基本概念 表空间:MySQL中存储表数据和索引的物理文件(如InnoDB的.ibd文件)。分为系统表空间和独立表空间。碎片:数据在物理存储上不连续,分为行级碎片(单行跨多页)和页级碎片…...

[密码学实战]Java实现国密TLSv1.3单向认证

一、代码运行结果 1.1 运行环境 1.2 运行结果 1.3 项目架构 二、TLS 协议基础与国密背景 2.1 TLS 协议的核心作用 TLS(Transport Layer Security) 是保障网络通信安全的加密协议,位于 TCP/IP 协议栈的应用层和传输层之间,提供: • 数据机密性:通过对称加密算法(如 AE…...

最小栈 _ _

一:题目 二:思路 解释:一个栈名为st,其用来正常的出入栈,一个栈名为minst,其的栈顶元素一定是最小的元素 入栈:第一个元素,两个栈一起入,后面再入栈,只有入栈…...

HTTPS加密原理详解

目录 HTTPS是什么 加密是什么 HTTPS的工作流程 1.使用对称加密 2.引入非对称加密 3.引入证书机制 客户端验证证书真伪的过程 签名的加密流程 整体工作流程 总结 HTTPS是什么 HTTPS协议也是一个应用程协议,是在HTTP的基础上加入了一个加密层,由…...

黑金风格人像静物户外旅拍Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 针对人像、静物以及户外旅拍照片,运用 Lightroom 软件进行风格化调色工作。旨在通过软件中的多种工具,如基本参数调整、HSL(色相、饱和度、明亮度)调整、曲线工具等改变照片原本的色彩、明度、对比度等属性,将…...

安装pyqt6出现的问题

安装PyQt6报错: PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: C:\\Users\\xyj19\\AppData\\Local\\Temp\\tmp3xfmekh7 [end of output] note: This error originates from a subprocess, and is likely not a pr…...

java调用c++

VScode 配置java 并且使用JNA调用c 动态库 安装 Java 开发环境 ​ 安装 JDK官网直接下载就好,推荐镜像下载 通过网盘分享的文件:jdk-8u144-windows-x64.exe​ 链接: https://pan.baidu.com/s/1Ov9bJkPNnOgcliBL-PSTFQ?pwdpg43 提取码: pg43 ​ 直接安…...

gitlab+jenkins+harbor+k8s安装操作流程之Jenkins

准备环境 一台centos7系统 4C/8G/100G 如果是jenkins2.5以上版本需要centos8以上版本 JDK1.8编译安装(最新版本jdk需要18以上) MAVEN编译安装 GIT编译安装 JDK1.8步骤 tar -zxvf 解压 vim /etc/profile export JAVA_HOME/data/jdk1.8.0_111 export JRE_HOME$JAVA…...

【机械视觉】C#+VisionPro联合编程———【三、加载CogToolBlock工具详解,以及实例】

【机械视觉】C#VisionPro联合编程———【三、加载CogToolBlock工具详解,以及实例】 在VisionPro中,CogToolBlock 是一种容器工具,可以将多个视觉工具(如CogBlob、CogPMAlign等)组合成一个可复用的流程。通过C#与Visi…...

Android14 串口控制是能wifi adb实现简介

Android14 串口控制是能wifi adb实现简介 一、前言 文章目录 Android14 串口控制是能wifi adb实现简介一、前言二、Android14 串口控制是能wifi adb实现1、设置prop属性命令开启adb(1)相关prop属性设置(2)在设置界面或者 ifconfi…...

启动wsl里的Ubuntu24报错:当前计算机配置不支持 WSL2,HCS_E_HYPERV_NOT_INSTALLED

问题:启动wsl里的Ubuntu24报错 报错信息: 当前计算机配置不支持 WSL2。 请启用“虚拟机平台”可选组件,并确保在 BIOS 中启用虚拟化。 通过运行以下命令启用“虚拟机平台”: wsl.exe --install --no-distribution 有关信息,请访…...

常用AI工具推荐

AI对话相关 Deepseek https://chat.deepseek.com/ Kimi https://kimi.moonshot.cn/ 豆包 https://www.doubao.com/ 文心一言 https://yiyan.baidu.com/ 腾讯元宝 https://yuanbao.tencent.com 通义千问 https://tongyi.aliyun.com/qianwen/ 图片生成相关 即梦 https://jimen…...

用AI学编程3——Java学习1

一个Java文件, 整理出Java从入门到精通的所有知识点, 给出注释, 给出这样的Java文件 Java 学习整合文件 /*** Java 学习整合文件* 包含 Java 从入门到精通的主要知识点,包括基础语法、面向对象编程、异常处理、集合框架、多线程…...

如何监控 Pod 的 CPU/内存使用率,prometheus+grafana

一、监控 Pod 的 CPU/内存使用率的方法 1. 使用 kubectl top 命令&#xff08;临时检查&#xff09; # 查看所有 Pod 的资源使用率&#xff08;需安装 Metrics Server&#xff09; kubectl top pods --all-namespaces ​ # 查看指定命名空间的 Pod kubectl top pods -n <n…...

云服务器Linux安装Docker

系统要求 Docker 官方建议将 Docker 运行在 Linux系统上&#xff0c;当然也可以在其他平台运行&#xff0c;本篇博客只介绍在 Linux 系统上的安装方法。 Docker 运行在 CentOS7.X 版本以上&#xff0c;本文使用阿里云 ECS 云服务器 CentOS 7.4 版本。 Docker 需要安装在 64 …...

信息安全与网络安全的区别_信息安全与网络安全之差异探析

在当今数字化时代&#xff0c;信息安全与网络安全成为了人们关注的热点话题。尽管这两个概念经常被提及&#xff0c;但它们之间存在着明显的区别。本文旨在探讨信息安全与网络安全的定义、范畴及应对策略&#xff0c;以帮助读者更好地理解和应对相关挑战。 一、定义与范畴的差…...

Express 中 get 参数获取

1. 使用 req.query 获取 URL 查询字符串参数 在 GET 请求中&#xff0c;参数通常以查询字符串的形式附加在 URL 后面&#xff0c;格式为 ?参数名1值1&参数名2值2 。Express 里可通过 req.query 对象获取这些参数。 const express require("express"); const …...

充电桩快速搭建springcloud(微服务)+前后端分离(vue),客户端实现微信小程序+ios+app使用uniapp(一处编写,处处编译)

充电桩管理系统是专为中小型充电桩运营商、企业和个人开发者设计的一套高效、灵活的管理平台。系统基于Spring Cloud微服务架构开发&#xff0c;采用模块化设计&#xff0c;支持单机部署与集群部署&#xff0c;能够根据业务需求动态扩展。系统前端使用uniapp框架&#xff0c;可…...

深度求索(DeepSeek)开源周技术全景与行业影响研究报告

2025年2月24日至28日&#xff0c;中国AI企业深度求索&#xff08;DeepSeek&#xff09;发起了为期五天的“开源周”活动&#xff0c;连续开源五大核心代码库&#xff08;FlashMLA、DeepEP、DeepGEMM、DualPipe、EPLB&#xff09;及分布式文件系统3FS&#xff0c;覆盖AI模型训练…...

设计AI芯片架构的入门 研究生入行数字芯片设计、验证的项目 opentitan

前言 这几年芯片设计行业在国内像坐过山车。时而高亢&#xff0c;时而低潮。最近又因为AI的热潮开始high起来。到底芯片行业的规律是如何&#xff1f; 我谈谈自己观点&#xff1a;芯片设计是“劳动密集型”行业。 “EDA和工具高度标准化和代工厂的工艺标准化之后&#xff0c;芯…...

串口助手的C#编写以及有人串口服务器USR-DR301的使用

本文介绍C#编写串口程序的要点,串口服务器USR-DR301(RS232转TCP)的使用、以及调试过程中碰到的两个问题: 1). 调用串口报“连到系统上的设备没有发挥作用”. 2). “所有文本框都变成了透明”的异常处理 代码见:https://download.csdn.net/download/qq_34047402/9046713…...

Android中AIDL和HIDL的区别

在Android中&#xff0c;AIDL&#xff08;Android Interface Definition Language&#xff09; 和 HIDL&#xff08;HAL Interface Definition Language&#xff09; 是两种用于定义跨进程通信接口的语言。AIDL 是 Android 系统最早支持的 IPC&#xff08;进程间通信&#xff0…...

【HeadFirst系列之HeadFirst设计模式】第18天之蝇量模式(Flyweight Pattern):优化资源的秘密武器

蝇量模式&#xff08;Flyweight Pattern&#xff09;&#xff1a;优化资源的秘密武器 在软件开发中&#xff0c;当系统需要创建大量相似对象时&#xff0c;内存占用和性能问题就会浮出水面。《Head First 设计模式》介绍了 蝇量模式&#xff08;Flyweight Pattern&#xff09;…...

微信小程序将markdown内容转为pdf并下载

要在微信小程序中将Markdown内容转换为PDF并下载,您可以使用以下方法: 方法一:使用第三方API服务 选择第三方API服务: 可以选择像 Pandoc、Markdown-PDF 或 PDFShift 这样的服务,将Markdown转换为PDF。例如,PDFShift 提供了一个API接口,可以将Markdown内容转换为PDF格式…...