版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全国计算机技术与软件专业技术资格(水平)考试
上六個月
软件设计師
下午试卷试題壹阅讀下列阐明,回答問題1和問題2,将解答填入答題紙的對应栏内。[阐明]假设某大型商业企业由商品配送中心和连锁超市构成,其中商品配送中心包括采购、财务、配送等部门。為实現高效管理,设计了商品配送中心信息管理系统,其重要功能描述如下:1.系统接受由连锁超市提出的供货祈求,并将其记录到供货祈求记录文献。2.在接到供货祈求後,從商品库存记录文献中進行商品库存信息查询。假如库存满足供货祈求,则給配送处剪发送配送告知:否则,向采购部门发出缺货告知。3.配送处理接到配送告知後,查询供货祈求记录文献,更新商品库存记录文献,并向配送部门发送配送單,在配送货品的同步记录配送信息至商品配送记录文献。4.采购部门接到缺货告知後,与供货商洽談,進行商品采购处理,合格商品入库,并记录采购清單至采购清單记录文献、向配送处剪发出配送告知,同步告知财务部门給供货商支付货款。该系统采用构造化措施進行開发,得到待修改的数据流图如下图所示。[問題1]使用[阐明]中的詞語,給出上图中外部实体E1至E4的名称和数据存储D1至D4的名称。答:E1:财务部门E2:采购部门E3:连锁超市E4:配送部门D1:采购清單记录文献D2:商品库存记录文献D3:商品配送记录文献D4:供货祈求记录文献[問題2]以上数据流图中存在到处錯误数据流,請指出各自的起點和终點;若将上述四条錯误数据流删除,為保证数据流图的對的性,应补充三条数据流,請給出所补充数据流的起點和终點。(起點和终點請采用上述数据流图中的符号或名称)答:錯误数据流补充的数据流试題壹分析本題考察DFD的分析与设计,問題壹重要考察DFD中的外部实体和数据存储,由于在題干中已經提到“系统接受由连锁超市提出的供货祈求,并将其记录到供货祈求记录文献”,因此可以明确出“连锁超市”外部实体和“供货祈求记录文献”数据存储:對应到DFD图中為E3和D4。描述中的第二项提出“從商品库存记录文献中進行商品库存信息查询。假如库存满足供货祈求,则給配送处发送配送告知;否则,向采购部门发出缺货告知”,由于配送告知需要发送到采购部门,因此采购部门将成為系统的外部实体;同步,商品库存记录文献可以提供库存信息,因此DFD图中E2和D2分别為采购部门和商品配送记录文献。第三项需求“配送处理接到配送告知後,查询供货祈求记录文献,更新商品库存记录文献,并向配送部门发送配送單,在配送货品的同步记录配送信息至商品配送记录文献”,因此配送处理需要查询供货祈求记录文献,更新商品库存记录文献与商品配送记录文献,因此D3為商品配送记录文献;采购处理需要记录采购清單同步告知财务部门,因此E1应當為财务部门,D1為采购清單记录文献,剩余的E4则為配送部门。DFD中出現的錯误数据流為:E1到E2,E1与E2的数据流不属于系统的范围;D3到E4,多出的数据流;D2到采购处理,数据流方向錯误;D4到供货祈求处理,数据流方向錯误。需要补充的数据流為:E2到采购处理,由于E2是采购部门,采购部门需要給采购处提供入库商品信息;采购处到D2需要壹条数据流,由于采购处理需要更改库存信息;供货祈求处理到D4需要壹条数据流,由于供货祈求处理需要记录供货祈求信息。试題二阅讀下列阐明,回答問題1至問題3,将解答填入答題紙的對应栏内。[阐明]某集团企业拥有多种大型连锁商場,企业需要构建壹种数据库系统以以便管理其业务运作活動。[需求分析成果]1.商場需要记录的信息包括商場编号(编号唯壹),商場名称,地址和联络電话。某商場信息如下表所示。商場信息表2.每個商場包具有不壹样的部门,部门需要记录的信息包括部门编号(集团企业分派),部门名称,位置分布和联络電话。某商場的部门信息如下表所示。部门信息表3.每個部门雇用多名员工处理平常事务,每名员工只能從属于壹种部门(新進员工在培训期不從属于任何部门)。员工需要记录的信息包括员工编号(集团企业分派),姓名,岗位,電话号码和工资。员工信息如下表所示。员工信息表4.每個部门的员工中有壹名是經理,每個經理只能管理壹种部门,系统需要记录每個經理的任职時间。[概念模型设计]根据需求阶段搜集的信息,设计的实体联络图和关系模式(不完整)如下:实体联络图[关系模式设计]商場(商場编号,商場名称,地址,联络電话)部门(部门编号,部门名称,位置分布,联络電话,(a))//a:商場编号员工(员工编号,员工姓名,岗位,電话号码,工资,(b))//b:部门编号經理((c),任职時间)//c:员工编号[問題1]根据問題描述,补充四個联络,完善图2—1的实体联络图。联络名可用联络1、联络2、联络3和联络4替代,联络的类型分為1:1、1:n和m:n。答:[問題2]根据实体联络图,将关系模式中的空(a)~(c)补充完整,并分别給出部门、员工和經理关系模式的主键和外键。[問題3]為了使商場有紧急事务時能联络到轮休的员工,规定每位员工必须且只能登记壹位紧急联络人的姓名和联络電话,不壹样的员工可以登记相似的紧急联络人。则在图2—1中還需添加的实体是(1),该实体和图2-1中的员工存在(2//登记)联络(填写联络类型)。給出该实体的关系模式。答:紧急联络人(员工编号,姓名,联络電话)试題二分析本題考察数据库概念构造设计及概念构造向逻辑构造转换的過程。此类題目规定考生认真阅讀題目對現实問題的描述,通過度类、汇集和概括等措施從中确定实体及其联络。題目已經給出了4個实体,需要根据需求描述給出实体间的联络。[問題1]由“每個商場包具有不壹样的部门”可知商場与部门间為1:m联络;由“每個部门雇用了多名员工处理平常事务”可知部门与员工间為1:p联络;由“每個部门的员工中有壹种經理……每個經理只能管理壹种部门”可知部门与經理间為1:1联络,并且员工是經理的超类型,經理是员工的子类型。[問題2]商場的属性信息中,商場编号由集团企业分派,不會反复,可作為商場的主键属性;部门的属性信息中,部门编号由集团企业分派,不會反复,可作為部门的主键属性,商場与部门的联络需要通過将商場的主键(商場编号)加入到部门中来体現;员工的属性信息中,员工编号由集团企业分派,不會反复,可作為员工的主键属性,部门与员工的联络需要通過将部门的主键(部门编号)加入到员工中来体現;經理除了包括员工的属性信息外,還需要任职時间属性。完整的关系模式如下:商場(商場编号,商場名称,地址,联络電话)部门(部门编号,部门名称,位置分布,联络電话,商場编号)员工(员工编号,姓名,岗位,電话号码,工资,部门编号)經理(员工编号,任职時间)[問題3]员工的紧急联络人信息通過添加紧急联络人关系来实現,由“每位员工必须且只能登记壹位紧急联络人的姓名和联络電话”,但也許存在多位员工登记同壹位家眷,可知员工与家眷间為n:1联络:由“不壹样员工可以登记相似的紧急联络人”可知,员工编号可作為家眷的主键属性。因此需要添加的关系模式如下:紧急联络人(员工编号,姓名,联络電话)参照答案[問題1](图中的m、n也可用*表达,對联络名称可不做规定,但不能出現重名)[問題2](a)商場编号(b)部门编号(c)员工编号部门关系模式的主键:部门编号外键:商場编号员工关系模式的主键:员工编号外键:部门编号經理关系模式的主键:员工编号外键:员工编号[問題3](d)紧急联络人(e)1:n关系模式:紧急联络人(员工编号,姓名,联络電话)试題三阅讀下列阐明和图,回答問題1至問題3,将解答填入答題紙的對应栏内。[阐明]某银行计划開发壹种自動存提款机模拟系统(ATMSystem)。系统通過讀卡器(CardReader)讀取ATM卡;系统与客户(Customer)的交互由客户控制台(Customer-Console)实現;银行操作员(Operator)可控制系统的启動(SystemStartup)和停止(SystemShutdown):系统通過网络和银行系统(Bank)实現通信。當讀卡器判断顾客已将ATM卡插入後,创立會话(Session)。會话開始後,讀卡器進行讀卡,并规定客户输入個人验证码(PIN)。系统将卡号和個人验证码信息送到银行系统進行验证。验证通過後,客户可從菜單项选择择如下事务(Transaction):1.從ATM卡账户取款(Withdraw);2.向ATM卡账尸存款(Deposit);3.進行转账(Transfer):4.查询(Inquire)ATM卡账户信息。壹次會话可以包括多种事务,每個事务处理也會将卡号和個人验证码信息送到银行系统進行验证。若個人验证码錯误,则转個人验证码錯误处理(InvalidPINProcess)。每個事务完毕後,客户可选择继续上述事务或退卡。选择退卡時,系统弹出ATM卡,會话結束。系统采用面向對象措施開发,使用UML進行建模。系统的顶层用例图如图3-1所示,壹次會话的序列图(不考虑验证)如图3-2所示。[問題1]根据[阐明]中的描述,給出图3-1中A1和A2所對应的参与者,U1至U3所對应的用例,以及该图中空(1)所對应的关系。(U1至U3的可选用例包括:Session、Transaction、InsertCard、InvalidPINProcess和Transfer)答:A1:CustomerA2:BankU1:SessionU2:InvalidPINProcessU3:Transaction(1):<<extend>>[問題2]根据[阐明]中的描述,使用消息名称列表中的英文名称,給出图3-2中6~9對应的消息。答:6:readPIN()7:PIN8:creat(atm,this,card,pin)9:preformTransaction()[問題3]解释图3-1中用例U3和用例Withdraw、Deposit等四個用例之间的关系及其内涵。答:Transaction是壹种抽象泛化用例,具有其他事务类型共有的属性和行為,每個详细的事务类型继承它,并实現适合自已的特定的操作。试題三分析本題波及面向對象系统開发時的UML用例图、序列图以及用例之间的关系。[問題1]构建用例图時,常用的方式是先识别参与者,然後确定用例以及用例之间的关系。识别参与者時,考察和系统交互的人员和外部系统。本題中,与系统交互的人员包括客户(Customer)和银行操作员(Operator),与本模拟系统交互的外部系统包括银行。系统(Bank)。考察用例時,通過判断哪壹种特定参与者发起或者触发了与系统的哪些交互,宋识别用例并建立和参与者之间的关联。考察用例之间的关系時,<<include>>(包括)定义了用例之间的包括关系,用于壹种用例包括另壹种用例的行為的建模;假如可以從壹种用例的执行中,在需要時转向执行另壹种用例,执行完返回之前的用例继续执行,用例间即存在<<extend>>关系。本題中,客户壹旦插卡成功,系统就创立會话(Session),會话中可以执行顾客從菜單项选择择的Withdraw、Deposit、Transfer和Inquire等事务(Transaction)。由图中U3和Withdraw之间的扩展关系,可知U3為Transaction;又由U1和U3之间的<<include>>关系,得知U1為Session,進而鉴定图中A1為Customer,A2為Bank。每個事务处理也會将卡号和個人验证码信息送到银行系统進行验证,若個人验证码錯误,则转個人验证码錯误处理(1nvalidPINProcess,图中U2),因此(1)处应填<<extend>>。[問題2]序列图是場景的图形化表达,描述了以時间次序组织的對象之间的交互活動。构造序列图時遵照如下指导原则:确定次序图的范围,描述這個用例場景或壹种环节;绘制参与者和接口类,假如范围包括這些内容的话:沿左手边列出用例环节;對控制器类及必须在次序中协作的每個实体类,基于它拥有的属性或已經分派給它的行為绘制框;為持续类和系统类绘制框;绘制所需消息,并把每条消息指到将实現响应消息的责任的类上;添加活動条指示每個對象实例的生命期;為清晰起見,添加所需的返回消息;假如需要,為循环、可选环节和替代环节等添加框架。本題中,根听阐明中的描述,從ATM机判断卡已插入(cardInserted())開始會话,即為目前ATM创立會话(create(this))并開始执行會话(performSession()):讀卡器讀卡(readCard())获得ATM卡信息(card),然後從控制台讀取個人验证码输入(readPIN(),图中標号6处)并获得個人验证码信息(PIN,图中標号7处):然後根据顾客选择启動并执行事务,即為目前會话创立事务(creat(atm,this,card,pin),图中標号8处)和执行事务(performTransaction(),图中標号9处):可以选择继续执行某個事务(doAgain)循环,或者选择退卡(ejectCard())。[問題3]用例之间的继承关系表达子类型“是壹种”父类型。其中父类型壹般是壹种抽象泛化用例,具有子类型共有的属性和行為,每個详细的子类型继承它,并实現适合自已的特定的操作。本題中Transaction和Withdraw、Deposit等四個用例之间的关系即為继承关系,Transaction即是壹种抽象泛化用例,具有其他事务类型共有的属性和行為,每個详细的事务类型继承它,并实現适合自已的特定的操作。参照答案[問題1]A1:CustomerA2:BankU1:SessionU2:InvalidPINProcessU3:Transaction(1):<<extend>>[問題2]6:readPIN()7:PIN8:creat(atm,this,card,pin)9:performTransaction()[問題3]Transaction是壹种抽象泛化用例,具有其他事务类型共有的属性和行為,每個详细的事务类型继承它,并实現适合自已的特定的操作。试題四阅讀下列阐明,回答問題1和問題2,将解答填入答題紙的對应栏内。[阐明]現需在某都市中选择壹种小区建壹种大型超市,使该都市的其他小区到该超市的距离總和最小。用图模型表达该都市的地图,其中顶點表达小区,边表达小区间的路线,边上的权重表达该路线的長度。現设计壹种算法来找到该大型超市的最佳位置:即在給定图中选择壹种顶點,使该顶點到其他各顶點的最短途径之和最小。算法首先需规定出每個顶點到其他任壹顶點的最短途径,即需要计算任意两個顶點之间的最短途径;然後對每個顶點,计算其他各顶點到该顶點的最短途径之和;最终,选择最短途径之和最小的顶點作為建大型超市的最佳位置。[問題1]本題采用F10y-Warshall算法求解任意两個顶點之间的最短途径。已知图G的顶點集合為V={1,2,…,n),W={Wjj}n*n。為权重矩阵。设為從顶點i到顶點j的壹条最短途径的权重。當k=0時,不存在中间顶點,因此=Wij:當k>0時,该最短途径上所有的中间顶點均属于集合{1,2,…,k}。若中间顶點包括顶點k,则;若中间顶點不包括顶點k,则。于是得到如下递归式。由于對于任意途径,所有的中间顶點都在集合{1,2,…,n}内,因此矩阵給出了任意两個顶點之间的最短途径,即對所有I,j∈V,表达顶點i到顶點j的最短途径。下面是求解该問題的伪代码,請填充其中空缺的(1)至(6)处。伪代码中的重要变量阐明如下:W:权重矩阵n:图的顶點個数SP:最短途径权重之和数组,SP[i]表达顶點i到其他各顶點的最短途径权重之和,i從1到nmin_SP:最小的最短途径权重之和min_V:具有最小的最短途径权重之和的顶點i:循环控制变量j:循环控制变量k:循环控制变量LOCATE-SHOPPINGMALL(W,n)1D(0)=W2for(1)//k=1ton3fori=1ton4forj=1ton6(2)//7else8(3)//9fori=1ton10SP[i]=011forj=1ton12(4)//SP[i]=SP[i]+13minSP=SP[1]14(5)//minv=115fori=2ton16ifminSP>SP[i]17minSP=SP[i]18minv=i19return(6)//minv[問題2][問題1]中伪代码的時间复杂度為(7)(用O符号表达)。//(7)O(n3)试題四分析本題考察的是算法的设计和分析技术。[問題1]本問題考察算法流程。第(1)空表达主循环,k是循环控制变量,故第(1)空填k=1ton。第(2)和(3)空根据題意和递归式,可分别得到答案為)和。计算了任意两個顶點之间的最短途径之後,對每個顶點,開始记录其到所有其他顶點的最短途径之和,因此第(4)空填SP[i]=SP[i]+。第13和第14行初始化,假设最小的到所有其他顶點的最短途径之和為第壹种顶點的最小途径之和,大型超市的最佳位置為第壹种顶點,故第(5)空填minv=1。最终规定返回大型超市的最佳位置,即到所有其他顶點的最短途径之和最小的顶點,故第(6)空填minv。[問題2]本問題考察[問題门中的伪代码第2~8行,计算任意两點之间的最短途径,有三重循环,故時间复杂度為O(n3)。第9~12行,计算每個點到任意其他點的最短途径之和,有两重循环,故時间复杂度為O(n2)。第15~18行,在所有點的最短途径之和中找到最小的最短途径之和,時间复杂度為O(n)。故算法總的時间复杂度為O(n3)。参照答案[問題1](1)k=1ton(2)(3)(4)SP[i]=SP[i]+(5)min_v=1(6)min_v[問題2](7)O(n3)试題五阅讀下列阐明和C函数代码,将应填入(n)处的字句写在答題紙的對应栏内。[阐明]對二叉树進行遍历是二叉树的壹种基本运算。遍历是指按某种方略访問二叉树的每個节點,且每個节點仅访問壹次的過程。函数InOrder()借助栈实現二叉树的非递归中序遍历运算。设二叉树采用二叉链表存储,节點类型定义如下:typedefstructBtNode{ElemTypedata;/*节點的数据域,ElemType的详细定义省略*/structBtNode*lchild*rchild;/*节點的左、右孩子指针域*/}BtNode,*BTree;在函数InOrder()中,用栈暂存二叉树中各個节點的指针,并将栈表达為不含頭节點的單向链表(简称链栈),其节點类型定义如下:typedefstructStNode{/*链栈的节點类型*/BTreeelem;/*栈中的元素是指向二叉链表节點的指针*/structStNode*link;}StNode;假设從栈顶到栈底的元素為en、en-1…、e1,则不含頭节點的链栈示意图如图5-1所示。图5-1链栈示意图[C函数]intInOrder(BTreeroot)/*实現二叉树的非递归中序遍历*/{BTreeptr;/*ptr用于指向二叉树中的节點*/StNode*q;/*q暂存链栈中新创立或待删除的节點指针*/StNode*stacktop=NULL;/*初始化空栈的栈顶指针stacktop*/Ptr=root;/*ptr指向二叉树的根节點*/while((1)ptr!=NULL||stacktop!=NULL){while(ptr!=NULL){q=(StNode*)malloc(sizeof(StNode));if(q==NULL)return-1;q->elem=ptr;(2)q->link=stacktop;stacktop=q;/*stacktop指向新的栈顶*/ptr=(3)ptr->lchild;/*進入左子树*/}q=stacktop;(4)smcktop=stacktop->link,或stacktop=q->link;/*栈顶元素出栈*/visit(q);/*visit是访問节點的函数,其详细定义省略*/ptr=(5)q->elem->rchild;/*進入右子树*/free(q);/*释放原栈顶元素的节點空间*/}return0;}/*Inorder*/试題五分析本題考察基本数据构造和C語言程序设计能力。對非空二叉树進行中序遍历的措施是:先中序遍历根节點的左子树,然後访問根节點,最终中序遍历根节點的右子树。用递归方式描述的算法如下:voidIn_order_Traversing(BiTreeroot){//root是指向二叉树根节點的指针if(root!=NULL){In_order_Traversing(root->LeftChild);visit(root);In_order_Traversing(root—>RightChild);}}從以上算法的执行過程可知,從树根出发進行遍历時,递归调用In_Order_Traversing(root->LeftChild)使得遍历過程沿著左孩子分支壹直走向下层节點,直到抵达二叉树中最左下方的节點(设為f)的空左子树為止,然後返回f节點,再由递归调用In_Order_Traversing(root->RightChild)進入f的右子树,并反复以上過程。在递归算法执行過程中,辅助实現递归调用和返回处理的控制栈实际上起著保留從根节點到目前节點的途径信息。用非递归算法实現二叉树的中序遍历時,可以由壹种循环語句实現從指定的根节點出发,沿著左孩子分支壹直到頭(抵达壹种没有左子树的节點)的处理,從根节點到目前节點的途径信息(节點序列)可以明确构造壹种栈来保留。本題目的难點在于将栈的实現和使用混合在壹起来处理,并且栈采用單链表存储构造。下面分析題中給出的代码。空(1)是遍历的条件之壹,由于此外壹种条件stacktop!=ULL初始時是不成立的,因此空(1)所示的条件必须满足,由于是對非空二叉树進行遍历,显然该条件代表二叉树非空,即ptr!=ULL或其等价表达形式。临時指针ptr初始時指向整個二叉树的根节點,此後用如下代码表达壹直沿左孩子指针链向下走的处理,临時指针q用于在链栈中加入新元素時使用。处理思绪是:若目前节點有左子树,则将目前节點的指针存入栈中,然後進入目前节點的左子树。入栈時,先申請元素在链栈中的节點空间,然後设置节點数据域的值(即目前节點的指针),最终将新申請的节點加入链栈首部。while(ptr!=ULL){q=(StNode*)malloc(sizeof(StNode));/*為新入栈的元素创立节點*/if(q==NULL)/*若创立新节點失败,则退出*/return-1;q->elem=ptr;/*在栈顶保留指向目前节點的指针*/q->link=stacktop;/*新节點加入栈顶*/stacktop=q;/*更新栈顶指针,即stacktop指向新的栈顶*/ptr=ptr->1child/*進入目前节點的左子树*/}當上述過程進入壹棵空的子树時(ptr為空指针),循环結束。此後,应當從空的子树返回其父节點并進行访問。由于進入空的左子树前已将其父节點指针压入栈中,因此,栈顶元素即為该父节點,對应的处理就是弹栈。對应地,在链栈中要删除表頭节點并释放节點空间。q=stacktop;/*q指向链栈中需要删除的节點,即栈顶元素*/stack=stacktop->link;/*栈顶元素出栈*/visit(q);/*访問节點*/free(q);/*释放节點空间*/由于還需要通過q指针進入被删除节點的右子树,因此,释放节點空间的操作free(q)操作之前,使ptr指向q所指节點的右子树指针,以得到被删除节點的数据域信息,即空(5)所在語句ptr=q->elem->rchild。指针是C語言中灵活且非常强大的工具,与否纯熟掌握C語言的判断条件之壹就是對指针的理解和使用。软件设计師需要纯熟掌握這些内容。参照答案(1)ptr!=NULL,或ptr!=0,或ptr(2)q->link=stacktop(3)ptr->lchild(4)smcktop=stacktop->link,或stacktop=q->link(5)q->elem->rchild试題六阅讀下列阐明和C++代码,将应填入(n)处的字句写在答題紙的對应栏内。[阐明]現欲实現壹种图像浏览系统,规定该系统可以显示BMP、JPEG和GIF三种格式的文献,并且可以在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF三种格式的文献解析為像素矩阵,然後将像素矩阵显示在屏幕上。系统需具有很好的扩展性以支持新的文献格式和操作系统。為满足上述需求并減少所需生成的子类数目,采用桥接(Bridge)设计模式進行设计,所得类图如下图所示。采用该设计模式的原因在于:系统解析BMP、GIF与JPEG文献的代码仅与文献格式有关,而在屏幕上显示像素矩阵的代码则仅与操作系统有关。[C++代码]classMatrix{//多种格式的文献最终都被转化為像素矩阵//此处代码省略};classImagelmp{public:virtualvoiddoPaint(Matrixm)=0;//显示像素矩阵m};classWinImp:publicImageImp{public:voiddoPaint(Matrixm){/*调用Windows系统的绘制函数绘制像素矩阵*/)};classLinuxImp:publicImageImp{public:voiddoPaint(Matrixm){/*调用Linux系统的绘制函数绘制像素矩阵*/}};classImage{public:voidsetImp(ImageImp*imp){(1)thisimp=imp;}virtualvoidparseFile(stringfileName)=0;protected:(2)ImageImp*imp;};classBMP:publicImage{public:voidparseFile(stringfileName){//此处解析BMP文献并获得壹种像素矩阵對象m(3)imp->doPaint(m);//显示像素矩阵m}};classGIF:publicImage{//此处代码省略};classJPEG:publicImage{//此处代码省略};voidmain(){//在Windows操作系统上查看demo.bmp图像文献Image*imagel=(4)newBMP();ImageImp*imageImpl=(5)newWinImp();(6)imagel->setImp(imageImpl);imagel->parseFile("demo.bmp");}(7)17現假设该系统需要支持10种格式的图像文献和5种操作系统,不考虑类Matrix,若采用桥接设计模式则至少需要设计(7)個类。//(7)17试題六分析根据題目描述,在设计该图像显示系统時重要分為两個环节:壹是讀取多种文献并将文献内容转换成像素矩阵,由于多种图片格式不壹样,因此需要针對每壹种图片格式编写文献讀取代码,而该代码与操作系统平台無关。将像素矩阵显示到屏幕上時,由于和操作系统有关,因此需要把该代码和讀取文献代码相分离。设计中的Image类表达抽象的图像概念,Image类中就包括了讀取文献接口和设置实現平台接口:Image的子类BMP、GIF和JPEG分别负责讀取多种不壹样格式的文献:ImageImp的重要任务是将像素矩阵显示在屏幕上,因此,它存在两個子类,分别实現Windows系统和Linux系统上的图像显示代码。空缺(1)处重要是设置将在哪個平台上進行实現,因此该处应當存储参数所传递的對象,由于该类的组员变量也是imp,与参数相似,因此需要填写this->imp;同理,该组员变量的类型和参数的类型应當保持相似,空(2)处应當填写ImageImp;空(3)处需要根据imp组员变量存储的实現對象来显示图像:在空(4)处需要生成壹种BMP對象;由于需要在Windows平台上实現,因此空(5)处需要生成壹种WinImp對象,同步,還需设置该BMP對象,应采用WinImp對象来实現显示。采用桥接模式可以将文献分析代码和图像显示代码分解在不壹样的类层次构造中,假如不考虑中间使用的Matrix等类,那么最终需要设计的类包括2個父类,對应文献格式子类,對应操作系统平台类,因此10种图像格式和5种操作系统需要17個类。参照答案(1)this->imp(2)ImageImp(3)imp->doPaint(m)(4)newBMP()(5)newWinImp()(6)imagel->setImp(imageImpl)(7)17试題七阅讀下列阐明和Java代码,将应填入(n)处的字句写在答題紙的對应栏内。[阐明]現欲实現壹种图像浏览系统,规定该系统可以显示BMP、JPEG和GIF三种格式的文献,并且可以在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF三种格式的文献解析為像素矩阵,然後将像素矩阵显示在屏幕上。系统需具有很好的扩展性以支持新的文献格式和操作系统。為满足上述需求并減少所需生成的子类数目,采用桥接(Bridge)设计模式進行设计,所得类图如下图所示。采用该设计模式的原因在于:系统解析BMP、GIF与JPEG文献的代码仅与文献格式有关,而在屏幕上显示像素矩阵的代码则仅与操作系统有关。[Java代码]classMatrix{//多种格式的文献最终都被转化為像素矩阵//此处代码省略};abstractclasslmageImp{publicabstractvoiddoPaint(Matrixm);//显示像素矩阵m};classWinImpextendsImageImp{publicvoiddoPaint(Matrixm){/*调用Windows系统的绘制函数绘制像素矩阵*/}};classLinuxlmpextendsImageImp{publicvoiddoPaint(Matrixm){/*调用Linux系统的绘制函数绘制像素矩
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 缤纷社团课程设计
- 一年级下册科学《空气是什么样的》教学设计-沪教科技版新教材4.2课
- 衬砌管片课程设计
- 小学六年级科学影子四季变化规律探究教学设计
- 高中一年级信息技术“我们身边的数据”两课时教学设计
- 初中八年级地理中考一轮复习教学设计:走近国家-埃及与法国
- 初中八年级地理《多元文化的交融与经济发展》教学设计
- 【知识清单】初中地理八年级:三江源地区与甘肃乡土地理核心速记
- 高二化学选择性必修二物质结构与性质考前整合教学设计
- 小学三年级综合实践活动教学设计:广告知多少-在生活中发现广告的语言与智慧
- 2027届高考语文一轮复习:正确理解运用实词虚词
- 2026盐城市国资委直属事业单位公开选调工作人员考试参考题库及答案详解
- 2026 年秋季开学大学军训网络文明行为教育课件
- 2026年外研版五年级英语上册单词表衡水体描红英语字帖(三年级起点)
- 某机械厂采购管理办法
- 2026中国智能仓储物流机器人系统集成市场发展白皮书
- 2026-2030中国暖宫带市场销售格局与前景需求潜力研究研究报告
- 放射科肺部CT影像评估培训指南
- 24J113-1 内隔墙-轻质条板(一)
- GB/T 16432-2025康复辅助器具分类和术语
- 人教版小学三年级体育健康上册全册教案
评论
0/150
提交评论