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

信息系统分析与设计复习

2024试卷

单选题(20)

1、在一个聊天系统(类似ChatGPT)中,属于控制类的是()。

A. 话语者类

B.聊天文字输入界面类

C. 聊天主题辨别类

D. 聊天历史类

解析

B-C-E备选架构中分析类分为边界类、控制类和实体类。

边界类(用户界面类/设备接口类):最上层,系统外部环境与内部运作之间的交互,每一对参与者和用例就可以定义一个边界类。

控制类:中间层,独立于外部环境,定义用例中的控制逻辑和事务管理,并不是每次激活都以同样的方式运行(因为事件流本身具有不同的状态)。

实体类:表示业务信息的名词。

选项分析

​A. 话语者类:实体类(Entity Class)​,表示参与聊天的用户(如用户信息、身份)。

​B. 聊天文字输入界面类:边界类(Boundary Class)​,负责用户交互(如输入框、按钮)。

​C. 聊天主题辨别类​:控制类,分析聊天内容,识别主题或意图(如判断用户问题是编程相关还是生活相关),属于业务逻辑处理。

​D. 聊天历史类:实体类,存储聊天记录(如数据库表映射)。

正确答案:C. 聊天主题辨别类

相关概念

对象:一个实体,具有明确定义的边界和标识(唯一),封装了状态(属性、关系)和行为(操作、方法、状态机)。

只有对象名没有类名的对象是错误的(任何对象都来自类的实例化)。

类:一系列对象的抽象描述,将具体对象的特征和行为参数化,用类的属性和操作表示。

每一个类在某一时刻都有0个或多个实例存在。

类是静态的,对象是动态的。

2.在一个牛排咖啡雄所使用的系统里,有一系列的"风味牛排"。比如说菲利牛排、咖喱牛排、奶酪牛排等等。现在我们想用设计模式来描述牛排销售系统,该用()
A.单键模式
B.桥接模式
C.工厂模式
D.观察者模式

解析

题目描述的场景是创建多种风味牛排对象​(如菲利牛排、咖喱牛排等),这属于对象创建问题。

工厂模式(Factory Pattern)​

​作用:封装对象的创建逻辑,统一通过工厂类生成具体对象。

​适用场景:系统需要创建多种相似对象(不同风味的牛排)。隐藏具体类的实例化过程(如根据输入参数"菲利"生成对应牛排)。

选项分析

A. 单例模式:确保全局唯一实例(如配置管理器),而牛排需要创建多个对象。

​B. 桥接模式:分离抽象与实现(如支付方式与订单系统的解耦),与对象创建无关。

​D. 观察者模式:处理对象间的事件通知(如订单状态更新),与题目需求无关。

正确答案:C. 工厂模式

相关概念

GoF模式(23种):按照作用范围分为类模式、对象模式;按照目的分为创建型模式,结构型模式和行为型模式。

一、创建型模式(5种)——解决“如何创建对象”​

模式目的实现要点生活例子
单例模式确保一个类只有一个实例私有构造 + 静态getInstance()一个国家只有一个总统
工厂方法让子类决定创建哪种对象定义Creator接口,子类实现奶茶店让你选“珍珠奶茶”或“椰果奶茶”
抽象工厂创建一组相关对象(家族)多个工厂方法封装在一个接口家具店卖“北欧风”或“中式”全套家具
建造者模式分步骤构建复杂对象Director指挥,Builder实现组装电脑(先选CPU,再选内存…)
原型模式克隆对象,避免重复创建实现Cloneable接口复印机复印文件

二、结构型模式(7种)——解决“如何组合对象”​

模式目的实现要点生活例子
适配器模式让不兼容的接口一起工作包装旧类,提供新接口用转接头让USB插TypeC口
桥接模式分离抽象和实现,灵活扩展抽象类持有实现接口遥控器(抽象)控制电视(实现)
组合模式统一处理树形结构(部分-整体)组件接口 + 叶子/非叶子节点文件系统(文件夹和文件)
装饰模式动态添加功能,不修改原类包装对象,链式调用给奶茶加珍珠、加椰果(不换杯子)
外观模式简化复杂系统的调用提供统一入口类一键启动电脑(封装CPU、内存等操作)
享元模式共享对象,节省内存缓存可复用对象游戏里重复使用相同的子弹模型
代理模式控制对象访问(延迟、安全等)代理类包装真实对象代购帮你买奶粉(你接触不到卖家)

