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

news2024/7/6 19:21:10

第六章 面向对象分析

知识点:

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

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

在这里插入图片描述

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

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

相关文章

机器视觉公司怎么可能养我这闲人,连软件加密狗都用不起,项目都用盗版,为什么​?

正版价值观我是认同的,但是同行也不用软件加密狗,你让我承担过多的设备成本,终端客户不愿意承担加密狗的成本,公司更不愿意去承担,许多机器视觉公司“零元购”,机器视觉软件加密狗都用不起,项目…

DVWA - 4

文章目录 JavaScriptlowmedium JavaScript 前端攻击。token 不能由前端生成,js 很容易被攻击者获取,从而伪造 token。同样其他重要的参数也不能由前端生成。 low 不修改输入,点击提交报错: 根据提示改成 success,还是报错&…

关于新版的Maven创建Maven项目的时候只有Maven Archetype,而找不到Maven的这个问题

问题情况 : 在最近的学习过程中,想要创建一个Maven模块用于分块设计,但是在idea里面创建Maven项目的时候,发现与maven相关的只有Maven Archetype这个模块,然后找不到单纯的Maven模块;就像下面这样 : 解决方案 : 其…

Skywalking流程分析_8(拦截器插件的加载)

前言 在之前的文章中我们将,静态方法、构造方法、实例方法的增强逻辑都分析完毕,但在增强前,对于拦截类的加载是至关重要的,下面我们就来详细的分析 增强插件的加载 静态方法增强前的加载 //clazz 要修改的字节码的原生类 Sta…

【自动化测试】基于Selenium + Python的web自动化框架!

一、什么是Selenium? Selenium是一个基于浏览器的自动化工具,她提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid:  1、Selenium IDE&…

Kafka的重要组件,谈谈流处理引擎Kafka Stream

系列文章目录 上手第一关,手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么,以及如何使用SpringBoot对接Kafka 架构必备能力——kafka的选型对比及应用场景 Kafka存取原理与实现分析,打破面试难关 防止消息丢失与消息重复——Kafka可…

【flutter】使用getx下的GetMaterialApp创建路由和使用时间选择器国际化问题

GetMaterialApp是啥 网上解释说是 MaterialApp Getx properties GetMaterialApp 问题 在使用showDateRangePicker组件的时候, 一直报错 No MaterialLocalizations found 我就愁思是不是GetMaterialApp跟MaterialApp方法不一样的问题,结果不是&#…

OpenCV快速入门:初探

文章目录 一、什么是OpenCV二、安装OpenCV三、图像读取与显示读取图像显示图像等待按键与关闭窗口 四、视频加载与摄像头调用从视频文件中读取从摄像头中读取关闭窗口与释放资源 五、图像的基本存储方式RGB矩阵矩阵操作与像素访问使用矩阵来显示图像 六、图像保存读取图像保存图…

EasyCVR视频监控+AI智能分析网关如何助力木材厂安全生产?

旭帆科技有很多工厂的视频监管方案,小编也经常分享出来供大家参考。近期,又有伙伴后台私信我们想要关于木材厂的方案。针对木材厂的生产过程与特性以及安全风险等,我们来分享一下相关的监管方案: 1)温湿度监测&#xf…

springboot-RedisTemplate

pom.xml: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…

MySQL存储架构

连接管理与安全性 每个客户端连接都会在服务器进程中拥有一个线程&#xff0c;这个连接的查询只会在这个线程中执行。MySQL5.5以后支持了一个API叫线程池插件&#xff0c;可以用少量线程服务大量连接&#xff0c;因此不用每次都新建连接然后销毁。 客户端连接MySQL服务器时候&…

深度学习YOLOv5车辆颜色识别检测 - python opencv 计算机竞赛

文章目录 1 前言2 实现效果3 CNN卷积神经网络4 Yolov56 数据集处理及模型训练5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习YOLOv5车辆颜色识别检测 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0…

BMS中的绝缘电阻测量方法

使用场景 在GB/T 18384-2020中规定BMS需要对动力电池系统所有部件集成完毕的状态下进行绝缘检测&#xff0c;且采用绝缘电阻阻值来衡量绝缘状态。绝缘电阻可分为总正对地和总负对地。这时一般使用不平衡电桥法&#xff08;由于国标GB/T 18384-2020中推荐此种方法&#xff0c;因…

力扣刷题篇之数与位3

系列文章目录 目录 系列文章目录 前言 数学问题 总结 前言 本系列是个人力扣刷题汇总&#xff0c;本文是数与位。刷题顺序按照[力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 - 力扣&#xff08;LeetCode&#xff09; 数学问题 204. 计数质数 - 力扣&#xff08;Le…

如何让普通用户使用sudo?

一、sudo的作用 sudo就是可以让我们的普通用户以root身份去做一些事情&#xff0c;这相当于给普通用户提升了权限&#xff0c;但是并不是每个普通用户都可以随便拿到root的提权的&#xff0c;也就是sudo是要经过一定处理才可以给普通用户使用&#xff0c;那么如何处理呢&#x…

单机版-redis(手动部署)

单机版-redis部署 部署模式:单机版-redis部署 Redis版本&#xff1a;redis-4.0.1 部署redis方式&#xff1a;手动部署 在完成第三步时已完成配置&#xff0c;后续为操作命令以及注意事项&#xff1b; 在进行操作数据库时&#xff0c;需要关注第五步注意事项&#xff0c;会涉…

卷积神经网络(CNN)衣服图像分类的实现

文章目录 前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;我的环境&#xff1a; 2. 导入数据3.归一化4.调整图片格式5. 可视化 二、构建CNN网络模型三、编译模型四、训练模型五、预测六、模型评估 前期工作 1. 设置GPU&#xff08;如果使用的是CPU可以…

【Electron】electron-builder打包失败问题记录

文章目录 yarn下载的包不支持require()winCodeSign-2.6.0.7z下载失败nsis-3.0.4.1.7z下载失败待补充... yarn下载的包不支持require() 报错内容&#xff1a; var stringWidth require(string-width)^ Error [ERR_REQUIRE_ESM]: require() of ES Module /stuff/node_modules/…

SpringBoot整合Quartz示例

数据表 加不加无所谓,如果需要重启服务器后重新执行所有JOB就把sql加上 如果不加表 将application.properties中的quartz数据库配置去掉 自己执行自己的逻辑来就好,大不了每次启动之后重新加载自己的逻辑 链接&#xff1a;https://pan.baidu.com/s/1KqOPYMfI4eHcEMxt5Bmt…

IoC和DI

Spring 是包含众多工具的 IoC 容器,存的是对象,对象这个词在 Spring 的范围内,称之为 bean IoC 是控制反转 控制权进行了反转,比如对某一个东西的控制权在 A 手上,结果变成了 B ,Spring 管理的是 bean ,所以这里的控制权指的是 bean 的控制权,也就是对象的控制权进行了反转 …