云南大学软件学院设计模式期末复习

合集下载

软件工程期末考试参考题及答案

软件工程期末考试参考题及答案

软件工程期末考试参考题及答案1. 考试题目:软件需求工程考试要求:根据给定的需求文档,完成以下题目。

题目一:根据给定的需求文档,设计一个在线购物系统。

请根据以下要求完成系统设计:(1)使用UML类图绘制系统的类结构;(2)使用UML时序图描述用户登录和浏览商品的流程;(3)使用UML活动图描述用户下订单的流程。

答案:(1)类图如下所示:[在这里插入UML类图图片](2)时序图如下所示:[在这里插入UML时序图图片](3)活动图如下所示:[在这里插入UML活动图图片]题目二:根据给定的需求文档,设计一个在线学习系统。

请根据以下要求完成系统设计:(1)使用UML用例图描述系统的功能需求;(2)使用UML活动图描述学生完成在线学习的流程;(3)使用UML状态图描述学生的学习状态变化。

答案:(1)用例图如下所示:[在这里插入UML用例图图片](2)活动图如下所示:[在这里插入UML活动图图片](3)状态图如下所示:[在这里插入UML状态图图片]2. 考试题目:软件设计模式考试要求:根据给定的题目,选择并解答以下问题。

题目一:分析以下代码,判断其使用了哪种设计模式,并阐述该设计模式的作用和优势。

```javapublic interface Car {void drive();}public class Sedan implements Car {@Overridepublic void drive() {System.out.println("Driving a sedan car."); }}public class SUV implements Car {@Overridepublic void drive() {System.out.println("Driving an SUV car."); }}public class CarFactory {public Car createCar(String type) {if (type.equals("sedan")) {return new Sedan();} else if (type.equals("suv")) {return new SUV();} else {throw new IllegalArgumentException("Invalid car type: " + type);}}}```答案:该代码使用了工厂模式。

云南大学--软件学院--计算机网络原理-期末试题复习总结

云南大学--软件学院--计算机网络原理-期末试题复习总结

注意:这是04-05学期王老师出的试题。

1.Ethernet使用的MAC协议是(1)。

当发生冲突时,将进入二进制指数退避阶段,对于第3次冲突,等待重传的最长时间是512位时间的(2)倍。

(1)A.ALOHA B.CSMA/CD C.CSMA/CA D.CSMA/DD (2)A.1 B.3C.5 D.72.网络体系结构定义计算机网络的分层结构,TCP/IP模型和ISO/OSI参考模型是两个主要的网络模型,其中TCP/IP协议传送层之上的层是(3)层,而ISO/OSI 则是一个(4)层的模型。

(3)A.应用B.表述C.会话D.网络(4)A.4 B.5 C.6 D.73.传统的以太网传输介质是同轴电缆,其中使用粗同轴电缆的网络称为(5)网络,使用细同轴电缆的网络称为(6)网络。

10Base-T网络使用的传输介质是无屏蔽双绞线,简称为(7)。

(5)A.5BASE B.10BASE-10 C.10BASE-5D.10BASE-2 (6)A.5BASE B.10BASE-10 C.10BASE-5 D.10BASE-2(7)A.UPT B.UTP C.UPP D.UUP 4.有N个节点共享一条总传输速率为R的通信信道,若采用TDMA协议,则每个节点的平均传输速率是(8),而瞬时传输速率则为(9);如果采用FDMA 协议,则每个节点的平均传输为(10),而瞬时传输速率则为(11)。

(8)A.R B.R/N C.NR D.2R(9)A.R B.R/N C.NR D.2R(10)A.R B.R/N C.NR D.2R(11)A.R B.R/N C.NR D.2R5.可靠传输协议rdt3.0的发送和接收窗口都是1,对其进行改进后的GBN协议和SR协议都把发送窗口尺寸扩大为N(>1)。

但GBN协议的接收窗口为(12),而SR协议的接收窗口为(13)。

对SR协议,若使用k位的序号,则其发送窗口尺寸应(14)。

(12)A.1 B.N/4 C.N/2 D.N(13)A.1 B.N/4 C.N/2 D.N(14)A.不大于2k B.等于2k C.不大于2k-1D.等于2k-16.PPP协议可以用在(15)链路上,并使用(16)协议完成链路状态的管理,使用(17)协议完成网络层地址配置和压缩方式协商。

软件设计模式与应用复习 题集附答案

软件设计模式与应用复习 题集附答案

软件设计模式与应用复习题集附答案软件设计模式是软件工程领域的重要概念之一,它为程序员提供了一种可以重用的解决方案。

通过使用设计模式,程序员可以更加高效地开发出可靠且可维护的软件系统。

本文将对软件设计模式与应用进行复习,并附带一些题目和答案,以便读者检验自己的掌握程度。

1. 设计模式的概念及分类设计模式是指在软件设计中常见的问题,并提供了相应的解决方案。

根据其目的和使用方式,设计模式可以分为三类:创建型模式、结构型模式和行为型模式。

- 创建型模式:主要关注对象的创建过程,包括简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。

- 结构型模式:主要关注对象之间的组合关系,包括适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式和享元模式。

- 行为型模式:主要关注对象之间的通信和协作方式,包括策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式和解释器模式。

2. 设计模式的使用场景设计模式可以在特定的场景中被应用,以解决相应的问题。

- 简单工厂模式:当需要根据输入参数来决定创建哪个具体对象时,可以使用简单工厂模式。

- 观察者模式:当一个对象的改变需要通知其他对象进行相应处理时,可以使用观察者模式。

- 模板方法模式:当要定义一组算法中的某个步骤,并且允许子类为该步骤提供实现细节时,可以使用模板方法模式。

- 代理模式:当需要为一个对象提供一个代理,以控制对象的访问时,可以使用代理模式。

