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

软件工程大复习之(四)——面向对象与UML

4.1 面向对象概述

面向对象(OO)是一种编程范式,它将数据和处理数据的方法封装在对象中。面向对象的主要概念包括:

  • 对象:实例化的数据和方法的集合。
  • :对象的蓝图或模板。
  • 封装:隐藏对象的内部状态和行为,只通过方法暴露有限的接口。
  • 继承:允许新类(子类)继承现有类(父类)的特性。
  • 多态:允许不同类的对象对同一消息做出响应。

4.2 UML简介

UML是一种标准的建模语言,用于软件工程中可视化、构建和文档化软件系统。UML包括多种图表类型,如:

  • 用例图:描述系统功能和用户如何与系统交互。
  • 类图:展示系统中的类、属性、方法和它们之间的关系。
  • 对象图:类图的实例,展示对象及其关系。
  • 序列图:展示对象间交互的时间顺序。
  • 活动图:展示业务流程或操作的步骤。
  • 状态图:展示对象状态的变化。

4.3 静态建模

静态建模关注系统的结构,主要包括:

  • 类图:展示类之间的关系,如关联、聚合、组合和继承。
  • 对象图:展示特定时刻对象间的关系。

4.4 动态建模

动态建模关注系统的行为,主要包括:

  • 序列图:展示对象间消息交换的顺序。
  • 活动图:展示业务流程或操作的步骤。
  • 状态图:展示对象状态的变化。

4.5 物理架构建模

物理架构建模关注系统的部署和硬件结构,包括:

  • 部署图:展示系统的物理组件如何分布在硬件上。

相关题目及讲解

  1. 面向对象中的“封装”是什么意思?

    • 讲解:封装是面向对象的一个核心概念,它指的是将数据(属性)和操作数据的方法(行为)捆绑在一起,并隐藏内部实现细节,只通过一个清晰的接口与外界交互。这样做可以提高代码的安全性和可维护性。
  2. 在UML中,用例图的主要作用是什么?

  • 讲解:用例图用于展示系统的功能和用户如何与系统交互。它包括参与者(Actor)和用例(Use Case),以及它们之间的关系。用例图帮助开发者理解系统的功能需求和用户需求。
  1. 请解释UML中的序列图和活动图的区别。

    • 讲解:序列图关注对象间交互的时间顺序,展示对象如何通过消息传递进行通信。而活动图关注业务流程或操作的步骤,展示流程中的各个活动以及它们的执行顺序。序列图强调时间顺序,活动图强调流程步骤。
  2. 在面向对象中,继承和组合有什么区别?

    • 讲解:继承是一种关系,其中一个类(子类)继承另一个类(父类)的特性和行为,用于表示“是一个”的关系。组合是一种关系,其中一个类的对象包含另一个类的对象,用于表示“有”的关系,并且被包含的对象的生命周期依赖于包含它的对象。
  3. UML中的部署图有什么作用?

    • 讲解:部署图用于展示系统的物理架构,包括软件组件如何部署在硬件上。它帮助开发者理解系统的部署需求和硬件配置。

选择题

  1. 面向对象中,哪个概念允许新类继承现有类的特性?
    A. 封装
    B. 继承
    C. 多态
    D. 抽象

    答案:B. 继承
    解析: 继承是面向对象编程中的一个基本概念,它允许创建新类(子类)来继承现有类(父类)的属性和方法。

  2. 在UML中,哪个图表用于展示对象间交互的时间顺序?
    A. 类图
    B. 序列图
    C. 活动图
    D. 状态图

    答案:B. 序列图
    解析: 序列图(Sequence Diagram)用于展示对象间交互的时间顺序,它显示了对象之间消息传递的顺序。

  3. UML中,哪个图表用于展示系统的静态结构?
    A. 活动图
    B. 序列图
    C. 类图
    D. 状态图

    答案:C. 类图
    解析: 类图(Class Diagram)用于展示系统的静态结构,包括类、对象、属性、方法以及它们之间的关系。

  4. 在面向对象中,多态性允许什么?
    A. 一个方法有多个实现
    B. 一个类有多个父类
    C. 一个类有多个实例
    D. 一个实例有多个类

    答案:A. 一个方法有多个实现
    解析: 多态性(Polymorphism)允许同一个方法或属性在不同的对象中有多个不同的实现,这使得同一个接口可以用于不同的类对象。

  5. UML中,哪个图表用于展示业务流程或操作的步骤?
    A. 用例图
    B. 活动图
    C. 部署图
    D. 序列图

    答案:B. 活动图
    解析: 活动图(Activity Diagram)用于展示业务流程或操作的步骤,它展示了流程中的活动以及它们的执行顺序。

