软考 软件设计师 场景分析题 速成篇

news2024/11/13 10:23:43

文章目录

  • 试题一:数据流图
    • 💖 基本图形元素
      • 1. 外部实体
      • 2. 数据存储
      • 3. 加工
      • 4. 数据流
    • 📚 例题
      • (1)实体名称
      • (2)数据存储名称
      • (3)数据流
        • ① 父子图平衡
        • ② 加工有输入有输出
        • ④ 数据守恒
        • ⑤ 答题格式
        • 参考答案
      • (4)疑难杂题
        • ① 结构化语言
        • ② 数据流是否应该存在
        • ③ 改进数据流
        • ④ 分析输入输出
  • 试题二:数据库 ER-图
    • 💖 基本图形元素
      • 1. 实体
      • 2. 属性
      • 3. 联系
    • 💖 关系模式
      • 1. 基本概念
      • 2. 一对一关系
      • 3. 一对多
      • 4. 多对多
      • 5. 三个实体的联系转换
      • 6. 实体父类和子类的转换
    • 📚 例题
      • (1)缺失的联系
      • (2)补充关系模式
      • (3) 疑难杂题
  • 试题三:UML 图
    • 💖 基础知识
      • 1. 关系
        • (1)依赖关系
        • (2)关联关系
        • (3)泛化关系
        • (4)实现关系
      • 2. 类图
      • 3. 用例图
        • (1)包含关系
        • (2)扩展关系
        • (3)泛化关系
    • 📚 例题
      • (1)用例名
      • (3)用例关系
      • (3)类名
      • (4)疑难杂题(事件流)
  • 试题四:设计模式
  • 💖 基础知识
    • 1. 简单工厂
    • 2. 工厂方法
  • 📚 例题
    • 1. 抽象工厂
      • 📙 题目
    • 2. 生成器模式(建造者模式)
      • 📙 题目
    • 3. 原型模式
      • 📙 题目
    • 4. 适配器模式
      • 📙 题目
    • 5. 桥接模式
      • 📙 题目
    • 6. 组合模式
      • 📙 题目
    • 7. 装饰器模式
      • 📙 题目
    • 8. 享元模式
      • 📙 题目
    • 9. 命令模式
      • 📙 题目
    • 10. 观察者
      • 📙 题目
    • 11. 状态模式
      • 📙 题目
    • 11. 策略模式
      • 📙 题目
    • 13. 访问者模式
      • 📙 题目
    • 14. 中介者模式
      • 📙 题目


👨‍🏫 参考笔记

试题一:数据流图

👨‍🏫 参考视频
数据流图:Data Fluid Diagram(DFD)

💖 基本图形元素

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1. 外部实体

在这里插入图片描述

2. 数据存储

在这里插入图片描述

3. 加工

在这里插入图片描述

4. 数据流

在这里插入图片描述

📚 例题

在这里插入图片描述

(1)实体名称

看 子图,看数据流的加工,定位文字说明

在这里插入图片描述

(2)数据存储名称

文章中没有具体的数据存储名称,后面加表或者文件就可以了

在这里插入图片描述

(3)数据流

在这里插入图片描述

① 父子图平衡

结合父图看子图的数据流有没有缺失

② 加工有输入有输出

在这里插入图片描述

  • 黑洞:缺少以此加工为起点的数据流(加工输出到其他)
  • 白洞:缺少以此加工为终点的数据流(其他输入到加工)
④ 数据守恒

子图的加工 找 对应的文字描述

在这里插入图片描述

⑤ 答题格式

在这里插入图片描述

参考答案

在这里插入图片描述

(4)疑难杂题

① 结构化语言

在这里插入图片描述

② 数据流是否应该存在

在这里插入图片描述

③ 改进数据流

在这里插入图片描述

④ 分析输入输出

在这里插入图片描述

试题二:数据库 ER-图

👨‍🏫 参考视频

💖 基本图形元素

在这里插入图片描述

1. 实体

  • 弱实体
    在这里插入图片描述
  • 父子实体
    在这里插入图片描述

2. 属性

某个属性有下划线:主键

在这里插入图片描述

  • 简单属性:不可再分,原子的
  • 复合属性:可以细分为更小的部分

3. 联系

  • 一个:1
  • 多个:nm*

在这里插入图片描述


在这里插入图片描述

💖 关系模式

1. 基本概念

在这里插入图片描述

主键一般直接给出
在这里插入图片描述

2. 一对一关系

在这里插入图片描述
在这里插入图片描述

3. 一对多

外键给到 多的一方:把那方的主键 作为外键属性 给 方的实体

在这里插入图片描述
在这里插入图片描述

4. 多对多

在这里插入图片描述

在这里插入图片描述

5. 三个实体的联系转换

