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

软件工程理论与实践 (吕云翔) 第六章 面向对象分析课后习题及其解析

第六章 面向对象分析

知识点:

一个典型的软件系统通常包括的内容为:它使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。

3种模型之间的关系
通过面向对象分析应得到的模型包含对象模型、动态模型和功能模型。对象模型为动态模型和功能模型提供基础,这3种模型之间的关系如下。
1)动态模型描述了类实例的生命周期或运行周期。
2)动态模型的状态转换驱使行为发生,这些行为在数据流图中被映射成处理,在用例图中被映射成用例,它们同时与类图中的服务相对应。
3)功能模型中的用例对应于复杂对象提供的服务,简单的用例对应于更基本的对象提供的服务;有时一个用例对应多个服务,有时一个服务对应多个用例。
4)功能模型数据流图中的数据流,往往是对象模型中对象的属性值,也可能是整个对象;数据流图中的数据存储,以及数据的源点/终点,通常是对象模型中的对象。
5)功能模型中的用例可能产生动态模型中的事件。
6)对象模型描述了数据流图中的数据流、数据存储,以及数据源点/终点的结构。面向对象的分析就是用对象模型、动态模型和功能模型描述对象及其相互关系。

一句话总结:对象模型处理类和类间的关系,动态模型体现动态变化(一般用图展示),功能模型即数据流图中数据之家的依赖关系及其数据处理功能。

1.判断题

(1)模型是对现实的简化,建模是为了更好地理解所开发的系统。 ( √ )
(2)在面向对象的需求分析方法中,建立动态模型是最主要的任务。(×)

解析:在面向对象的需求分析方法中,建立静态模型和动态模型都是重要的任务。静态模型主要用于描述系统的静态结构和对象之间的关系,而动态模型主要用于描述对象的行为和交互。

(3)面向对象分析阶段建立的3个模型中,核心模型是功能模型。(×)

解析:面向对象分析阶段建立的3个模型包括功能模型、对象模型和动态模型。功能模型描述系统的功能和处理流程,对象模型描述系统中的对象及其属性和关系,动态模型描述对象的行为和交互。

(4)对象模型的描述工具是状态图。(×)

解析:对象模型的描述工具主要有类图和对象图。类图用于展示类之间的静态结构和关系,而对象图用于展示对象之间的实例和关联

2.选择题

(1)面向对象模型主要由以下哪些模型组成(A)。
A.对象模型、动态模型、功能模型
B.对象模型、数据模型、功能模型
C.数据模型、动态模型、功能模型
.D.对象模型、动态模型、数据模型

(2)面向对象分析的首要工作是建立(D)。
B.系统的功能模型
A.系统的动态模型
C.基本的E-R图
D.问题的对象模型

记住:面向对象分析面向类

(3)面向对象的分析方法主要是建立3类模型,即(B)

A系统模型、E-R模型、应用模型
B.对象模型、动态模型、功能模型
C.E-R模型、对象模型、功能模型
D.对象模型、动态模型、应用模型

(4)面向对象分析阶段建立的3个模型中,核心模型是(C)模型。
A.功能
B.动态
C.对象
D.分析
(5)面向对象的动态模型中,每张状态图表示(A)的动态行为。
A.某一个类
B.有关联的若干个类
C.一系列事件
D.一系列状态
(6)在考察系统的一些涉及时序和改变的状况时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图,另一个是(A)。
A.顺序图
B.状态图
C.系统结构图
D.数据流图
(7)对象模型的描述工具是(D)。
A.状态图
B.数据流图
D.类图
C.结构图
(8)功能模型中所有的(D)往往形成一个层次结构,在这个层次结构中一个数据流图的过程可以由下一层数据流图做进一步的说明。
A.事件追踪图
B.物理模型图
C.状态迁移图
D.数据流图

3.简答题

(1)请对比面向对象需求分析方法和结构化需求分析方法。

面向对象需求分析方法注重对象和对象之间的关系,建立对象模型来描述问题领域,强调系统的动态行为和可重用性。

结构化需求分析方法注重系统功能和数据流,通过分层和模块化的方式组织需求,强调系统的输入、输出和处理逻辑。

选择方法取决于问题的复杂性和团队的背景。

(2)类间的外部关系有几种类型?每种关系表达什么语义?