填空题

  1. 在面向对象编程中, () 是一种将数据和操作数据的方法组合在一起,对外隐藏内部实现的机制。
    答案:封装

  2. UML中的 () 展示了系统中的类、属性、方法以及它们之间的关系。
    答案:类图

  3. 在UML中, () 用于展示对象状态的变化以及触发状态变化的事件。
    答案:状态图

  4. 面向对象中的 () 允许新类继承现有类的特性和行为。
    答案:继承

  5. UML中的 () 用于展示系统的物理架构,包括软件组件如何部署在硬件上。
    答案:部署图

相关文章:

软件工程大复习之(四)——面向对象与UML

4.1 面向对象概述 面向对象(OO)是一种编程范式,它将数据和处理数据的方法封装在对象中。面向对象的主要概念包括: 对象:实例化的数据和方法的集合。类:对象的蓝图或模板。封装:隐藏对象的内部…...

【Linux】shell命令

目录 shell的基本命令 shell - 贝壳 外在保护工具 用户、shell、内核、硬件之间的关系 解析器的分类: shell命令格式 history -历史记录查询 修改环境变量的值: shell中的特殊字符 通配符 管道 | 输入输出重定向 命令置换符 shell的基本命…...

ValuesRAG:以检索增强情境学习强化文化对齐

随着大型语言模型(LLMs)的迅猛发展,其在各个领域展现出强大的能力。然而,训练数据中西方中心主义的倾向,使得 LLMs 在文化价值观一致性方面面临严峻挑战,这一问题在跨文化场景中尤为突出,可能导…...

【机器学习篇】交通革命:机器学习如何引领未来的道路创新

嘿,你知道吗?机器学习正在交通领域掀起一场革命啦!它将如何引领未来道路创新呢 本文有精彩的 C 代码演示、实用的图片解释,还有超多干货,保证让你大开眼界,点赞收藏关注, 开启一场奇妙的探索之…...

DeepSeek-V3 通俗详解:从诞生到优势,以及与 GPT-4o 的对比

1. DeepSeek 的前世今生 1.1 什么是 DeepSeek? DeepSeek 是一家专注于人工智能技术研发的公司,致力于打造高性能、低成本的 AI 模型。它的目标是让 AI 技术更加普惠,让更多人能够用上强大的 AI 工具。 1.2 DeepSeek-V3 的诞生 DeepSeek-V…...

把vue项目或者vue组件发布成npm包或者打包成lib库文件本地使用

将vue项目发布成npm库文件,第三方通过npm依赖安装使用;使用最近公司接了一个项目,这个项目需要集成到第三方页面,在第三方页面点击项目名称,页面变成我们的项目页面;要求以npm库文件提供给他们;…...

【STC库函数】Compare比较器的使用

如果我们需要比较两个点的电压,当A点高于B点的时候我们做一个操作,当B点高于A点的时候做另一个操作。 我们除了加一个运放或者比较器,还可以直接使用STC内部的一个比较器。 正极输入端可以是P37、P50、P51,或者从ADC的十六个通道…...

单片机-独立按键矩阵按键实验

1、按键介绍 按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态, 如果按键按下,初始导通状态变为断开,初始断开状态变为导通 我们开发板是采用软件消抖,一般来说一个简单的按键消抖就是先读取按键的状…...

若要把普通表转成分区表,就需要先新建分区表,然后把普通表中的数据导入新建分区表。 具体怎么导入?