- 中介者模式:当多个对象之间的交互需要进行解耦时,可以使用中介者模式。

3. 题目与答案以下是一些与软件设计模式与应用相关的题目,附带了答案供读者参考。

题目一:简述工厂方法模式的原理及应用场景。

答案一:工厂方法模式是一种创建型模式,它通过定义一个用于创建对象的接口,由子类决定具体实例化的对象类型。

工厂方法模式可以在不暴露具体创建逻辑的情况下,实现对象的实例化。

(完整word版)软件设计模式复习题

(完整word版)软件设计模式复习题

软件设计模式复习题1、熟悉每个设计模式的定义、模式UML图解、模式使用情形以及模式优缺点。

2、设计模式的两大主题是什么?3、设计模式分成几大类?每大类各包含哪些模式?4、为什么要使用设计模式?使用设计模式有哪些好处?5、比较抽象工厂模式和工厂方法模式相似性和差异性。

什么情况下使用抽象工厂模式?什么情形下使用工厂方法模式?6、简述原型模式中浅层克隆和深度克隆的区别?分别给出代码说明。

7、模板方法和普通的实现类继承抽象类方式有何区别?8、是比较和分析适配器模式和桥接模式之间的共性和差异性。

9、请用组合模式实现学校人事管理模式。

10、综合应用装饰模式、命令模式和状态模式实现工具条命令按钮鼠标进入时高亮显示状态以及鼠标单击按钮后呈现凹陷状态,表明当前按钮为选中状态。

11、请阐述享元模式是如何节省系统内存的?试举例分析使用享元模式前后的内存节约之比。

12、使用解析器模式实现对学生成绩表的查询输入语句进行解析并执行查询,成绩表结14、试比较和分析中介者模式和观察者模式之间的相似性和差异性?两者是否能够相互转化?15、模板方法和普通的抽象类继承有什么区别?16、使用访问者模式对12题中的学生信息进行报到。

1、熟悉每个设计模式的定义、模式UML图解、模式使用情形以及模式优缺点。

