当前位置: 首页 > 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…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...