有联系的,把主键都加进去,作为新的主键

在这里插入图片描述

6. 实体父类和子类的转换

  • 父类的主键 加到 子类 中去
    在这里插入图片描述

📚 例题

在这里插入图片描述

(1)缺失的联系

在这里插入图片描述

在这里插入图片描述

(2)补充关系模式

  • 完整性约束关系:就是主键和外键
  • 主键下面是实线
  • 外键下面是虚线
    在这里插入图片描述

(3) 疑难杂题

在这里插入图片描述

试题三:UML 图

👨‍🏫 参考视频

软考近几年主要是考察 类图 和 用例图

💖 基础知识

1. 关系

在这里插入图片描述


(1)依赖关系

一个事务的变化引起另一个变化

在这里插入图片描述

(2)关联关系

描述整体和部分之间的关系

在这里插入图片描述


在这里插入图片描述


聚集
在这里插入图片描述

  • 聚合(空心菱形):好聚好散,可以独立存在
  • 组合(实心菱形) :一个组的,同生共死
(3)泛化关系
  • 子类 指向 父类 (空心三角形;聚合是空心菱形)
  • 特殊 和 一般
  • 继承:父类指向子类
    在这里插入图片描述
(4)实现关系
  • 接口和实现类
    在这里插入图片描述

2. 类图

聚集分为聚合:空心,组合:实心
关联:无向边
依赖:虚线箭头
泛化(继承):实线三角箭头
实现:虚线三角箭头

在这里插入图片描述

3. 用例图

在这里插入图片描述

(1)包含关系

虚线箭头 指向被包含用例(箭头指向的表示必须有)

在这里插入图片描述

(2)扩展关系

《extend》 虚线箭头 指向基本用例(箭头指向的表示必须有)

在这里插入图片描述

在这里插入图片描述

(3)泛化关系

实线空心三角形
继承的反义词,B继承A,A泛化B

在这里插入图片描述

📚 例题

在这里插入图片描述

(1)用例名

主要在描述中看:用户能够做的事情,也就是参与者的动作,这就是用例

在这里插入图片描述

在这里插入图片描述

(3)用例关系

  • 包含:A包含B,先执行 B 再执行 A (《inlcude》:虚线箭头指向 B)
  • 扩展:B扩展A,B是A的特殊情况下的备用事件(类似于异常)(《extend:虚线箭头指向A》)
  • 泛化:继承的反义
    在这里插入图片描述

在这里插入图片描述

(3)类名

  1. 注意文章描述中的英文,可能就是类名
  2. 从图中已有的类名入手
  3. 泛化关系,也就是继承 :(机器人和传感器)

在这里插入图片描述
在这里插入图片描述

(4)疑难杂题(事件流)

  • 基本事件流:正确发生的执行流程
  • 备选事件流:出错的处理事件和可选事件
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

试题四:设计模式

👨‍🏫 参考笔记

💖 基础知识

1. 简单工厂

在这里插入图片描述

public class SimpleFactory {
    public static void main(String[] args) {
        Product productA = Factory.createProduct("A");
        productA.info();

        Product productB = Factory.createProduct("B");
    }
}

abstract class Product {
    public abstract void info();
}

class Factory {
    public static Product createProduct(String type) {
        Product product = null;

        switch (type) {
            case "A":
                product = new ProductA();
                break;
            case "B":
                product = new ProductB();
                break;
            default:
                System.out.println("没有 " + type + " 类型的产品!");
                break;
        }

        return product;
    }
}

class ProductA extends Product {

    @Override
    public void info() {
        System.out.println("产品的信息:A");
    }
}

class ProductB extends Product {

    @Override
    public void info() {
        System.out.println("产品的信息:B");
    }
}

2. 工厂方法

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

在这里插入图片描述