(见书)答:单件模式:①单例模式:class Sin glet on {private static Sin gleton in sta nee;private Sin glet on(){}public static Sin glet on Get In sta nce(){if (in sta nee == n ull) {in sta nee = new Sin glet on();}retur n in sta nee; }客户端代码:class Program{static void Main(string[] args) {Sin glet on s1 = Sin glet on .Getl nsta nce();Sin glet on s2 = Sin glet on .Getl nsta nce();if (s1 = = s2) {Con sole.WriteL in e("Objects are the same in sta nee");}Co nsole.Read();}}②多线程时的单例(Lock是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。

nuaa软件设计模式与体系结构期末考试复习重点

nuaa软件设计模式与体系结构期末考试复习重点

软件设计模式与体系结构复习重点
一、题型:
选择题5* 3分填空题15*2分问答题5个考综合分析(4题)和程序设计(一题),有可能有一个画图题。

二、考点:
1.五个设计原则
重点是开闭原则、依赖倒转原则、里氏原则
2.设计模式
1.创建型设计模式,要会每一种的名称,有几种,特点(意图)是什么,要会分析。

重点是单例模式,会实现,同时要注意其实现的细节(比如构造函数设置为private类型)
2.结构型设计模式,重点是装饰者模式,要会画UML图,同时要会代码实现
3.行为型设计模式,重点是观察者模式,要求同装饰者模式一样,也要注意其两种子类型(推拉);同时策略模式、命令模式、代理模式、适配器模式也很重要
4.不考的模式:中介者,享元模式,外观模式
5.访问者模式要注意关注一下它的特点
3.体系结构
结合PPT和论文
重点是基本含义、要求、风格(管道过滤器模式的特点)、与设计模式的区别和联系、
体系结构的4+1视图、描述语言与其他语言的区别
4.重要问答
1、(大体意思是这样,待补充)
软件体系结构与设计模式的
(1)区别:
软件设计模式和体系结构是处于不同层次的,设计模式是为了方面实现;而体系结构并没有具体的
(2)联系。

设计模式考试资料

设计模式考试资料

一、编程论述题:框架设计者1. 以SortTest和IntSort为例,说明什么是控制反转IoC(1)SortorTest->BubbleSort。

客户依赖具体的服务BubbleSort。

(2)SortorTest->IntSort<=BubbleSort。

应用程序SortorTest遵循针对接口编程/抽象依赖原则,依赖抽象类型IntSort,而BubbleSort自然地依赖父类型。

(3)【SortorTest->IntSort】。

这一步是关键。

如果需要将控制模块SortorTest设计成框架,可以将控制模块SortorTest和它必须依赖的抽象类型IntSort打包。

控制模块SortorTest从应用程序(上层模块)变为框架(下层模块),为控制反转(Inversion ofControl)。

最好能够提供JavaDoc,并且将方法名sort 改成soooooort。

(4)Main->【SortorTest->IntSort】<=BubbleSort。

(其他程序员)使用框架。

(5)带main的BubbleSort,BubbleSort->【SortorTest ->IntSort】<=BubbleSort。

与第一步“依赖倒置”。

反映了某些应用程序员的失落心情:从自由自在变为受控于人2.什么是抽象依赖原则,它与应用程序、框架的关系是程序要依赖于抽象接口,不要依赖于具体实现。

简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

在应用程序设计和框架设计中,抽象依赖原则/ADP均有重要作用。

在应用程序的编程中,可以把ADP视为一种规劝或忠告;而在框架设计中,依赖抽象类型则是条例和军规。

3. 有一个接口如下package util;@FunctionalInterface public interface DoubleOP {double op(double m,double n) ;}编写应用程序App,以DoubleOP 的实现类、匿名类和λ表达式提供回调函数,分别完成m-n、m*n*n和求m与n大值功能。

云南大学新型主机与操作系统期末试卷A(附答案)资料

云南大学新型主机与操作系统期末试卷A(附答案)资料

云南大学2010至2011学年上学期软件学院《新型主机语言编程》期末考试(闭卷)试卷A满分100分考试时间:120分钟任课教师:于倩学院:___专业:____学号:____姓名:____一、填空题(15分,每空1分):1、传统COBOL程序书写方式为固定格式,每行源程序从左开始分为____标号_区、_续行____区、_A_____区、_____B____区和___注释___区。

2、从下列提供的字符串中选择出所有合法的COBOL数据名___BD______A、LI-B、YU-QIANC、STU_NAMED、1234A53、按下列语义写出对应的语句(注意不能使用COMPUTE语句,每个横线只能写一个COBOL语句):(1) A+B=>A __ADD B TO A____________________(2) X+Y=>CX+Y=>D __ADD X,Y GIVING C,D_______________(3) X-11-22=>Y S UBTRACT 11, 22 FROM X GIVING Y.(4) X-A-B-C-D=>XY-A-B-C-D=>Y _ SUBTRACT A, B, C, D FROM X, Y.(5) C*D=>DC*F=>F MULTIPLY C BY D, F.(6) A/B=>XA/B=>Y DIVIDE A BY B GIVNG X, Y._或者DIVIDE B INTO A GIVING X, Y._4、假如Y是数值型整数数据项,声明为:77 Y PIC 9999 VALUE 4321.写出执行下列语句后Y的内容(1) MOVE 1.234 TO Y. Y: _0001(2) MOVE 12 TO Y. Y: _0012 _ _ _(3) MOVE 123456 TO Y. Y: _3456 _ _ _二、判断下列数据项声明是否正确(在横线上打√或×,5分,每题1分)(1) 01 A PIC 9(5) USAGE DISPLAY. (√)(2) 77 A PIC 9(5) COMP-1. (×)(3) 01 A PIC 9(5) COMP-2. (×)(4) 77 A PIC 9(5) COMP-3. (√)(5) 01 A OCCURS 10 PIC 9(5). (×)三、简答题(20分)1、有如下A1到A7段A1. …A2. PERFORM A4 THRU A5.A3. …A4. PERFORM A6.A5. …A6. …A7. …现在执行如下语句PERFORM A2 THRU A6时,请写出顺序执行的各段段名(10分)答案:A2-A4-A6-A5-A3-A4-A6-A5-A6(全对给分,有错酌情扣分)2、已有02 XYZ03 X PIC 9(6).03 Y PIC X(4).03 Z PIC A(5).02 ABC REDEFINES XYZ.04 A PIC X(2).04 B PIC A(6).04 C.05 C1 PIC 9(2).05 C2 PIC X(5).02 DEF REDEFINES XYZ PIC X(15)请在试卷左边画出内存中数据存放的情况。

软件工程期末复习要点归纳总结

软件工程期末复习要点归纳总结

软件工程期末复习要点归纳总结软件工程是指在软件开发的全过程中,应用工程的原理、方法和经验对软件进行开发、运行和维护的过程。

在软件工程这个学科中,包括了软件需求、软件设计、软件构建、软件测试、软件维护等多个阶段和技术。

下面是软件工程期末复习的要点归纳总结:1.软件开发过程模型-瀑布模型:各个阶段按顺序进行,每个阶段完成后不可回溯。

-增量模型:将软件划分为多个增量,每个增量独立进行开发。

-螺旋模型:将软件开发过程分为多个循环,每个循环都包括需求分析、设计、开发和测试。

-迭代模型:将软件开发过程分为多个迭代,每个迭代包括需求分析、设计、开发和测试。

2.软件需求工程-需求获取:通过需求采集、用户访谈、问卷调查等方式获取需求。

-需求分析:对需求进行整理、分类、抽象和规范化,得出系统需求。

-需求规格说明:将需求规格化为需求文档,包括用例、用例图、领域模型等。

-需求验证:通过评审、原型验证等方式验证需求的正确性和完整性。

3.软件设计-结构化设计:通过模块化、自顶向下、逐步求精的方式进行软件设计。

-面向对象设计:通过类、继承、多态等面向对象的概念进行软件设计。

-架构设计:设计软件的整体框架和组件之间的关系。

-接口设计:设计软件的各个组件之间的接口。

4.软件构建-编码:根据设计文档进行编码,可以使用编程语言、集成开发环境等工具。

-调试:通过调试工具,对程序进行调试,找出存在的问题并进行修复。

-集成:将各个模块集成到一起,进行整体测试,确保功能的正确性。

-部署:将软件部署到目标环境中,确保软件能够正常运行。

5.软件测试-单元测试:对软件的最小单元进行测试,如函数、方法等。

-集成测试:对软件的各个模块进行整合测试,确保模块之间的协调性。

-系统测试:对整个系统进行测试,确保系统满足用户需求。

-验收测试:由用户对软件进行测试,验证软件是否满足用户需求。

6.软件维护-改正性维护:修复软件中的错误。

-适应性维护:根据用户需求,对软件进行功能扩展。

云南大学软件学院数据库系统设计期中复习

云南大学软件学院数据库系统设计期中复习

数据库系统设计期中复习整理第一章1.数据独立性:Physical data independence : Physical level can change without having to change the logical level. Logical data independence : Logical level can change without having to change the external(外部的)level.2.数据库管理系统架构3.ACID(1)原子性(Atomicity):一个事务中的所有操作要么全部成功,要么全部失败。

原子性由恢复机制实现。

(2)一致性(Consistency):事务完成后,所有数据处于应有的状态,所有内部结构正确,能够准确反映事务所作的工作。

基于隔离性实现。

(3)隔离性(Isolation):一个事务不会干扰另一个事务的进程,事务交叉调度执行的结果与串行调度执行的结果是一致的。

隔离性由并发控制机制实现。

(4)持久性(Durability):事务提交后,对数据库的影响是持久的,即不会因为系统故障影响事务的持久性。

持久性由恢复机制实现。

4.CAP(1)Consistency 一致性强一致性强一致性(即时一致性)假如A先写入了一个值到存储系统,存储系统保证后续A,B,C的读取操作都将返回最新值弱一致性假如A先写入了一个值到存储系统,存储系统不能保证后续A,B,C的读取操作能读取到最新值。

此种情况下有一个“不一致性窗口”的概念,它特指从A写入值,到后续操作A,B,C读取到最新值这一段时间。

最终一致性最终一致性是弱一致性的一种特例。

假如A首先write了一个值到存储系统,存储系统保证如果在A,B,C后续读取之前没有其它写操作更新同样的值的话,最终所有的读取操作都会读取到A写入的最新值。

此种情况下,如果没有失败发生的话,“不一致性窗口”的大小依赖于以下的几个因素:交互延迟,系统的负载,以及复制技术中replica的个数(这个可以理解为master/salve模式中,salve的个数),最终一致性方面最出名的系统可以说是DNS系统,当更新一个域名的IP以后,根据配置策略以及缓存控制策略的不同,最终所有的客户都会看到最新的值。

云南大学软件学院设计模式期末复习

云南大学软件学院设计模式期末复习

第一章1. 什么是模式?模式是在物体或事件上,产生的一种规律变化与自我重复的样式与过程。

在模式之中,某些固定的元素不断以可预测的方式周期性重现。

2.什么是设计模式?广义讲,软件设计模式是可解决一类软件问题并能重复使用的软件设计方案;狭义讲,设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。

是在类和对象的层次描述的可重复使用的软件设计问题的解决方案;设计模式是在一个上下文中,对一个问题的解决方案,及其能够达到的效果。

3. 设计模式四要素名称、上下文与问题、解决方案、效果●模式名称(Pattern Name)●问题(Problem):描述应该在何时使用模式。

解释了设计问题和问题存在的前因后果,可能还描述模式必须满足的先决条件;●解决方案(Solution):描述了设计的组成成分、相互关系及各自的职责和协作方式。

模式就像一个模板,可应用于多种场合,所以解决方案并不描述一个具体的设计或实现,而是提供设计问题的抽象描述和解决问题所采用的元素组合(类和对象);●效果(consequences ):描述模式的应用效果及使用模式应权衡的问题4. 设计模式分类23种设计模式:创建型:5种;结构型:7种;行为型:11种5.面向对象的四个基本方法:●抽象(Abstraction)●封装(Encapsulation)●多态(Polymorphism)●继承(Inheritance)6. 面向对象的设计原则开闭原则(OCP):对于扩展是开放的(Open for extension)。

这意味着模块的行为是可以扩展的。

当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。

也就是说,我们可以改变模块的功能。

对于修改是关闭的(Closed for modification)。

对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。

模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。

云南大学2018至2019高级语言程序期末试卷及答案

云南大学2018至2019高级语言程序期末试卷及答案

云南大学2018至2019学年秋季学期软件学院 《高级语言程序设计》期末考试(闭卷)试A 卷满分: 100分 考试时间: 120分钟 任课教师:专业: 序号: 学号: 姓名:Section 1: Single Choice (2 marks for each item, total 30 marks )1. In the following statements, the error is ( A )A. char str[5]="hello";B. char str[]={'h','e','l','l','o','\0'};C. char str[5]={"hi"};D. char str[100]="";2. Which following C language identifier is legal ( B ) A .3ax B. x C. case D. -e2 E. union3. If int a=3 b=4, then the conditional expression "a:b? A<b" is ( A )A 3B 4C 0D 14. Which following descriptions of the one-dimensional array is correct ( D )A char a (10);B int a[];C int k =5,a[k];D char a[3]={‘a ’, ’b ’, ’c ’};5. int i=10, int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};The value of a[a[i]] element is ( C ) A.10B.9C.6D.56. A variable does not specify a storage class, whose default storage class is (A ) A auto B static C extern D register7. Which following definitions is incorrect ( A )。

云南大学设计模式实验报告4_命令模式

云南大学设计模式实验报告4_命令模式

云南大学软件学院实验报告序号:姓名:学号:专业:软件工程日期:2015.12.21 成绩:实验四命令模式的运用一、实验目的:命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象,命令模式也支持可撤销的操作。

在熟悉命令模式相关理论知识的基础上,使用命令模式实现图片处理程序。

二、实验要求:使用命令模式实现图片处理程序,要求如下:1.图片处理程序要有3张图片。

2.每张图片至少有3种操作。

3.实现类似遥控器的菜单,动态的选择对图片进行的处理。

4.要有“撤消操作”,撤消操作要可以撤销至最后一步。

1、设计并绘制该程序的类图;2、依照设计的类图使用Java语言编写代码,并实现该程序;3、除了核心的模式相关类实现外,提供测试环境,按照难度高低,分别是:a)控制台程序,Client硬编码初始化模式和测试环境,运行结果文本输出;b)控制台程序,Client初始化测试环境,并根据用户输入运算,运行结果文本输出;c)设计并实现用户UI,Client初始化测试环境,并根据用户在UI控件上的输入运算,运行结果文本输出;三、实验内容:实验类图:实验代码:1 DrawControl类public class DrawControl {ArrayList<DrawCommand> dcommand=new ArrayList<DrawCommand>();public void addCommand(DrawCommand dc){dcommand.add(dc);}public void removeCommand(DrawCommand dc){for(int i=0;i<dcommand.size();i++)if(dcommand.get(i).getClass().equals(getClass())){dcommand.remove(i);}}public void executeCommand(DrawCommand dc){for(int i=0;i<dcommand.size();i++)if(dcommand.get(i).getClass().equals(getClass())){dcommand.get(i).execute();}}public void undoCommand(DrawCommand dc){if (dcommand.size() > 1) {dcommand.get(dcommand.size() - 1).undo();dcommand.remove(dcommand.size() - 1);} elseSystem.out.println("Here is end, you can't undo");}}2 DrawCommand接口类package design4;interface DrawCommand {public void execute();public void undo();}3 Circular类public class Circular extends JPanel {Ellipse2D e =null;private int w,h;int f;public Circular(int w,int h){this.w=w;this.h=h;} //画圆型public void drawCircular(){e=new Ellipse2D.Double(w/2,h/4,50,50);f=1;repaint();} //画椭圆形public void drawEllipse(){e=new Ellipse2D.Double(w/2,h/4,20,70);f=1;repaint();} //画实心圆public void drawSolidRound(){f=2;e=new Ellipse2D.Double(w/2,h/4,50,50);repaint();}public void paintComponent(Graphics g){super.paintComponent(g);if(f==1){Graphics2D g2=(Graphics2D) g;g2.draw(e);}else{Graphics2D g2=(Graphics2D) g;//g2.draw(e);g2.setPaint(Color.RED);g2.fill(e);}}}4 Circular Command类package design4;public class CircularCommand implements DrawCommand{ Circular circular;public CircularCommand(Circular c){circular=c;}public void execute() {circular.drawCircular();}public void undo() {// TODO Auto-generated method stub}}5 DrawJFrampackage design4;import java.awt.Container;import java.awt.GridLayout;import java.awt.Panel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;public class DrawJFram extends JFrame implements ActionListener{JComboBox comboBox,comboBox2,comboBox3;String[] str={"圆形","椭圆","实心圆"};String[] str2={"方形","正方形","长方形"};String[] str3={"三角形","等腰直角三角形","等边三角形"};public DrawJFram (){super(" ");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setcomputerWindow();}private void setcomputerWindow() {// TODO Auto-generated method stub Container ct=this.getContentPane();Container ct=this.getContentPane();ct.setLayout(new GridLayout(6,1));Panel p1=new Panel();p1.add(new JLabel("圆形:"));comboBox=new JComboBox(str);p1.add(comboBox);p1.add(new JLabel("方形:"));comboBox2=new JComboBox(str2);p1.add(comboBox2);p1.add(new JLabel("三角形:"));comboBox3=new JComboBox(str3);p1.add(comboBox3);comboBox.addActionListener(this);comboBox2.addActionListener(this);comboBox3.addActionListener(this);ct.add(p1,"North");}public void actionPerformed(ActionEvent e) {if(e.getSource().equals(comboBox)){if(comboBox.getSelectedItem().equals("圆形")){Circular circular=new Circular(100, 100);this.add(circular,"South");circular.drawCircular();this.setVisible(true);}else if(comboBox.getSelectedItem().equals("椭圆")){Circular circular=new Circular(30, 70);this.add(circular,"South");circular.drawEllipse();this.setVisible(true);}else if(comboBox.getSelectedItem().equals("实心圆")){Circular circular=new Circular(50, 50);this.add(circular,"South");circular.drawSolidRound();this.setVisible(true);}}else if(e.getSource().equals(comboBox2)){if(comboBox2.getSelectedItem().equals("方形")){Rectangle rectangle=new Rectangle(100, 100);this.add(rectangle,"South");rectangle.drawhighRectangle();this.setVisible(true);}else if(comboBox2.getSelectedItem().equals("长方形")){ Rectangle rectangle=new Rectangle(100, 100);this.add(rectangle,"South");rectangle.drawlongRectangle();this.setVisible(true);}else if(comboBox2.getSelectedItem().equals("正方形")){ Rectangle rectangle=new Rectangle(100, 100);this.add(rectangle,"South");rectangle.drawsquare();this.setVisible(true);}}else if(e.getSource().equals(comboBox3)){if(comboBox3.getSelectedItem().equals("三角形")){Triangle triangle=new Triangle(500, 10);this.add(triangle,"South");triangle.drawTriangle();this.setVisible(true);}else if(comboBox3.getSelectedItem().equals("等腰直角三角形")){ Triangle triangle=new Triangle(500, 30);this.add(triangle,"South");triangle.drawIsoscelesTriangle();this.setVisible(true);}else if(comboBox3.getSelectedItem().equals("等边三角形")){ Triangle triangle=new Triangle(500, 50);this.add(triangle);triangle.draweQuilateralTriangle();this.setVisible(true);}}}}6 pictureMainpackage design4;import java.awt.Dimension;import java.awt.Toolkit;public class pictureMain {public static void main(String[] args) {// TODO Auto-generated method stubToolkit kit=Toolkit.getDefaultToolkit();Dimension screenSize=kit.getScreenSize();int screenHeihgt=screenSize.height;int screenWidth=screenSize.width;DrawJFram drawJFram=new DrawJFram();drawJFram.setSize(screenWidth,screenHeihgt);drawJFram.setVisible(true);}}实验结果四、实验总结:我经过本次命令模式的实验,通过自己动手编代码,是自己理解命令模式机制,并且知道命令模式有以下的优点:适用性:想要实现回调函数功能,想要在不同的时刻指定、排列和执行请求,需要支持取消和改变日志操作;效果:命令模式将调用操作的对象与知道如何实现该操作的对象解耦,Command是头等的对象。

云南大学程序设计Python期末考题

云南大学程序设计Python期末考题

云南大学程序设计Python期末考题一、选择题1下面不属于Python语言特点有哪些?(D)A.开源B.免费C.跨平台D.编译执行2下面导入标准库对象的语句正确的有(D)A.from math import sin B.from random import random C.from math import*D.Import*3已知x=[1,2,3],执行语句x.append(4)之后,x的值是(A)A.[1,2,3,4]B.[4]C.[1,2,3]D.44.已知x=[1,2,3,4,5,6,7],那么x.pop()的结果是(C)A.1B.4C.7D.55.已知x=[1,2]y=[3,4],那么x+y的结果是(C)A.3B.7 C.[1,2,3,4]D.[4,6] 6已知x=(1,2,3),那么sum(x)的结果是(A)A.6B.3C.[6]D.(6)7下面的代码输出结果是(B)for iin range(3):print(i,end=',)A.0,1,2B.0,1,2,C.012D.012,8下列哪个关键字是用来定义类的(A)A.class B.CLASS C.def D.continue9已知x={1:one',2:two,3:threel},那么print(x[2])的结果是(B)A.one B.two C.three D.210.已知x='abcd’,那么len(x)的值是(A)A.4B.3C.a D.b11.以下代码的运行结果是(B)x='Sunday'y='Saturday'ifx<y:print(x<y)elif x==y:print('x==y)else:print('x>y')A.x<yB.x>yC.x=yD.x==y D已知x={1,2,3,4},y={3,4,5}那么执行print(x-y)语句的输出结果是(B)A.{1,2,3,4,5}B.{1,2}C.{1,2,3,4}D.{1,2,5}B已知x=3,那么x+=6之后,x的值是(C)A.6B.3C.9D.3614以下不是Python合法的标识符的是(B)A.Strl B.class C.c_1 5x=3,那么type(x)的结果是(A)A.intB.floatplexD.str16已知a=3+4j,b=5+6j,那么a+b的结果是(A)A.8+10jB.8-2jC.2+10jD.-2+10j17.已知x=[21,1234,9],那么max(x)的结果是(B)A.21B.1234C.9D.12318.表达式“3in[1,2,3]”的值为(A)A.True B.False C.yes D.no19.表达式“[1,2,3]*3”的值是(B)A.[1,2,3]B.[1,2,3,1,2,3,1,2,3]C.[3,6,9]D.[1,2,9]20.已知a=[1,2,3]和b=[1,2,4],那么id(a[1])==id(b[1])的执行结果是(A)A.True B.False C.yes D.no二、判断题1在python 语言中,关系运算符可以连续使用,例如1<3<5等价于1<3and3<5。