三、行为型模式(11种)——解决“对象如何交互”​

模式目的实现要点生活例子
责任链模式让多个对象依次处理请求链式传递nextHandler审批流程(员工→经理→CEO)
命令模式将请求封装为对象,支持撤销/重做Command接口 + Invoker遥控器按键(每个按钮是一个命令)
解释器模式解析特定语法表达式类 + 上下文翻译英文为中文(按语法规则解析)
迭代器模式统一遍历集合Iterator接口用遥控器换台(不关心电视台如何存储)
中介者模式减少对象间直接耦合Mediator协调交互微信群聊天(用户不直接联系,通过群)
备忘录模式保存和恢复对象状态Originator + Memento游戏存档
观察者模式一对多的消息通知Subject + Observer微信公众号(你订阅后自动收到推送)
状态模式根据状态改变做出不同的行为状态类实现同一接口电灯开关(开/关状态)
策略模式动态切换算法策略接口 + 具体实现类支付方式(支付宝/微信/现金随意换)
模板方法模式定义算法骨架,子类实现细节抽象类 + 具体子类泡茶流程(烧水→放茶叶→倒水)
访问者模式分离算法和数据结构Visitor访问元素类超市收银台统计不同商品价格

 3.在面向对象的系统中,系统责任的良好分配原则是()。
A.在类之间均匀分配
B.集中分配在少数控制类中
C.根据交互图的消息进行分配
D.根据个人喜好进行分配

解析

在面向对象设计中,​系统责任的分配原则应遵循均匀分配的核心思想:

​符合单一职责原则(SRP)​,每个类专注于明确的功能。

避免“上帝类”(功能臃肿)或“贫血类”(功能过少),提高可维护性和扩展性。

选项分析

​B. 集中分配在少数控制类中:导致控制类过度复杂,违反低耦合原则,难以修改和测试。

​C. 根据交互图的消息分配:交互图(如顺序图)描述动态行为,而责任分配应优先考虑静态设计原则​(如高内聚)。

​D. 根据个人喜好分配:缺乏规范性,易导致系统混乱。

正确答案:A.在类之间均匀分配

 4.以下关于UML中的相关概念解释,()是站在用户的角度上去展示系统的功能?
A.用例图
B.类图
C.协作图
D.组件图

解析

用例图从用户(Actor)角度描述系统提供的功能(用例),是UML中唯一以用户为中心的图表,用于需求分析阶段。

选项分析

B. 类图:开发视角,展示静态结构​(类、属性、关系)。

​C. 协作图(即通信图):开发视角,描述对象间的动态交互​(消息传递)。

​D. 组件图:架构视角,展示系统物理模块的组成与依赖。

正确答案:A.用例图

相关概念

结构图:类图、对象图、包图、组合结构图、构件图、部署图、外廓图

行为图:顺序图(强调消息执行顺序)、通信图(强调对象协作)、时间图、交互概览图、活动图(事务执行的控制流或数据流)、状态机图、用例图

5.在 OO的顺序图中,通常由左向右分层排列各个对象,正确的排列方法是()
A.执行者角色 控制类 用户界面 业务层 后台数据库
B.执行者角色 用户界面 控制类 业务层 后台数据库
C.执行者角色 控制类 用户界面 后台数据库 业务层
D.执行者角色 用户界面 业务层 控制类 后台数据库

解析

OO(Object-Oriented,面向对象)​的顺序图中,对象的排列顺序遵循系统交互的逻辑流程,从左到右依次为:

​执行者角色(Actor)​:位于最左侧,代表系统的外部用户或触发者(如用户、外部系统)。

​用户界面(UI)​:执行者首先与界面交互(如网页、APP界面)。

​控制类(Controller)​:处理用户输入的业务逻辑,协调其他组件(如MVC中的Controller)。

​业务层(Business Layer)​:实现核心业务规则和领域逻辑(如Service层)。