​ 类之间的关系有依赖、关联、聚合、组合、泛化和实现。
1)依赖关系是“非结构化”的、短暂的关系,表明某个对象会影响另外一个对象的行为或服务。
2)关联关系是“结构化”的关系,描述对象之间的连接。
3)聚合关系和组合关系是特殊的关联关系,它们强调整体和部分之间的从属性,组合是聚合的一种形式,组合关系对应的整体和部分具有很强的归属关系和一致的生命期。比如,计算机和显示器就属于聚合关系。
4)泛化关系与类间的继承类似。
5)实现关系是针对类与接口的关系。

(3)请简述面向对象分析的原则。

1.定义有实际意义的对象
特别需要注意的是,一定要把在应用领域中有意义的、与所要解决的问题有关系的所有事物作为对象,既不能遗漏所需的对象,也不能定义与问题无关的对象。
2.模型的描述要规范、准确
强调实体的本质,忽略无关的属性。对象描述应尽量使用现在时态、陈述性语句,避免模糊的、有二义性的术语。在定义对象时,还应描述对象与其他对象的关系,以及背景信息等。
3.共享性
面向对象技术的共享有不同级别,例如,同一类共享属性和服务、子类继承父类的属性和服务;在同一应用中的共享类及其继承性;通过类库实现在不同应用中的共享等。

4.封装性
所有软件构件都有明确的范围及清楚的外部边界。每个软件构件的内部实现和界面接口分离。

(4)请简述面向对象分析的过程。

面向对象的分析主要以用例模型为基础。开发人员在收集到的原始需求的基础上,通过构建用例模型,从而得到系统的需求。

首先要找到系统的执行者,即用例的参与者。

可以把参与者执行的每一个系统功能都看做一个用例。

确定了系统的所有用例之后,就可以开始识别目标系统中的对象和类了。把具有相似属性和操作的对象定义为一个类。属性定义对象的静态特征,一个对象往往包含很多属性。

明确了对象、类和类之间的层次关系之后,需要进一步识别出对象之间的动态交互行为,即系统响应外部事件或操作的工作过程。一般采用顺序图将用例和分析的对象联系在一起,描述用例的行为是如何在对象之间分布的。

最后,需要将需求分析的结果用多种模型图表示出来,并对其进行评审。由于分析的过程是一个循序渐进的过程,合理的分析模型需要多次选代才能得到。

即 获取需求----建立用例模型----识别分析类-----定义类之间的关系-----定义交互行为-----建立分析模型

(5)什么是动态模型?

动态模型描述对象和关系的状态、状态转换的触发事件,以及对象的服务(行为)。动态模型能够帮助分析人员和设计人员更好地理解系统的行为和交互,捕捉对象的动态方面,并在系统设计和实现阶段提供指导。它有助于揭示对象之间的合作和协调关系,确保系统在运行时能够按照预期的方式工作。

(6)什么是对象模型?

对象模型是面向对象分析和设计中的一个概念,用于描述系统中的对象及其属性、行为和关系。它是对问题领域中实际存在或概念上的事物进行抽象和建模的表示方式。对象模型可以通过类图、对象图和实体关系图等形式进行表示和展示。类图展示了类之间的静态结构和关系,对象图展示了对象之间的实例和关联,而实体关系图用于描述对象之间的数据库关系。

(7)什么是功能模型?

功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一组数据流图组成。数据流图中的处理对应于状态图中的活动或动作,数据流对应于对象图中的对象或,属性。

4.应用题

(1)在温室管理系统中,有一个环境控制器,当没有种植作物时处于空闲状态。一旦种上作物,就要进行温度控制,定义气候,即在什么时期应达到什么温度。当处于夜晚时,由于温度下降,要调用调节温度过程,以便保持温度;当太阳出来时,进入白天状态,由于温度升高,要调用调节温度过程,保持要求的温度。当日落时,进入夜晚状态。当作物收获后,终止气候的控制,进人空闲状态。请建立环境控制器的动态模型。

在这里插入图片描述

(2)一家图书馆藏有书、杂志、小册子、录像带、CD、录音图书和报纸等出版物供读者借阅。这些出版物有出版物名称、出版者、获得日期、目录编号、借出状态和借出限制等属性,并有借出、收回等服务。
请建立上述图书馆馆藏出版物的对象模型。