云南大学软件学院模拟与数字电路2008年期末试卷A

云南大学软件学院模拟与数字电路2008年期末试卷A

云南大学2008至2009上学期软件学院2008年级《模拟与数字电路》期末考试(闭卷)试卷A满分100分考试时间120分钟任课教师:张艳王逍学院: 软件学号: 姓名:一、填空(3%×10=30%)1.戴维南定理将一个有源二端网络等效为一个和串联的电路。

2.放大电路中耦合电容的作用是:在情况下开路,在情况下短路。

3.(1011.01)2=( )104.(154)10=( )165.将321个状态编成二进制码,至少需要位二进制数。

6.可以实现输出端“线与”的门电路为门。

7.在对模拟信号进行A/D转换的过程中,影响转换后的信号的精度的主要参数为和二、化简逻辑函数。

(共2小题,共18分)1、将逻辑函数)(),,(C B A C B A F ⊕=化为与非式。

(8%)2、将逻辑函数∑∑+=)15,10,6,5()13,11,9,4,3,1,0(),,,(d m D C B A F 化成最简与或式(卡诺图法)。

(10%)三、组合逻辑电路设计。

(共2小题,共20分)1、试用3-8线译码器设计一个多数表决器。

(1)设输入变量为C B A ,,,1表示有表决,0表示无表决;输出为F ,1表示表决通过,0表示表决未通过。

画出F 的卡诺图;(4%)(2)芯片CT54LS138的真值表如下,试用该芯片产生逻辑函数F (配合与非门实现)。

(6%)2、试用4选一数据选择器实现逻辑函数AC B A C B A F +=),,( (1) 填写F 的卡诺图,选取B A ,为地址变量,在卡诺图上画出AB 的最小项的圈;(5%)(2) 作出电路图。

(5%)四、时序逻辑电路的分析。

(共1小题,共12分)1、试分析如图电路的功能,。

(1)列出激励方程和次态方程;(3%)(2)作出状态转移图;(3%)(3)以000为设初始状态,画出波形图;(3%)(4)描述该电路的功能。

(3%)五、时序逻辑电路的设计。

(共2小题,共20分)1、试用D触发器设计一个5分频电路,要求状态图如下。

云南大学--软件学院----计算机网络原理试卷

云南大学--软件学院----计算机网络原理试卷

一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四2.计算机网络中可以共享的资源包括()A、硬件、软件、数据、通信信道B、主机、外设、软件、通信信道C、硬件、程序、数据、通信信道D、主机、程序、数据、通信信道3.网络协议主要要素为()A、数据格式、编码、信号电平B、数据格式、控制信息、速度匹配C、语法、语义、同步D、编码、控制信息、同步4.采用专用线路通信时,可以省去的通信阶段是()A、建立通信线路B、建立数据传输链路C、传送通信控制信号和数据D、双方确认通信结束5.通信系统必须具备的三个基本要素是()A、终端、电缆、计算机B、信号发生器、通信线路、信号接收设备C、信源、通信媒体、信宿D、终端、通信设施、接收设备6.宽带传输通常使用的速率为()A0-10Mbit/sB1-2.5Mbit/sC5-10Mbit/s D、0-400Mbit/s7.计算机网络通信系统是()A、电信号传输系统B、文字通信系统C、信号通信系统D、数据通信系统8.网络接口卡的基本功能包括:数据转换、通信服务和()A、数据传输B、数据缓存C、数据服务D、数据共享9.完成通信线路的设置与拆除的通信设备是()A、线路控制器B、调制解调器C、通信控制器D、多路复用器10.在星型局域网结构中,连接文件服务器与工作站的设备是()A、调制解调器B、交换器C、路由器D、集线器11.在OSI七层结构模型中,处于数据链路层与运输层之间的是()A、物理层B、网络层C、会话层D、表示层12.完成路径选择功能是在OSI模型的()A、物理层B、数据链路层C、网络层D、运输层13.下列功能中,属于表示层提供的是()A、交互管理B透明传输C、死锁处理D、文本压缩14.在TCP/IP协议簇的层次中,解决计算机之间通信问题是在()A、网络接口层B、网际层C、传输层D、应用层15.对局域网来说,网络控制的核心是()A、工作站B网卡C、网络服务器D、网络互连设备16.在中继系统中,中继器处于()A、物理层B、数据链路层C、网络层D、高层17.各种网络在物理层互连时要求()A、数据传输率和链路协议都相同B、数据传输率相同,链路协议可不同C、数据传输率可不同,链路协议相同D、数据传输率和链路协议都可不同18.网络管理系统中,管理对象是指()A、网络系统中各种具体设备B、网络系统中各种具体软件C、网络系统中各类管理人员D、网络系统中具体可以操作的数据19.Intranet技术主要由一系列的组件和技术构成,Intranet的网络协议核心是()A、ISP/SPX B、P PP C、TCP/IP D、SLIP20.网络管理信息系统的分析设计以()A、功能模块设计为中心B、数据分析为中心C、系统拓扑结构设计为中心D、系统规模分析为中心计算机网络技术期末复习试卷一、填空题(0.5%×30)1.传送信号的一条通道叫____信道________。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章1. 什么是模式?模式是在物体或事件上,产生的一种规律变化与自我重复的样式与过程。

在模式之中,某些固定的元素不断以可预测的方式周期性重现。

2.什么是设计模式?广义讲,软件设计模式是可解决一类软件问题并能重复使用的软件设计方案;狭义讲,设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。

是在类和对象的层次描述的可重复使用的软件设计问题的解决方案;设计模式是在一个上下文中,对一个问题的解决方案,及其能够达到的效果。

3. 设计模式四要素名称、上下文与问题、解决方案、效果●模式名称(Pattern Name)●问题(Problem):描述应该在何时使用模式。

解释了设计问题和问题存在的前因后果,可能还描述模式必须满足的先决条件;●解决方案(Solution):描述了设计的组成成分、相互关系及各自的职责和协作方式。

模式就像一个模板,可应用于多种场合,所以解决方案并不描述一个具体的设计或实现,而是提供设计问题的抽象描述和解决问题所采用的元素组合(类和对象);●效果(consequences ):描述模式的应用效果及使用模式应权衡的问题4. 设计模式分类23种设计模式:创建型:5种;结构型:7种;行为型:11种5.面向对象的四个基本方法:●抽象(Abstraction)●封装(Encapsulation)●多态(Polymorphism)●继承(Inheritance)6. 面向对象的设计原则开闭原则(OCP):对于扩展是开放的(Open for extension)。

这意味着模块的行为是可以扩展的。

当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。

也就是说,我们可以改变模块的功能。

对于修改是关闭的(Closed for modification)。

对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。

模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。

单一职责原则(SRP):定义:就一个类而言,应该仅有一个引起它变化的原因;每一个引起类变化的原因就是一个职责,当类具有多职责时,应把多余职责分离出去,分别创建一些类来完成每一个职责;每一个职责都是一个变化的轴线,当需求变化时会反映为类的职责的变化;里氏替换原则(LSP):定义:所有引用基类的地方必须能透明地使用其子类的对象里氏替换原则是继承复用的基石,只有当派生类可以替换掉其基类,而软件功能不受影响时,基类才能真正被复用,派生类也才能够在基类的基础上增加新的行为LSP本质:在同一个继承体系中的对象应该有共同的行为特征依赖倒置原则(DIP):定义:高层模块不应依赖低层模块,二者都应该依赖于抽象高层模块只应该包含重要的业务模型和策略选择,低层模块则是不同业务和策略的实现;高层抽象不依赖高层和低层模块的具体实现,最多只依赖于低层的抽象;低层抽象和实现也只依赖于高层抽象;接口隔离原则(ISP):定义:类间的依赖关系应该建立在最小的接口上。

多个和客户相关的接口要好于一个通用接口;如果一个类有几个使用者,与其让这个类载入所有使用者需要使用的所有方法,还不如为每个使用者创建一个特定接口,并让该类分别实现这些接口;接口隔离原则包含了四层重要含义:接口尽量要小;接口要高内聚;定制服务;接口设计是有限度的迪米特原则(LoD):定义:一个软件实体应当尽可能少的与其他实体发生相互作用。

每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。

迪米特法则也叫做做最少知识原则(Least Knowledge Principle,简称LKP)迪米特法则的初衷在于降低类之间的耦合。

第二章(请重点复习本章)1.策略模式策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

2.标准类图strategy3.●“开-闭”原则(OCP)●单一职责原则(SRP)●里氏替换原则(LSP)●接口隔离原则(ISP)4.设计实例及代码参考书22页效果分析优点:算法和使用算法的对象相互分离,客户程序可以在运行时动态选择算法,代码复用性好,便于修改和维护;用组合替代继承,效果更好。

若从Context直接生成子类,也可以实现对象的多种算法,但继承使子类和父类紧密耦合,使Context类难以理解、难以维护和难以扩展。

策略模式采用组合方式,使Context和Strategy之间的依赖很小,更利于代码复用;消除了冗长的条件语句序列,将不同的算法硬编码进一个类中,选择不同的算法必然要使用冗长的条件语句序列,采用策略模式将算法封装在一个个独立的Strategy类中消除了这些条件语句;算法的动态选择,Strategy模式可以提供相同行为的不同实现,客户可以根据不同的上下文从不同的策略中选择算法;缺点:客户必须了解不同的Strategy,一个客户要选择一个合适的Strategy 就必须知道这些Strategy到底有什么不同;Strategy和Context之间的通信开销加大,根据算法的需要,Context必须向每个不同的具体Strategy类实例传递不同的参数,因此Strategy接口就要传递所有这些不同参数的集合,导致Context会创建和传递一些永远用不到的参数;增加了类和对象数目,因为各种算法被抽取出来单独成类,导致了对象数目增加,这种情况在算法较多时更加严重;5.要点良好的OO设计必须具备可复用、可扩充、可维护三个特性我们常把系统中会变化的部分抽象出来封装第三章1. 观察者模式观察者模式定义了对象之间一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会接到通知并自动更新。

2. 标准类图3. 设计原则为了交互对象之间的松耦合设计而努力。

4.效果分析优点:Subject和Observer之间是松偶合的,可以各自独立改变;Subject在发送广播通知时,无须指定具体的Observer,Observer可以自己决定是否要订阅Subject的通知;高内聚、低偶合;缺陷:松偶合导致代码关系不明显,有时可能难以理解;如果一个Subject被大量Observer订阅的话,在广播通知的时候可能会有效率问题;6.要点观察者模式定义了对象之间一对多的关系主题用一个共同的接口来更新观察者观察者和可观察者之间用松耦合方式结合,可观察者不知道观察者的细节,只知道观察者实现了观察者的接口使用此模式时,可以从观察者处推或拉数据(推的方式被认为更正确)有多个观察者时,不可以依赖特定的通知次序。

第四章(请重点复习本章)1. 装饰者模式第五章(请重点复习本章)1. 工厂模式2. 抽象工厂模式第六章1. 单件模式单件模式确保一个类只有一个实例,并提供一个全局访问点。

2. 标准类图3. 单件模式处理多线程的方法a)同步-static synchronized这是保证可行的最直接方法。

