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

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

文章目录

  • 试题一:数据流图
    • 💖 基本图形元素
      • 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 {@Overridepublic void info() {System.out.println("产品的信息:A");}
}class ProductB extends Product {@Overridepublic 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 {@Overridepublic Product createProduct() {return new ProductA();}
}class FactoryB implements Factory {@Overridepublic 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 {@Overridepublic void info() {System.out.println("产品的信息:A");}
}// class ProductB extends Product
class ProductB implements Product {@Overridepublic 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.lryc.cn/news/351705.html

相关文章:

  • [学习笔记](Python3)防止SQL注入、XSS攻击和文件上传漏洞
  • 西门子CPU与汇川伺服通信与控制
  • 移动硬盘无法读取怎么修复?简单八步,轻松搞定!
  • c4d云渲染是工程文件会暴露吗?
  • C语言/数据结构——每日一题(有效的括号)
  • STM32使用旋转编码开关
  • OneMO同行 心级服务:中移物联OneMO模组助力客户终端寒冷环境下的稳定运行
  • 爬虫视图展示之 Power BI
  • 微软刚发布的Copilot+PC为什么让Intel和AMD尴尬?2024 AI PC元年——产业布局及前景展望
  • 抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具
  • 类的组合、作用域与可见性、类的静态成员、单例模式、
  • 高速公路定向广播(声光一体) HT-600D
  • 2024离婚新规已生效,不用等30天冷静期,线上开庭
  • 从零搭建python环境:深入解析虚拟环境与Python版本管理
  • windows安装官方正版notepad++
  • netty-socketio 集群随记
  • 查看目录或文件的磁盘使用情况
  • 如何选择合适的自动化框架
  • Java面试进阶指南:高级知识点问答精粹(二)
  • thinkphp 使用模型实现多表连接查询
  • LeetCode674:最长连续递增序列
  • Java技术精粹:高级面试问题与解答指南(一)
  • 数据可视化技术头歌测试合集
  • 【linux-IMX6ULL-字符设备驱动简单框架实验】
  • 3D模型旋转显示不全怎么办---模大狮模型网
  • DLRover:蚂蚁集团开源的AI训练革命
  • ubuntu_概念
  • Oracle递归查询笔记
  • FaceFusion源码框架解读
  • React项目知识积累(三)