软件设计模式与体系结构 期末课后题

目录

软件设计模式与体系结构 期末课后题

第一题  金鱼缸水质、水温与水位高度的软件系统

第二题  设计一个机场信息系统

第三题  说明设计与其选择原因

第四题  简答


第一题  金鱼缸水质、水温与水位高度的软件系统

答:

1:设计类图如下:(若看不清原图可联系本人 )

2:解释关系与功能:

其中,Observable与Observer两个是接口类。

鱼缸类FishbowlGUI为被观察类,它实现了接口类Observable;

FishbowlGUI 有3个私有变量quality、temperature 和level。分别代表鱼缸的水质、水温和水位高度,同时有每个私有变量的get和set方法,来获取属性或者设置属性。

三个观察者ChemistryGUI、TemperatureGUI和LevelGUI实现观察者接口Observer.观察者接口中,有一个方法takeAction(s:Observable)必须实现。

各个实现接口的类在该方法中实现各自的功能:

当quality 超过某种范围时,化学传感器ChemistryGUI排除鱼缸部分废水,补充新水;

当temperature 低于某温度,或者超过某温度值时,TemperatureGUl开启加热设备或者冷却设备调整水温;

当level 高于或低于特定高度时,LevelGUI 开启排水设备,排除部分水或者添加新鲜的水。

该方法由参数传入-一个被观察者对象,一旦得到通知以后,将对被观察者类FishbowlGUI的某些方法进行调用,以便获取变化的状态。

第二题  设计一个机场信息系统

答:

1:设计类图如下:

2:

AddObserver(Observer:Observer)方法, 将多个观察者添加到被观察者的一个list数据结构中,以便在通知观察者的时候使用; setChanged()和 notifyObservers(),通知观察者被观察者对象的状态已经改变了,同时会让观察者对象的update()方法自动运行。注意,以上两个语句的顺序是setChanged()在前,notifyObservers()在后。

3:

    第一个参数是 Observable类型,代表被观察者对象。

第二个参数是Object类型,代表所发生的事件,Object为被观察者的一种状态值,提供给update方法,以便更新观察者。

4:

VoiceInfo 类的update 完成的工作是从AiportInfo类自动获取语音机场信息,然后将这些信息传送给乘客。DisplayInfo 类的update则是负责从AirportInfo类自动获取文字机场信息,然后将这些信息显示在屏幕上。

5:

被观察者AirportInfo保持一个数据结构,如Java ArrayList,用于记载动态添加的观察者。

对被观察者状态感兴趣的对象(观察者)VoiceInfo和DisplayInfo,应该调用被观察者addObserver()方法方法将自己注册为它的一个观察者。