将普通表转换为分区表并导入数据是一个常见的数据库管理任务。以下是详细的步骤和示例,帮助你在 GaussDB 中完成这一过程: 1. 创建分区表 首先,你需要创建一个新的分区表,定义好分区键和分区策略。假设你有一个普通表 orders&am…...

XXX公司面试真题

一、一面问题 1.线程池的主要参数 核心线程数最大线程数空闲线程存活时间存活时间单位任务队列线程工厂拒绝策略允许核心线程超时 2. 线程的状态 新建状态就绪状态运行状态阻塞状态死亡状态 补充:线程阻塞的原因 线程调用sleep()方法进入睡眠状态 线程得到一个…...

第一节:电路连接【51单片机+A4988+步进电机教程】

摘要:本节介绍如何搭建一个51单片机A4988步进电机控制电路,所用材料均为常见的模块,简单高效的方式搭建起硬件环境 一、硬件清单 ①51单片机最小控制模块 ②开关电源 ③A4988模块转接座 ④二相四线步进电机 ⑤电线若干 二、接线 三、A49…...

机器学习算法深度解析:以支持向量机(SVM)为例的实践应用

机器学习算法深度解析:以支持向量机(SVM)为例的实践应用 在当今的数据驱动时代,机器学习作为人工智能的核心分支,正以前所未有的速度改变着我们的生活与工作方式。从图像识别到自然语言处理,从金融预测到医…...

解决Postman一直在转圈加载无法打开问题的方法

在使用Postman这款强大的API测试工具时,有时可能会遇到程序长时间加载而无法正常使用的情况。面对这样的问题,可以尝试以下几种解决办法: 方法一:直接运行Postman可执行文件 定位到Postman的安装目录 如果您不确定Postman的具体安…...

利用 LangChain 构建对话式 AI 应用

随着人工智能技术的快速发展,对话式 AI 已成为现代应用的核心部分。在构建智能客服、虚拟助手以及交互式学习平台时,一个强大且灵活的框架显得尤为重要。本文将深度解析 LangChain 这一框架的功能及实际使用,帮助开发者快速上手。 什么是 La…...

力扣--34.在排序数组中查找元素的第一个和最后一个位置

题目 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1&…...

【Java回顾】Day2 正则表达式----异常处理

参考资料:菜鸟教程 https://www.runoob.com/java/java-exceptions.html 正则表达式 有一部分没看完 介绍 字符串的模式搜索、编辑或处理文本java.util.regex包,包含了pattern和mathcer类,用于处理正则表达式的匹配操作。 捕获组 把多个字符…...

【SpringBoot】当 @PathVariable 遇到 /,如何处理

1. 问题复现 在解析一个 URL 时,我们经常会使用 PathVariable 这个注解。例如我们会经常见到如下风格的代码: RestController Slf4j public class HelloWorldController {RequestMapping(path "/hi1/{name}", method RequestMethod.GET)publ…...

【FlutterDart】页面切换 PageView PageController(9 /100)

上效果: 有些不能理解官方例子里的动画为什么没有效果,有可能是我写法不对 后续如果有动画效果修复了,再更新这篇,没有动画效果,总觉得感受的丝滑效果差了很多 上代码: import package:flutter/material.…...

Backend - C# 的日志 NLog日志

目录 一、注入依赖和使用 logger 二、配置记录文件 1.安装插件 NLog 2.创建 nlog.config 配置文件 3. Programs配置日志信息 4. 设置 appsettings.json 的 LogLevel 5. 日志设定文件和日志级别的优先级 (1)常见的日志级别优先级 (2&…...

Flask是什么?深入解析 Flask 的设计与应用实践

文章目录 一、引言:从微框架到生态系统二、Flask 的核心设计理念三、Flask 的关键组件解析3.1 路由系统3.2 请求与响应对象3.3 模板引擎 Jinja23.4 扩展系统 四、Flask 的并发与性能优化4.1 默认的单线程模型4.2 提升并发性能的方法4.3 性能优化技巧 五、在企业级场…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色&#xf…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...