​后台数据库(Database)​:位于最右侧,负责数据持久化。

正确答案:B.执行者角色 用户界面 控制类 业务层 后台数据库

相关概念

详见书P44

6.在采用面向对象技术进行数据库的设计中,将类与类之间"多对多"的关联关系映射成关系数据模型时应建立一种()来实现多对多的关联。
A.关联表
B.视图
C.超类表
D.子表

解析

在面向对象(OO)设计中,类之间的多对多关联无法直接映射到关系型数据库(RDBMS)中,因为关系数据库的表结构仅支持外键直接引用​(即一对多)。因此,需要通过关联表来实现多对多关系的转换。

具体步骤

  1. 识别多对多关系

    • 例如:学生(Student)课程(Course)之间是多对多关系(一个学生可选多门课,一门课可被多个学生选)。
  2. 创建关联表

    • 新建一个表(如Student_Course),包含两个外键,分别指向StudentCourse的主键。
    • 关联表的主键通常是这两个外键的组合键​(Composite Key)。

选项解析

B. 视图:视图是虚拟表,不存储实际数据,无法维护关联关系。

​C. 超类表:用于继承关系(is-a,如父类与子类),与多对多无关。

​D. 子表:通常表示一对多的关系(has-many,如订单与订单项)。

正确答案:A.关联表

7.类之间的关联关系通常表示了()。
A.类之间的强关系
B.类之间附加的系统约束
C.类之间的弱关系
D.类之间的无关系

解析

​关联关系(Association)​表示类之间的结构化连接,存在长期、有意义的交互,通常通过成员变量、方法参数或返回值实现。

​示例:

学生课程的选课关系(持久性关联)。

订单商品的包含关系(业务逻辑依赖)。

正确答案:A.类之间的强关系

相关概念

依赖

定义:临时性的弱关系,一个类的变化可能影响依赖它的类(通过方法参数、返回值或局部变量建立)。
表示:虚线箭头 (从依赖方指向被依赖方)。
示例

  • 报表生成器 ​依赖 数据库连接(仅在生成报表时临时使用)。

关联

定义:强语义的稳定关系,表示类之间的长期结构化连接(通过成员变量实现)。
表示:实线箭头  或双向实线。
示例

  • 学生 与 课程 的选课关系(多对多关联)。

聚合

定义:特殊的关联关系,表示整体-部分的弱拥有关系(部分可独立存在)。
表示:空心菱形  指向整体。
示例

  • 汽车 ​聚合 车轮(车轮可拆卸并安装到其他汽车)。

组合

定义:更强的聚合关系,表示整体-部分的强拥有关系(部分生命周期依赖整体)。
表示:实心菱形  指向整体。
示例

  • 房子 ​组合 房间(房子拆除后房间不复存在)。

泛化​

定义:​继承关系,子类继承父类的特性(is-a关系)。
表示:空心三角箭头  指向父类。
示例

  •  ​继承 动物

实现

定义:类实现接口或协作实现用例的契约关系。
表示:虚线空心三角箭头 ⤳△ 指向接口/用例。
示例

  • ArrayList ​实现 List 接口。

8. UML中关联的多重度是指()
A.一个类有多少个方法被另一个类调用
B.一个类的实例能够与另一个类的多少个实例相关联
C.一个类的某个方法被另一个类调用的次数
D.两个类所具有的相同的方法和属性

解析

在UML中,​关联的多重度(Multiplicity)​用于定义类实例之间的数量关系,具体表现为:

​一个类的实例可以关联到另一个类的实例的数量范围。

  • 例如:
    • 1:一对一关联(如一个人拥有一个身份证)。
    • 0..*:零到多(如一个顾客可以下零或多个订单)。
    • 1..*:一到多(如一个部门必须包含至少一个员工)。

正确答案:B.一个类的实例能够与另一个类的多少个实例相关联

 9.在面向对象程序设计中,常常将接口的定义与接口的实现相分离,可定义不同的类实现相同的接口。在程序运行过程中,对该接口的调用可根据实际的对象类型调用其相应的实现。为达到上述目的,面向对象语言须提供()机制。
A. 继承和过载(overloading)
B.抽象类
C. 继承和重置(overriding)
D.对象自身引用