在这个对象模型中,有以下类和属性:

  1. 类:

    • 出版物(Publication):表示图书馆馆藏的出版物。
    • 书(Book):表示图书。
    • 杂志(Magazine):表示杂志。
    • 小册子(Brochure):表示小册子。
    • 录像带(Videotape):表示录像带。
    • CD(CD):表示CD。
    • 录音图书(Audiobook):表示录音图书。
    • 报纸(Newspaper):表示报纸。
  2. 属性:

    • 出版物名称(title):出版物的名称。
    • 出版者(publisher):出版物的出版者。
    • 获得日期(acquisitionDate):出版物的获得日期。
    • 目录编号(catalogNumber):出版物的目录编号。
    • 借出状态(borrowed):表示出版物的借出状态(借出或未借出)。
    • 借出限制(borrowLimit):出版物的借出限制。
  3. 方法:

    • 借出(borrow()):借出出版物。
    • 收回(reclaim()):收回出版物。

    在这里插入图片描述

(3)王大夫在小镇上开了一家牙科诊所,他有一个牙科助手、一个牙科保健员和一个接待员。王大夫需要一个软件系统来管理预约。当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间,以安排病人尽早得到诊治。如果病人同意建议的就诊时间,接待员将输入约定时间和病人的名字。系统将核实病人的名字并提供所记录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员需要标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。系统能够按病人姓名和日期进行查询,能够显示记录的病人数据和预约信息。接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病人的电话号码。接待员还可以打印出针对所有病人的每天和每周的工作安排。请建立上述牙科诊所管理系统的功能模型。

在这里插入图片描述

相关文章:

软件工程理论与实践 (吕云翔) 第六章 面向对象分析课后习题及其解析

第六章 面向对象分析 知识点: 一个典型的软件系统通常包括的内容为:它使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。 3种模型之间的关…...

langchain(1):使用LangChain 调用 openai 的 text/chat model

文章目录 重要参考OPENAI API调用 Text 模型调用 Chat 模型消息角色 Chat 模型 vs Text 模型 通过 LangChain 调用 Text 和 Chat 模型调用 text 模型调用 chat 模型 重要参考 langchain 中文网 langchain api openai api 文档 huggingface LangChain 是一个全方位的、基于大…...

rabbitMQ的扇出模式(fanout发布订阅)的生产者与消费者使用案例

扇出模式 fanout 发布订阅模式 生产者 生产者发送消息到交换机(logs),控制台输入消息作为生产者的消息发送 package com.esint.rabbitmq.work03;import com.esint.rabbitmq.RabbitMQUtils; import com.rabbitmq.client.Channel;import java.util.Scanne…...

VSCode打开Json 文件格式化

在VSCode中打开JSON文件时,你可以使用以下步骤来格式化JSON并显示为多行: 使用快捷键: 在打开的JSON文件中,使用快捷键格式化文档。 Windows/Linux:Shift Alt FmacOS:Shift Option F 右键菜单&#xff…...

【C++】:STL——标准模板库介绍 || string类

📚1.什么是STL STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架 📚2.STL的版本 原始版本 Alexander Stepanov、Meng Lee 在…...

Python小白之PyCharm仍然显示“No module named ‘xlwings‘”

Python小白之“没有名称为xlwings‘的模块”-CSDN博客文章浏览阅读8次。cmd 打开命令行,输入python出现>>>的提示格,输入import xlwings 回车,正常报错:No module named xlwings。输入python 回车后,再输入im…...

在Uni-app中实现计时器效果

本文将介绍如何在Uni-app中使用Vue.js的计时器功能实现一个简单的计时器效果。 首先&#xff0c;我们需要创建一个包含计时器的组件。以下是一个基本的计时器组件示例&#xff1a; <template><div class"timer"><p>{{ formatTime }}</p><…...

Linux脚本shell中将Windos格式字符转换为unix

众所周知&#xff0c;windos的文档直接复制到linux服务器上去&#xff0c;是需要进行格式转换的&#xff0c;否则可能出现以下报错&#xff1a; 解决方法&#xff1a; vim 脚本 输入 :set ff ##会显示字符格式 :set ffunix ##转换为unix格式 :wq ##保存退出...

【分布式】MIT 6.824 Lab 2B实现细节分析

基于6.824 2020版 http://nil.csail.mit.edu/6.824/2020/schedule.html Lab 2A&#xff08;选举&#xff09;一天就完成了&#xff0c;主要是第一次开始写Raft需要稍微熟悉一下&#xff0c;但是几乎不用修改&#xff0c;很容易就通过了。不过到了Lab 2B就会发现2A能够通过纯属侥…...

MySql 数据库初始化,创建用户,创建数据库,授权