不考虑性能b)急切实例化一定需要一个实例的时候可以采用该种方法c)双重检查加锁public static Singleton getInstance(){if(uniqueInstance==null){synchronized(Singleton.class){if(uniquelnstance==null){uniquelnstance=new Singleton();}}}}考虑性能的时候并且采用Java5以上的版本时使用该方法。

4. 效果分析优点对唯一实例的受控访问:因为Singleton类封装唯一实例,所以它可以严格的控制客户怎样以及何时访问它;缩小名空间:Singleton模式是对全局变量的一种改进。

它避免了那些存储唯一实例的全局变量污染命名空间;允许对操作和表示的精化:Singleton类可以有子类,而且用这个扩展类的实例来配置一个应用是很容易的。

可以用所需要的类的实例在运行时刻配置应用;缺陷不是所有的类实例化都需要实现单例;不便使用继承;5. 要点单件模式确保程序中的一个类最多只有一个实例。

单件模式提供访问这个实例的全局点。

在Java中实现单件模式需要私有的构造器、一个静态方法和一个静态变量。

如果使用多个类加载器,可能导致单件失效而产生多个实例。

如果采用Java2第5版以下的版本,双重检查加锁实现会失效。

JVM1.2及以下版本必须建立单件注册表,否则会失效。

7.Dump Question1)难道不能创建一个类,把所有的方法和变量都定义为静态,把类直接当做一个单件?如果类是自己自足的,而且不依赖于复杂的初始化,那么可以这样做。

