试题查看

首页 > 软件水平考试 > 试题查看
【分析解答题】

【说明】在一公文处理系统中,开发者定义了一个公文结构OfficeDoc,其中定义了公文应该具有的属性。当公文的内容或状态发生变化时,与之相关联的DocExplorer结构的值都需要发生改变。一个OfficeDoc结构能够关联一组DocExplorer结构。当OfficeDoc结构的内容或状态发生变化时,所有与之相关联的DocExplorer结构都将被更新,这种应用被称为观察者模式。以下代码采用C语言实现,能够正确编译通过。【代码13-4】# include<stdio.h># define OBS_MAXNUM 20 /*一个OfficeDoc变量最多能够关联的DocExplorer变量的个数*/typedef void({{U}} (1) {{/U}})(struc OffieeDoc*, structDoeExplorer*)I;structDocExplorer{ func update;/*DocExplorer结构采用的更新函数*/ /*其它的结构字段省略*/ };struet OffieeDoc{ {{U}} (2) {{/U}}myObs[OBS_MAXNUM

; /*存储所有与OfficeDoc相关联的DocExplorer结构指针*/ int index;/*与OffieeDoc结构变量相关联的DoeExplorer结构变量的个数*/};void attaeh(struct OfficeDoc*doc, structDocExplorer*ob){ /*关联Observer结构ob与OffieeDoe结构doe*/ int loop=0; if(doc->index>=OBS_MAXNUM||ob==NULL)return; for(loop=0, loop<doc->index; loop++) if(doc->myObs[loop]==ob)return; doc->myObs[doe->index]=ob; doc->index++;}void detaeh(struct OfficeDoc*doc, structDocExplorer*ob){ /*解除doc结构与ob结构间的关联*/ int loop; if(ob==NULL)return; for(loop=0;loop<doc->index; loop++){ if(doe->myObs[loop]==ob){ if(loop<=doc->index-2) doc->myObs[loop]=doc->myObs[{{U}} (3) {{/U}}]; doc->myObs[doc->index-1]=NULL; doc->index——; breack; } }}void updatel(struct OfficeDoe*doe, structDoeExplorer *ob){/*更新ob结构的值,更新代码省略*/} void update2(struct OffieeDoc*doc,struetDocExplorer *ob){/*更新ob结构的值,更新代码省略*/}void notifyObs(struct OfficeDoc* doc){ /*当doc结构的值发生变化时,通知与之关联的所有DocExplorer结构变量*/ int loop; for(loop=0; loop<doc->index; loop++){ (doc->myObs[loop
)->update({{U}} (4) {{/U}}); }}void main(){ struct OfficeDoc doc; /*定义一了OfficeDoe变量*/ structDocExplorer explorer1, explorer2; /*定义两个DocExplorer变量*/ /*初始化与OfficeDoc变量相关的DocExplorer变量个数为0*/ doC、index=0; explorer1.update=update1; /*设置explorer1变量的更新函数*/ explorer2. update=update2; /*设置explorer2变量的更新函数*/ attach(&doc, &explorer1); /*关联explorer1与doc对象*/ attach(&doc, &explorer2); /*关联explorer2与doc对象*/ /*其它代码省略*/ {{U}} (5) {{/U}}; /*通知与OfficeDoe相关的所有DoeExploer变量*/ return;}
查看答案解析

参考答案:

正在加载...

答案解析

正在加载...

根据网考网移动考试中心的统计,该试题:

0%的考友选择了A选项

0%的考友选择了B选项

0%的考友选择了C选项

0%的考友选择了D选项

你可能感兴趣的试题

【说明】某绘图系统存在point、line、square三种图元,它们具有Sha{{B}}阅读下列说明,回答问题。{{/B}}【说明】现有事务T1,T2、L3它{{B}}阅读下列说明和数据流图,回答问题1至问题3。将解答填入对应栏内。{{/{{B}}阅读下列说明及图13-8和图13-9,回答问题,将解答填入对应栏内。{{{B}}阅读以下说明及图,回答问题。{{/B}}【说明】Web页面与数据库的连{{B}}阅读下列说明,回答问题。{{/B}}【说明】现有事务T1,T2、L3它