当前位置: 首页 > 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)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。

在这里插入图片描述

📙 题目

在这里插入图片描述


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

相关文章:

  • linux-x86_64-musl 里面的musl是什么意思?
  • Color预设颜色测试
  • js知识点汇总之let const 和 var的区别
  • 如何利用51建模网,实现3D模型线上展示和应用?
  • 【数据结构】——顺序表与链表
  • C++ RPC ORM 高速解析
  • pycharm 关闭项目卡死
  • 软件测试/测试开发丨学习笔记之Allure2测试报告
  • 探索Ollama——入门:如何在本地环境中搭建和自定义大型语言模型
  • 【跟着例子学MySQL】多表关联 -- 一对一关系
  • 深入解析Java中的Calendar类
  • ❤ vue2 使用 Element和 vue3 使用 ElementPlus报错
  • 鸿蒙应用开发系列 篇六:鸿蒙系统应用生态与发布、推广
  • GD32F407入坑指南 第三章
  • nssctf(Web刷题)
  • 3.7、@ResponseBody 和 @RestController
  • Android组件 - 收藏集 - 掘金
  • Date型的使用
  • DOM的那些事
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JavaScript标准库系列——Math对象和Date对象(二)
  • javascript数组去重/查找/插入/删除
  • Laravel 菜鸟晋级之路
  • vue:响应原理
  • Wamp集成环境 添加PHP的新版本
  • 从tcpdump抓包看TCP/IP协议
  • 从零开始在ubuntu上搭建node开发环境
  • 番外篇1:在Windows环境下安装JDK
  • 浏览器缓存机制分析
  • 盘点那些不知名却常用的 Git 操作
  • 前端js -- this指向总结。
  • 设计模式 开闭原则
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • Prometheus VS InfluxDB
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • !$boo在php中什么意思,php前戏
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • # linux从入门到精通(三)
  • # 飞书APP集成平台-数字化落地
  • #Java第九次作业--输入输出流和文件操作
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (ibm)Java 语言的 XPath API
  • (Java)【深基9.例1】选举学生会
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (不用互三)AI绘画工具应该如何选择
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (三分钟了解debug)SLAM研究方向-Debug总结