正确答案:A. 继承和过载(overloading)

10. (单选题,1.0 分)如果要对一个游戏中的二个主要角色:玩家、NPC的工作流程建模,那么需要使用下面哪个图()。
A. 顺序图
B.协作图
C.活动图
D.状态图 

解析

活动图描述事务执行的控制流或数据流。

正确答案:C.活动图

 11.在某信息系统中,存在如下的业务陈述:①一个客户提交0个或多个订单②一个订单由一个且仅由一个客户提交。系统中存在两个类:"客户"类和"订单"类。对应每个"订单"类的实例,存()“客户"类的实例;
A.0个
B.1个
C.1个或多个
D.0个或多个

 正确答案:B.1个

12.在用例建模的过程中,若几个用例执行了同样的功能步骤,这时可以把这些公共步骤提取成独立的用例,在UML的用例图上,将用例之间的这种关系标记为。
A. include
B. extends
C. Uses
D. inheritances 

解析 

在UML用例建模中,​包含关系(include)​用于表示多个用例共享相同的功能步骤,其核心特点如下:

  • 作用:将公共步骤提取为独立的子用例,并在原用例中显式包含它。
  • 语法<<include>> 箭头(从主用例指向被包含用例)。

选项解析

B. extends:用于可选扩展(如“订单”可扩展“加急配送”),不适用于公共步骤。

​C. uses:旧版UML术语,已被include取代。

​D. inheritances:用例间不存在继承关系。

 正确答案:A. include

相关概念

扩展extend:表示一个用例可选地扩展另一个用例的行为,仅在特定条件下触发。<<extend>> 箭头(从扩展用例指向基用例)。

  • 订单支付可扩展“使用优惠券”。
  • 用户注册可扩展“邮箱验证”(仅需部分用户)。

包含include:表示一个用例必须包含另一个用例的步骤,是强制的公共行为。<<include>> 箭头(从主用例指向被包含用例)。

  • 支付、查看订单等操作必须包含“登录”。
  • 删除文件需包含“确认对话框”。

泛化generalization:表示父子用例之间的继承关系,子用例可重写或扩展父用例的行为。空心三角箭头 (从子用例指向父用例)。

  • “用户登录”泛化为“密码登录”和“指纹登录”。
  • “支付”泛化为“信用卡支付”和“支付宝支付”。

13.()意味着一个操作在不同的类中可以有不同的实现方式。
A. 多态性
B. 多继承
C. 类的复用
D. 封装

正确答案: A. 多态性

相关概念

抽象:对象到类的过程就是抽象,香蕉→水果

封装:客户通过接口访问,实现信息隐藏

分解:划分多个相对独立的小单元

泛化:使用继承实现泛化(单一继承、多重继承)

多态:某一方法在指向不同对象时表现出不同的行为

分层:不同抽象级别

复用:借助已有知识建立新软件

14.在UML中,()把活动图中的活动划分为若干组,并将划分的组指定给对象,这些对象必须履行该组所包括的活动,明确地表示哪些活动是由哪些对象完成的。
A.组合活动
B.同步条
C.活动
D.泳道

正确答案:D.泳道

15. 类之间的聚合关系表示()。
A.整体和部分的生命周期一致的拥有关系
B.相同类的多个实例之间的关系
C.整体和部分的生命周期独立的拥有关系
D.没有直接关联

正确答案: C.整体和部分的生命周期独立的拥有关系

16.采用瀑布模型进行系统开发的过程中,每个阶段都会产生不同的文档。以下关于产生这些文档的描述中,正确的是()。
A.外部设计评审报告在概要设计阶段产生
B.集成测评计划在程序设计阶段产生
C.系统计划和需求说明在详细设计阶段产生
D.在进行编码的同时,独立的设计单元测试计划 

解析

瀑布模型是一种线性、顺序的软件开发流程,每个阶段必须完全完成后才能进入下一阶段,像瀑布一样不可逆流。最传统的开发模型,适合确定性高的项目,但灵活性差。 

正确答案:D.在进行编码的同时,独立的设计单元测试计划 

17.面向对象分析的第一步是()。
A. 定义服务
B. 确定附加的系统约束
C. 确定问题域
D.定义类和对象 