把 简单工厂 的一个工厂 换成 多个工厂,定义一个工厂接口(工厂方法

在这里插入图片描述

public class FactoryMethod {
    public static void main(String[] args) {
        Factory factoryA = new FactoryA();
        // 父类 对象名 = new 子类();

        Product productA = factoryA.createProduct();
        // Product productA = new ProductA();
        productA.info();

        Factory factoryB = new FactoryB();

        Product productB = factoryB.createProduct();
        productB.info();
    }
}

// class Factory
interface Factory {
    public Product createProduct();
}

class FactoryA implements Factory {

    @Override
    public Product createProduct() {
        return new ProductA();
    }
}

class FactoryB implements Factory {

    @Override
    public Product createProduct() {
        return new ProductB();
    }
}

// abstract class Product
interface Product {
    // public abstract void info();
    public void info();
}

// class ProductA extends Product
class ProductA implements Product {

    @Override
    public void info() {
        System.out.println("产品的信息:A");
    }
}

// class ProductB extends Product
class ProductB implements Product {

    @Override
    public void info() {
        System.out.println("产品的信息:B");
    }
}

📚 例题

1. 抽象工厂

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口,而无需指定具体实现类。通过使用抽象工厂模式,可以将客户端与具体产品的创建过程解耦,使得客户端可以通过工厂接口来创建一族产品。

📙 题目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2. 生成器模式(建造者模式)

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在这里插入图片描述

📙 题目

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 原型模式

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在这里插入图片描述


📙 题目

  • 注意是实现Cloneable接口
  • 注意类型转换
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 适配器模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

左边继承 右边传参

在这里插入图片描述


📙 题目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
在这里插入图片描述


📙 题目

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. 组合模式

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

在这里插入图片描述


📙 题目

在这里插入图片描述
***在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

7. 装饰器模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

在这里插入图片描述

📙 题目

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8. 享元模式

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。

享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个分布于不同位置的圆来演示这种模式。由于只有 5 种可用的颜色,所以 color 属性被用来检查现有的 Circle 对象。

在这里插入图片描述

📙 题目

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9. 命令模式

命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

在这里插入图片描述

在这里插入图片描述

📙 题目

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

10. 观察者

观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。

当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。

在这里插入图片描述
在这里插入图片描述

📙 题目

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11. 状态模式

在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。

在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

在这里插入图片描述

📙 题目

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

11. 策略模式

在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。

在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。

在这里插入图片描述

📙 题目

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

13. 访问者模式

在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。

在这里插入图片描述

📙 题目

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14. 中介者模式

中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。

在这里插入图片描述

📙 题目

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

visual studio snippet常用注释片段

Visual Studio 2022 添加自定义代码片段_vs2022 代码片段-CSDN博客 dclass.snippet: <?xml version"1.0" encoding"utf-8"?> <CodeSnippets xmlns"http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> …

Pip,whl,源码编译安装Python库

pip安装 pip 是 Python 包管理工具&#xff0c;用于安装和管理 Python 包。pip 是 Python 开发中不可或缺的工具&#xff0c;能够帮助开发者轻松地管理项目所需的各种库和依赖。无论是安装新包、升级现有包还是卸载不需要的包&#xff0c;pip 都提供了简单而强大的命令来完成这…

YOLOv5改进 | 主干网络 | 用repvgg模块替换Conv【教程+代码 】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 尽管Ultralytics 推出了最新版本的 YOLOv8 模型。但YOLOv5作为一个anchor base的目标检测的算法&#xff0c;YOLOv5可能比YOLOv8的效果更好。…

【02】GeoScene Enterprise(Windows)许可更新

如果在Windows环境下部署了GeoScene Enterprise基础环境&#xff0c;也就是部署了server、portal、datastore、web adaptor四大组件&#xff0c;当试用许可到期后&#xff0c;拿到新的许可想要更新许可&#xff0c;从而使得软件能够正常工作&#xff0c;下述步骤是更新GeoScene…

WebRTC 音频抗弱网技术

实时音视频通话一直是我们通信行业必不可少的一门技术&#xff0c;并且近今年音视频边缘设备产品涌现出很多设备&#xff0c;然而&#xff0c;在当今网络环境中&#xff0c;网络传输质量确常常无法得到有效的保障&#xff0c;那么&#xff0c;在当今弱网环境下&#xff0c;如何…

DeepRec Extension 打造稳定高效的分布式训练

DeepRec Extension 即 DeepRec 扩展&#xff0c;在 DeepRec 训练推理框架之上&#xff0c;围绕大规模稀疏模型分布式训练&#xff0c;我们从训练任务的视角提出了自动弹性训练&#xff0c;分布式容错等功能&#xff0c;进一步提升稀疏模型训练的整体效率&#xff0c;助力 DeepR…

Vue3:动态路由+子页面(新增、详情页)动态路由配置(代码全注释)

文章目录 实现思路调用后端接口获取用户权限获取页面权限动态绑定到路由对象中动态添加子页面路由 实现思路 emm&#xff0c;项目中使用动态路由实现根据后端返回的用户详情信息&#xff0c;动态将该用户能够访问的页面信息&#xff0c;动态生成并且绑定到路由对象中。但是后…

【leetcode面试经典150题】-80. 删除有序数组中的重复项 II

【leetcode面试经典150题】-80. 删除有序数组中的重复项 II 1 题目介绍2 个人解题思路2.1 代码2.2 思路 3 官方题解 1 题目介绍 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组…

MongoDB基础入门到深入(七)建模、调优

文章目录 系列文章索引十一、MongoDB开发规范十二、MongoDB调优1、三大导致MongoDB性能不佳的原因2、影响MongoDB性能的因素3、MongoDB性能监控工具&#xff08;1&#xff09;mongostat&#xff08;2&#xff09;mongotop&#xff08;3&#xff09;Profiler模块&#xff08;4&a…

2024电工杯数学建模竞赛选题建议+初步分析

提示&#xff1a;DS C君认为的难度&#xff1a;B<A&#xff0c;开放度&#xff1a;A<B。 以下为AB题选题建议及初步分析&#xff1a; A题&#xff1a;园区微电网风光储协调优化配置 题目描述&#xff1a; 园区微电网由风光发电和主电网联合为负荷供电&#xff0c;需要…

18kw 机架式液冷负载的使用方法有哪些?

机架式液冷负载是一种高效、节能的散热设备&#xff0c;广泛应用于数据中心、服务器房等场所。它通过将冷却液循环流动&#xff0c;将热量从负载设备带走&#xff0c;实现设备的稳定运行。以下是18kw机架式液冷负载的使用方法&#xff1a; 1. 安装前准备&#xff1a;在安装机架…

【Linux】-Spark分布式内存计算集群部署[20]

注意&#xff1a; 本节的操作&#xff0c;需要前置准备好Hadoop生态集群&#xff0c;请先部署好Hadoop环境 简介 Spark是一款分布式内存计算引擎&#xff0c;可以支持海量数据的分布式计算。 Spark在大数据体系是明星产品&#xff0c;作为最新一代的综合计算引擎&#xff0c…

对于高速信号完整性,一块聊聊啊(8)

什么是Df和Dk 介电常数( D k )、介质损耗( D f ) 介电常数&#xff1a;材料如果在受到外部电场作用时能够储存电能&#xff0c;就称为“电介质”。比如说&#xff0c;电容可以存储电荷&#xff0c;而当电容平板中间填充有介质时&#xff0c;存储的电荷会更多。介电常数越大&a…

Nginx配置全攻略:掌握Nginx的高级技巧,提升你的Web服务器性能!

作为一个资深的技术人员&#xff0c;全面理解Nginx的配置是非常重要的。本文将详细介绍Nginx配置文件的各个部分&#xff0c;包括介绍、命令或语法、主要作用以及使用方法等。 一、Nginx简介 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件代理服务器&#xff0c;它的…

解锁链上创意新时代,Story Protocol 如何颠覆内容创作与知识产权管理?

随着生成式人工智能&#xff08;AIGC&#xff09;的兴起&#xff0c;用户生产内容的浪潮正迅速席卷全球。然而&#xff0c;去中心化的链上生态并未彻底解决创作知识产权纠纷频发的难题。作为一个颇具潜力的平台&#xff0c;Story Protocol 正在引领内容创作的变革&#xff0c;为…

SaToken+SpringBoot+Redis前后端分离登录认证

目录 前言一、创建工程项目&#x1f38d;1.1 创建后端工程1.2 创建前端工程 二、业务代码&#x1f38a;后端代码前端代码 三、测试参考资料 前言 Sa-Token 是一款 Java 语言的权限认证框架&#xff0c;提供了灵活、高效、易用的权限认证和会话管理功能。它是 SpringBoot、Spri…

每日AIGC最新进展(9):定制化多主题文本到视频的生成、3D动漫角色生成、具有多种几何形状和纹理细节的3D高斯引导服装合成

Diffusion Models专栏文章汇总:入门与实战 DisenStudio: Customized Multi-subject Text-to-Video Generation with Disentangled Spatial Control 本文提出了一个名为DisenStudio的框架,用于定制化多主题文本到视频的生成。该框架旨在解决现有文本到视频生成模型在处理多主题…

vue从入门到精通(四):MVVM模型

一,MVVM MVVM&#xff08;Model–view–viewmodel&#xff09;是一种软件架构模式。MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑&#xff08;数据模型&#xff09;的开发分离开来。详见MVVM 二,Vue中的MVVM Vue虽然没有完全遵循 MVVM 模型&#xff0c;但是 Vue 的设…

C# GetManifestResourceStream 获取项目资源为null解决方案(亲测)

GetManifestResourceStream 获取项目资源为null 使用Stream s assembly.GetManifestResourceStream(Assembly.GetExecutingAssembly().GetName().Name resourceName) 获取资源文件&#xff0c;返回流为null&#xff0c;如图所示&#xff1a; 解决方案 设置资源文件的 属性&…

Jenkins 构建 Maven 项目:项目和服务器在一起的情况

bash.sh内容 #!/bin/bash#删除历史数据 rm -rf ruoyi-admin.jar# appname$1 appnamevideo.xxxxx.com #获取传入的参数 echo "arg:$appname"#获取正在运行的jar包pid # pidps -ef | grep $1 | grep java -jar | awk {printf $2} pidps -ef | grep $appname | grep ja…