但是静态初始化的控制权在Java手上,这么做有可能导致混乱,特别是当有许多类牵涉其中的时候。

这样做常常会造成一些微妙的、不容易发现的和初始化的次序有关的Bug。

除非你有绝对的必要使用类的单件,否则还是建议使用对象的单件,比较保险。

2)把单件类当做超类,设计出子类,究竟可不可以继承单件类?继承单件会遇到一个问题,就是构造器是私有的。

不能使用私有构造器来扩展类。

因此,必须把单件的构造器改成公开的或受保护的。

但是这样一来就不算是真正的单件了,因为别的类也可以实例化它。

如果这的把构造器的权限改变了,想要让子类能够顺利工作,基类必须实现注册表功能。

3)在那些方面全局变量比单件模式差?a)全局变量需要急切实例化,这个对象有可能非常消耗资源,而程序在一次执行中有可能没有用到它,这就造成了资源浪费。

b)全局变量可以提供全局访问。

但是不能保证只有一个实例。

c)全局变量会变相鼓励开发人员,用许多全局变量指向许多小对象来造成命名空间的污染。

第七章(请重点复习本章)1. 命令模式第八章1. 适配器模式适配器模式将一个类的接口转换成客户期望的另一个接口。

适配器让原本不兼容的类可以合作无间。

2. 标准类图3. 类适配器4.对象适配器5. 设计原则:最少知识原则。

6. 要点当需要使用一个现有的类而其接口并不符合你的需要时,就使用适配器。

当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观。

适配器改变接口以符合客户的期望。

外观将客户从一个复杂的子系统中解耦。

适配器模式有两种形式:对象适配器和类适配器,类适配器在使用过程中需要用到多重继承可以为一个子系统实现一个以上的外观。

适配器将一个对象封装起来以改变其接口;装饰者将一个对象包装起来以增加新的行为和责任;而外观将一群对象“包装起来”以简化其接口。

8.适配器模式效果分析优点:方便设计者自由定义接口,不用担心匹配问题;缺点:属于静态结构,由于只能单继承,所以不适用于多种不同的源适配到同一个目标;9.Dumb Questiona)如果外观封装了子系统的类,那么需要低层功能的客户如何接触这些类?外观没有封装子系统的类,外观只是提供简化的接口。

相关文档
最新文档