解析 

确定问题域——定义类与对象——确定属性和方法——建立类之间的联系——动态行为建模

正确答案:C. 确定问题域

18. ()是不需要接收信息就能主动执行的服务
A.内部服务
B.外部服务
C. 内嵌服务
D.上层服务

正确答案:A. 内部服务

解析

在面向对象系统中,服务(方法或操作)的执行可以分为以下几类:

1. 内部服务(Internal Service)​

  • 定义:由对象主动触发,无需外部输入或消息调用即可执行。

  • 特点

    • 通常是对象内部状态变化触发的行为(如定时任务、状态机转换)。

    • 不依赖外部调用,自主运行。

  • 示例

    • 定时保存数据(如每隔1小时自动备份)。

    • 日志系统的自动清理(当日志文件超过阈值时触发)。

2. 其他选项的排除

  • B. 外部服务:需外部对象或用户请求才能执行(如API调用、用户点击按钮)。

  • C. 内嵌服务:通常指系统底层功能(如硬件驱动),与题目无关。

  • D. 上层服务:通常是业务流程组合,依赖外部输入。

19.在某信息系统中,存在如下的业务陈述:①一个客户提交0个或多个订单②一个订单由一个且仅由一个客户提交。系统中存在两个类"客户"类和"订单"类。对应每个"客户"类的实例,存在()个"订单"类的实例;
A.0个
B.1个
C. 1个或多个
D. 0个或多个

正确答案:D

 20. 在用例建模的过程中,若几个用例执行了同样的功能步骤,这时可以把这些公共步骤提取成独立的用例,这种用例称为()
A.扩展用例
B.抽象用例
C.公共用例
D.参与用例

 正确答案:C

 多选题(5)

21.软件工程的三要素是()
A. 方法
B. 工具
C. 模型
D. 过程
E. 语言

正确答案:ABD

22.下列各类图中用于动态建模的有()
A. 状态图
B. 类图
C. 时序图
D. 活动图

解析

状态图、时序图、活动图、通信图、用例图

正确答案:ACD

24.常见的面向对象分析模型中的关系有()
A. 组合
B. 依赖
C. 关联
D. 泛化

正确答案:ABCD

 25.下面哪些图形可以清楚地表达并发行为()
A.类图
B. 状态体
C. 活动图
D. 顺序图
E.实现图

正确答案:CD

http://www.xdnf.cn/news/13022.html

相关文章:

  • Qt项目中使用 CmdManager 实现高效的命令分发机制
  • 国际上与麦角硫因相关的人体功效试验文献分享
  • 使用homeassistant 插件将tasmota 接入到米家
  • mysql8.0忘记root密码情况下修改密码
  • VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
  • 十一、MySQL 事务底层与高可用原理
  • 基于PSO与BP神经网络回归模型的特征选择实战(Python实现)
  • MySQL--慢查询日志、日志分析工具mysqldumpslow
  • Java多线程实现之Runnable接口深度解析
  • SQLSERVER-DB操作记录
  • PyTorch学习路径与基础实践指南
  • window 显示驱动开发-如何查询视频处理功能(二)
  • SAM2Long本地部署,视频分割处理,绿幕抠像,超长视频支持
  • 【JavaSE】多线程基础学习笔记
  • 第二章 感知机
  • Logistics | 盘盈盘亏与报溢报损
  • FastAPI核心解密:深入“路径操作”与HTTP方法,构建API的坚实骨架
  • Unity-ECS详解
  • 北京智乐活科技有限公司 适趣ai 二面 全栈
  • 比较数据迁移后MySQL数据库和openGauss数据仓库中的表
  • tomcat指定使用的jdk版本
  • STM32使用水位传感器
  • React入门第一步:如何用Vite创建你的第一个React项目?
  • Excel 怎么让透视表以正常Excel表格形式显示
  • 旋量理论:刚体运动的几何描述与机器人应用
  • 认识电子元器件---高低边驱动
  • python数据结构和算法(1)
  • 为什么要创建 Vue 实例
  • Xcode 16 集成 cocoapods 报错
  • 从零手写Java版本的LSM Tree (七):压缩策略