每当AiportInfo的状态发生改变的时候,它将使用方法setChanged0方法和notifyObservers(通知已经注册的观察者VoiceInfo 和DisplayInfo。

当接到通知以后,VoiceInfo 和DisplayInfo都将查询AirportInfo的状态,以便保持状态同步。根据新的状态,VoiceInfo 和DisplayInfo分别执行update0方法进行相关操作。

第三题  说明设计与其选择原因

答:

1.选择三层客户端-服务器(网格软件)体系结构。

2.网格计算强调资源整合、性能、服务质量和安全性等的问题,适合需要高度的资源整理与控制能力的项目。相比之下,该项目更加强调资源的整合,相比P2P体系结构的传输速度并没有那么重要。所以选择网格软件体系结构更合适。

第四题  简答

1.假设已经利用结构化设计产生了一个程序结构图,现在要增加一项新的功能,结构图会有什么变化?

答:在已经利用结构化设计产生的程序结构图中增加一-项新的功能,结构图整体并不会有多大的变化,整体仍呈现出原本的自顶向下的结构。

2.假设已经利用面向对象设计产生了一个程序设计类图,现在要增加- -项新的功能,程序设计类图会有什么变化?

答:由于在面向对象设计中,对象之间的交互实现困难,所以在原本的程序设计类图上增加一个新的功能,可能会打乱原有的结构图,并出现更多错综复杂的关系。

软件设计模式与体系结构 期末课后题相关推荐

  1. 软件设计模式与体系结构 课后练习1

    软件设计模式与体系结构 课后练习1 习题如下: 解:第一题 画出该模式的设计类图: 如图1所示: 图1 设计类图 2.  解释为什么自己的设计符合开闭原则? 答:因为设计的类.模块和函数对扩展开放,对 ...

  2. 软件设计模式与体系结构实验——3.1-1组合模式的应用

    链接: 软件设计模式与体系结构实验--2.1-1(2)(抽象)工厂模式的应用 链接: 软件设计模式与体系结构实验--2.2-1生成器模式的应用 链接: 软件设计模式与体系结构实验--2.3-1单列模式 ...

  3. 软件设计模式与体系结构(上)

    目录 软件设计模式概述(面向对象设计概述) 一.面向对象设计的表示方法 1. UML 二.面向对象的设计原则 1.单一原则 2.开闭原则 3.里氏代换原则 4.依赖倒转原则 5.接口隔离原则 6.合成 ...

  4. 软件设计模式与体系结构(中)

    目录 软件体系结构概述 一.软件体系结构的定义 二.软件体系结构的优势 经典软件体系结构 一.调用-返回风格软件体系结构 1.主程序-子程序 2.面向对象 二.数据流风格软件体系结构 1.顺序批处理软 ...

  5. 软件设计模式与体系结构实验——2.1-1(2)(抽象)工厂模式的应用

    文章目录 一.实验三 工厂模式的应用 1.实验目的 2.实验内容 3.模式UML图 4.模式代码 5.运行截图 6.实验小结 二.实验四 抽象工厂模式的应用 1.实验目的 2.实验内容 3.模式UML ...

  6. 基于案例的软件构造教程第二章课后题答案

    这篇文章只提供题号为 奇数 的答案,因为是我们的NT老师要求的 1.名词解释:分解,模块化,逐步求精,软件测试,测试需求,测试设计,测试覆盖,软件调试,缺陷,软件质量,编程风格. 分解:把一个大的.错 ...

  7. 软件设计模式及体系结构之工厂方法模式

    前言 创建模式 创建型模式( Creational pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离. 为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共 ...

  8. 软件设计模式与体系结构实验汇总

    实验一 工厂模式的应用 有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的 ...

  9. 软件设计模式及体系结构之中介者模式

    前言 中介者模式概述 √QQ聊天的两种方式 1)用户与用户直接聊天,用户与用户之间存在多对多的联系,这将导致系统中用户之间的关系非常复杂用户如果要将相同的信息或文件发送给其他所有用户,必须一个一个地发 ...

  10. 软件设计模式及体系结构之外观模式

    前言 分析 1.一个客户类需要和多个业务类交互,而这些需要交互的业务类经常会作为一个整体 2.引入一个新的外观类(Facade)来负责和多个业务类子系统( Subsystem)进行交互,而客户类只需与 ...

最新文章

  1. STL学习笔记(一)
  2. Perl 教学 Perl5中的引用(指针)
  3. gc日志怎么看_你应该怎么监控Kafka?
  4. 32位Windows系统未分页内存限制导致的VPS的容量问题
  5. 常用的排序算法总结(二)
  6. 为什么要有res/values/ids.xml(一个res/values/ids.xml引发的血案)
  7. python数据分析-如何学习和评价《利用python进行数据分析》这本书?
  8. C++基础:第五章 表达式基础与详述
  9. [转]如何有效地记忆与学习
  10. 研究云计算与大数据分析处理领域建议看的学术论文列表
  11. kali工具中文手册_黑客系统指南-在安卓手机上安装kali分步教程
  12. VS2017无法保存工具栏布局信息
  13. 常见笔顺错误的字_[转载]常见笔画笔顺易错字大全
  14. 混动汽车HEV混合驱动的MPC控制
  15. html点中弹出选择框,javascript点击弹出选择框
  16. python中0x是什么意思_在python中,为什么0xbin()返回False?
  17. html背景音乐自动播放embed,HTML中添加音乐video embed audio
  18. matlab中arccotx,微积分计算公式的推导过程
  19. Amendment Quotation function in CLCL Plugin
  20. FLUENT操作--VOF模型局部初始化的TUI命令

热门文章

  1. LinkPdf转换器-批量PDF转Word|PDF合并|压缩|拆分
  2. Android 离线文字转语音功能-TTS(Text To Speech)
  3. 【项目】08年度科创项目“绘图助手工具箱”项目成果发布
  4. 定义一个工资变量c语言,《工资管理》c语言程序设计.doc
  5. 最新红旗linux系统,国产系统红旗Linux下载
  6. 公司专利技术交底书撰写及申请完全流程
  7. ios备忘录下载安卓版_iOS8备忘录
  8. 购物商城微信小程序演示
  9. Python Algorithms Learning Notes(1)--Asymptotic Notations
  10. teamtalk原理