软件工程大复习之(四)——面向对象与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中的 () 用于展示系统的物理架构,包括软件组件如何部署在硬件上。
    答案:部署图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/66374.shtml

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

相关文章

【linux基础I/O(2)】理解文件系统|文件缓冲区|软硬链接|动静态库

目录 前言1. 理解C语言的缓冲区2. 对文件系统的初认识3. 理解软硬链接1. 软硬链接的特征2.软硬链接的作用 4. 理解动静态库5. 总结 前言 对于文件来讲,有打开的在内存中的文件,也有没有打开的在磁盘上文件,上一篇文章讲解的是前者,本篇文章将带大家了解后者! 本章重点: 本篇文…

什么是Redis的渐进式ReHash?

文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 文章内容收录到个人网站,方便阅读:http://hardyfish.top/ Redis 的渐进式 rehash 是一…

Linux应用软件编程--网络通信(udp协议,tcp协议)

网络通信:不同主机,进程间通信,分为广域网和局域网 OSI 七层模型:是一种理论模型 应用层:通信传输的数据内容 http、FTP、TFTP、MQTT 表述层:数据加密,解密操作,压缩&#xff…

深度学习,训练集准确率高,但验证集准确率一直不上升,很低的问题

在训练过程中,训练集的准确率稳步上升,但是验证集的准确率一直在40%左右徘徊,从网上搜索可能的原因有: 1、学习率太小,陷入局部最优。 2、数据量太小(4000多条数据,应该还可以吧) …

【C++】构造函数与析构函数

写在前面 构造函数与析构函数都是属于类的默认成员函数! 默认成员函数是程序猿不显示声明定义,编译器会中生成。 构造函数和析构函数的知识需要建立在有初步类与对象的基础之上的,关于类与对象不才在前面笔记中有详细的介绍:点我…

期刊选择【生物医学工程】

所有数据来源letpub Academic radiology【共一共通,速度√杠杠的】 【LetPub】ACADEMIC RADIOLOGY 影响因子3.800分,是几区,2023-2024年期刊投稿经验分享,ACADEMIC RADIOLOGY主页,推荐审稿人、编辑,审稿…

【简博士统计学习方法】3. 统计学习方法的三要素

3. 统计学习方法的三要素 3.1 监督学习的三要素 3.1.1 模型 假设空间(Hypothesis Space):所有可能的条件概率分布或决策函数,用 F \mathcal{F} F表示。 若定义为决策函数的集合: F { f ∣ Y f ( X ) } \mathcal{F…

Flink如何设置合理的并行度

一个Flink程序由多个Operator组成(source、transformation和 sink)。 一个Operator由多个并行的Task(线程)来执行, 一个Operator的并行Task(线程)数目就被称为该Operator(任务)的并行度(Parallel)。即并行度就是相对于Operator来说的。 合理设置并行度可以有效提高Flink作业…

【PostgreSQL】PG多实例部署

注释 PGPORT 和 PGDATA 环境变量 su - postgresvim ~/.bash_profileexport PATH=/usr/local/pgsql/bin:$PATH export MANPATH=/usr/local/pgsql/share/man:$MANPATH export LD_LIBRARY_PATH=/usr/local/pgsql/lib #export PGPORT=5432 export LANG=en_US.UTF8 export PS1=&quo…

【llm/ollama/qwen】在本地部署qwen2.5-coder并在vscode中集成使用代码提示功能

说在前面 操作系统:windows11ollama版本:0.5.4vscode版本:1.96.2continue插件版本:0.8.66 ollama安装 访问官网,点击下载安装即可 默认装在了C盘,比较蛋疼;但是可以指定路径安装:Ol…

PHP零基础入门笔记

表达式:任何有值的东西就是表达式 php可以解析双引号,不可以解析单引号,双引号中引用变量可以输出引用变量的值,但是单引号不可以 1.变量和变量的销毁 unset(变量名) //销毁变量 变量是严格区分大小写的,在php中…

《CPython Internals》阅读笔记:p1-p19

《CPython Internals》学习第 1 天,p1-p19 总结,总计 19 页。 一、技术总结 无。 二、英语总结(生词:2) 1.humble vs humbled (1)humble: humus(“earth”) adj. 字面意思是“on the ground”, 后面引申为“lowly in kind, state, cond…

macos安装java8

下载 dmg方式安装 安装 双击pkg运行 输入java -version验证 配置环境变量 cd ~ ls -a输入 ls -a后查看是否已经存在.bash_profile文件,如果已经存在就不需要创建,如果不存在,继续执行下方命令创建文件 touch .bash_profile /usr/l…

自定义校验注解

已有的注解不能满足所有的校验需求,特殊的情况需要自定义校验(自定义校验注解) 1.自定义注解,并在注解上指定校验逻辑 Constraint(validatedBy StateValidation.class) // 指定校验逻辑 package com.example.demo.validation;import jakarta.validation.Constraint; import j…

指代消解:自然语言处理中的核心任务与技术进展

目录 前言1. 指代消解的基本概念与分类1.1 回指与共指 2. 指代消解的技术方法2.1 端到端指代消解2.2 高阶推理模型2.3 基于BERT的模型 3. 事件共指消解:跨文档的挑战与进展3.1 联合模型3.2 语义嵌入模型(EPASE) 4. 应用场景与前景展望4.1 关键…

Chapter4.1 Coding an LLM architecture

文章目录 4 Implementing a GPT model from Scratch To Generate Text4.1 Coding an LLM architecture 4 Implementing a GPT model from Scratch To Generate Text 本章节包含 编写一个类似于GPT的大型语言模型(LLM),这个模型可以被训练来生…

nginx正向代理从安装到使用一网打尽系列(二)使用

一、背景 使用场景大总结,可作为参考手册用 nginx正向代理从安装到使用一网打尽系列(一)安装 nginx正向代理从安装到使用一网打尽系列(二)使用 二、使用场景 1、所有内网应用都不能直接访问外网,但需要…

字玩FontPlayer开发笔记4 性能优化 首屏加载时间优化

字玩FontPlayer开发笔记4 性能优化 首屏加载时间优化 字玩FontPlayer是笔者开源的一款字体设计工具,使用Vue3 ElementUI开发,源代码: github: https://github.com/HiToysMaker/fontplayer gitee: https://gitee.com/toysmaker/fontplayer …

MySQL Binlog 监听方案

如果 EmbeddedEngine 类在 debezium-connector-mysql 中不可用,原因是 Debezium 的新版本移除了 EmbeddedEngine。这是因为 Debezium 的架构变更,它现在鼓励使用 Kafka Connect 或 Debezium Server 来处理数据变更事件。 下面是几种替代方法来实现 MySQ…

JSP内置对象、Servlet与MVC

目录 1、JSP内置对象1. 1、**out 对象**1.2、 **request 对象**1.3、 **response 对象**1.4、 **session 对象**1.5、 **application 对象**1.6、 **cookie 对象** 2、Servlet2.1、Servlet 概念2.2、Servlet 体系结构2.3、Servlet 接口2.4、ServletConfig 接口2.5、Servlet 案例…