登录MySQL&#xff08;使用管理员账户&#xff09; mysql -u root -p 设置用户 -- 创建用户并设置密码 CREATE USER user_name% IDENTIFIED BY user_password;-- 删除用户 drop user user_name; 设置数据库 -- 创建数据库 CREATE DATABASE database_name;-- 删除数据库 DR…...

【洛谷算法题】P5712-Apples【入门2分支结构】

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5712-Apples【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格式&…...

vue项目中的js文件使用vuex

使用场景&#xff1a;假设有一个接口&#xff0c;需要在很多页面获取一遍并且将接口的返回值保存起来&#xff0c;这样就能使用vuex&#xff0c;将值保存在vuex中 实现&#xff1a;vuex中新建firmModule.js文件&#xff0c;编写存储值的代码&#xff0c;utils/getFirmData.js用…...

【Vue3】 computed 完整写法 全选反选 、计算商品总价

全选反选 const allCheck computed({get() {return buyCard.value.every(item > item.checkState)},set(val) {return buyCard.value.forEach(item > item.checkState val);},}); 计算商品总价格 const aggregatePrice computed(() > {const arr buyCard.value.f…...

Mindomo Desktop for Mac(免费思维导图软件)下载

Mindomo Desktop for Mac是一款免费的思维导图软件&#xff0c;适用于Mac电脑用户。它可以帮助你轻松创建、编辑和共享思维导图&#xff0c;让你的思维更加清晰、有条理。 首先&#xff0c;Mindomo Desktop for Mac具有直观易用的界面。它采用了Mac独特的用户界面设计&#xf…...

Spark资源规划-资源上线评估

1、总体原则 以单台服务器 128G 内存&#xff0c;32 线程为例。 先设定单个 Executor 核数&#xff0c;根据 Yarn 配置得出每个节点最多的 Executor 数量&#xff0c;每个节点的 yarn 内存/每个节点数量单个节点的数量 总的 executor 数单节点数量*节点数。 2、具体提交参数 …...

RT-Thread STM32F407 定时器

定时器简介 硬件定时器一般有 2 种工作模式&#xff0c;定时器模式和计数器模式。不管是工作在哪一种模式&#xff0c;实质都是通过内部计数器模块对脉冲信号进行计数。下面是定时器的一些重要概念。 计数器模式&#xff1a;对外部输入引脚的外部脉冲信号计数。 定时器模式&…...

C#asp.net考试系统+sqlserver

C#asp.net简易考试系统 sqlserver在线考试系统学生登陆 判断学生是否存在 选择课程名 科目 可以进行答题操作&#xff0c;已经考试的课程不能再次答题&#xff0c; 自动根据课程名对应的题库生成试卷界面 加入选项类容 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数…...

mac上配置maven

本文简述mac book上的Maven环境配置&#xff0c;着重讲述不同点。 1.安装 下载解压后&#xff0c;首先配置环境变量。编辑~/.bash_profile文件。加入如下代码&#xff1a; export M2_HOME/Users/jackie/tools/apache-maven-3.8.1注意&#xff1a;“/Users/jackie/tools/apac…...

解决vue-cli node-sass安装不成功问题

在项目中安装 vue-cli node-sass不成功解决办法如下&#xff1a; npm install node-sass --save 若以上方式安装不成功&#xff08;安装超时&#xff09;, 则使用以下的方法&#xff1a; 1. npm install -g cnpm --registryhttps://registry.npm.taobao.org 2. cnpm in…...

【Mysql】Mysql内置函数介绍

&#x1f308;欢迎来到Python专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C、Linux系统编程、计算机网络、数据结构、Mys…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展&#xff0c;企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心&#xff0c;成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统&#xff0c;它不仅支持跨平台应用&#xff0c;还能提供丰富…...

raid存储技术

1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划&#xff0c;涵盖存储系统的布局、数据存储策略等&#xff0c;它明确数据如何存储、管理与访问&#xff0c;为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...

react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)

之前都是使用react-pdf来渲染pdf文件&#xff0c;这次有个需求是要兼容xp环境&#xff0c;xp上chrome最高支持到49&#xff0c;虽然说iframe或者embed都可以实现预览pdf&#xff0c;但为了后续的定制化需求&#xff0c;还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...

Qt学习及使用_第1部分_认识Qt---Qt开发基本流程

前言 学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面. 参考书:<Qt 6 C开发指南>(以下称"本书") 标识说明:概念用粗体倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字), 本书原话内容用深蓝色标识,比较重要的内容用加粗倾…...