问答题
阅读下列说明,回答问题。
【说明】
现有事务T
1
,T
2
、L
3
它们对数值型数据A执行的操作分别如下:
T
1
;将A加1。
T
2
:将A加倍。
T
3
:输出A的值,并将A置为1。
【问题1】
假设T
1
、T
2
、T
3
可以并发执行。若A的初值为0,那么存在多少种可能的正确结果
【参考答案】
根据排列组合原理,三个事务一共有6种排列结果:
T
1
→T
2
→T
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
点击查看答案
<上一题
目录
下一题>
热门
试题
问答题
【说明】 某绘图系统存在point、line、square三种图元,它们具有Shape接口,图元的类图关系如图13-12所示。现要将circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由 Shape派生而来的,它提供的接口不能被系统直接使用。代码13-2既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码13-3根据用户指定的参数生成特定的图元实例,并对之进行显示操作。绘图系统定义的接口与XCircle提供的显示接口及其功能如表13-5所示。 表13-5接口及其功能ShapeXCircle功能display()DisplayIt()显示图元【代码13-2】class Circle (1) { private (2) pxc; public Circle(){ pxc=new (3) ; } public void display(){ pxc. (4) ; }}【代码13-3】public class Factory{ public (5) getShape Instance(int tyoe){ 生成特定类实例 switch(type){ case 0: return new point(); case 1: return new Rectangle(); case 2: return new line(); case 3: return new Circle(); default: return null } }};public class App{ public static viod main(String argv[){ if(argv. length!=1){ system. out. println( error parameters! ); Return; } int type=(new Integer(argv[0)). intValue(); Factory factory=new Factory(); shape s; s=factory. (6) ; if(s==null){ system.out. println( Error get instance! ); Return; } s.display(); return; }}
点击查看答案
问答题
【说明】在一公文处理系统中,开发者定义了一个公文结构OfficeDoc,其中定义了公文应该具有的属性。当公文的内容或状态发生变化时,与之相关联的DocExplorer结构的值都需要发生改变。一个OfficeDoc结构能够关联一组DocExplorer结构。当OfficeDoc结构的内容或状态发生变化时,所有与之相关联的DocExplorer结构都将被更新,这种应用被称为观察者模式。以下代码采用C语言实现,能够正确编译通过。【代码13-4】# include<stdio.h># define OBS_MAXNUM 20 *一个OfficeDoc变量最多能够关联的DocExplorer变量的个数* typedef void( (1) )(struc OffieeDoc*, struct DoeExplorer*)I;struct DocExplorer{func update; *DocExplorer结构采用的更新函数* *其它的结构字段省略* };struet OffieeDoc{(2) myObs[OBS_MAXNUM; *存储所有与OfficeDoc相关联的DocExplorer结构指针* int index; *与OffieeDoc结构变量相关联的DoeExplorer结构变量的个数* };void attaeh(struct OfficeDoc*doc, struct DocExplorer*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, struct DocExplorer*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[ (3) ];doc->myObs[doc->index-1]=NULL;doc->index——;breack;}}}void updatel(struct OfficeDoe*doe, struct DoeExplorer *ob){ *更新ob结构的值,更新代码省略* } void update2(struct OffieeDoc*doc,struet DocExplorer *ob){ *更新ob结构的值,更新代码省略* }void notifyObs(struct OfficeDoc* doc){ *当doc结构的值发生变化时,通知与之关联的所有DocExplorer结构变量* int loop;for(loop=0; loop<doc->index; loop++){(doc->myObs[loop)->update( (4) );}}void main(){struct OfficeDoc doc; *定义一了OfficeDoe变量* struct DocExplorer 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对象* *其它代码省略* (5) ; *通知与OfficeDoe相关的所有DoeExploer变量* return;}
点击查看答案
相关试题
【问题3】 类通常不会单独存在,因此当对...
【问题3】 在A的初值给定为0时,是否存...
【问题3】请至少写出4种服务器端实现技术。
【问题2】 请指出图13-9中(1)~(...
【问题3】根据系统功能和数据流图填充下列...