阅读以下说明和C++代码,将应填入(n)处。[说明]在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组 DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的 DocExplorcr对象都将得到通知,这种应用被称为观察者模式。以下代码写在一个C++源文件中,能够正确编译通过。[C++代码]include <iostream>const OBS_MAXNUM=20;//最多与OfficeDoc对象相关联的DocExplorer对象的个数(1);class DocExplorer{ //关注OfficeDoc公文对象的类public:DocExplorer( (2) *doc); //构造函数(3) void update(OfficeDoc *doc)=0;//更新自身状态的函数//其他相关属性和方法省略};class OfficeDoc{ //公文类private:DocExplorer *myObs[OBS_MAXNUM];//关注此公文类的DocExplorer类对象指针数组int index; //与OfficeDoc对象关联的DocExplorer对象的个数public:OfficeDoe()index=0;}void attach(DocExplorer *o){//将一DoeExplorer对象与OfficeDoe对象相关联if(index >=OBS_MAXNUM ||o=NULL)return;for(int loop=0; loop<index; loop++)if(myObs[loop]==o) return;myObs[index]=o;index++;}void detaeh(DocExplorer *o){//接触某DoeExplorer对象与OfficeDoc对象的关联if(0==NULL) return;for(int loop=0; loop<index; loop++){if(myObs[loop]==o){if(loop<=index-2)myObs[loop]=myObs[index-1];myObs[index-1]=NULL;index--;break;}}}private:void notifyObs(){ //通知所有的DocExplorer对象更改自身状态for(int loop=0; loop<index; loop++){myObs[loop]->(4); //DocExplorer对象更新自身状态}}//其他公文类的相关属性和方法};DocExplorer::DocExplorer(OfficeDoc *doc){//DocExplorer 类对象的构造函数doc->(5); //将此DocExplorer对象与doc对象相关联}

阅读以下说明和C++代码,将应填入(n)处。

[说明]

在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组 DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的 DocExplorcr对象都将得到通知,这种应用被称为观察者模式。以下代码写在一个C++源文件中,能够正确编译通过。

[C++代码]

include <iostream>

const OBS_MAXNUM=20;//最多与OfficeDoc对象相关联的DocExplorer对象的个数

(1);

class DocExplorer{ //关注OfficeDoc公文对象的类

public:

DocExplorer( (2) *doc); //构造函数

(3) void update(OfficeDoc *doc)=0;//更新自身状态的函数

//其他相关属性和方法省略

};

class OfficeDoc{ //公文类

private:

DocExplorer *myObs[OBS_MAXNUM];

//关注此公文类的DocExplorer类对象指针数组

int index; //与OfficeDoc对象关联的DocExplorer对象的个数

public:

OfficeDoe()

index=0;

}

void attach(DocExplorer *o){

//将一DoeExplorer对象与OfficeDoe对象相关联

if(index >=OBS_MAXNUM ||o=NULL)return;

for(int loop=0; loop<index; loop++)

if(myObs[loop]==o) return;

myObs[index]=o;

index++;

}

void detaeh(DocExplorer *o){

//接触某DoeExplorer对象与OfficeDoc对象的关联

if(0==NULL) return;

for(int loop=0; loop<index; loop++){

if(myObs[loop]==o){

if(loop<=index-2)myObs[loop]=myObs[index-1];

myObs[index-1]=NULL;

index--;

break;

}

}

}

private:

void notifyObs(){ //通知所有的DocExplorer对象更改自身状态

for(int loop=0; loop<index; loop++){

myObs[loop]->(4); //DocExplorer对象更新自身状态

}

}

//其他公文类的相关属性和方法

};

DocExplorer::DocExplorer(OfficeDoc *doc){//DocExplorer 类对象的构造函数

doc->(5); //将此DocExplorer对象与doc对象相关联

}


相关考题:

阅读以下说明和Java代码,将应填入(n)处。[说明]在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组 DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的 DocExplorer对象都将得到通知,这种应用被称为观察者模式。以下代码采用Java语言实现,能够正确编译通过。[Java代码]//Subject.java 文件public interface Subject {public void attach(Observer DocExplorer);public void detach(Observer DocExplorer);void notifyObservers();}//Observer.java 文件public interface Observer{void update((1) );}//OfficeDoc.java 文件import java.util.*;public class OfficeDoc implements Subject(//OfficeDoc 类实现 Subject 接口private Vector bserverVeetor=new java.util.Vector();//存储与OfficeDoc相关联的DocExplorer 对象public void attach(Observer observer){//将某 DocExplorer 对象与OfficeDoc 相关联ObserverVector.addElement(observer);}public void detach(Observer observer){//解除某DocExplorer 对象与OfficeDoc的关联关系ObserverVector.removeElement(observer);}public void notifyObservers(){//当OfficeDoc对象状态已发生变化时,通知所有的DocExplorer对象Enumeration enumeration=(2);while (enumeration.hasMoreElements()){((Observer)enumeration.nextElement()).(3);}}public Enumeration Observers(){return ObserverVector.elements();}//其他公文类的属性和方法省略}//DoeExplorer.java 文件public class DocExplorer implements (4) {public void update( (5) ){//更新DocExplorer自身的状态,代码省略}}

阅读以下说明和c++码,将应填入(n)处的字名写在的对应栏内。[说明] 以下函数完成求表达式的值,请填空使之完成此功能。float sum ( float x ){ float s=0.0;int sign = 1;(1);for(inti=1;(2); i+ +){t=t*x;s=s+(3);sign = - sign;(4);}

阅读以下技术说明及C++代码,将C++程序中(1)~(5)空缺处的语句填写完整。[说明]在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文件中内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为Observer(观察者)模式。以下代码采用C++语言实现,能够正确编译通过。[C++代码]

阅读以下技术说明及Java代码,将Java程序中(1)~(5)空缺处的语句填写完整。[说明]在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文件的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为Observer(观察者)模式。以下代码采用Java语言实现,能够正确编译通过。[Java代码]

阅读以下说明和JAVA 2代码,将应填入(n)处的字句写在对应栏内。[说明]以下程序为类类型的变量应用实例,通过异常处理检验了类CCircle的变量的合法性,即参数半径应为非负值。仔细阅读代码和相关注释,将程序补充完整。[JAVA代码]//定义自己的异常类class CCircleException extends Exception{}// 定义类 CCircleclass CCircle{private double radius;public void setRadius ( double r ) (1){if ( r<0 ) {(2)}else(3)}Public void show ( ) {System. out. println ( "area="+3.14*radius*radius );}}public class ciusample{public static void main ( String args[] ){CCircle cir=new CCircle( );(4) {cir. setRadius ( -2.0 )}(5){System. out. println ( e+" throwed" ) ;}cir. show( ) ;}}

试题三(共 15 分)阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。

阅读下列说明和 C ++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上留 下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略(Strategy)设计模式来实现该需求,所设计的类图如图 6-1 所示。【C++ 代码】#includeusing namespace std;class BrakeBehavior{public:(1) ; /*其余代码省略*/};class LongWheelBrake : public BrakeBehavior{public:void stop(){cout

阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。【C++代码】 #include using namespace std; class invoice{ public: (1){ cout

阅读下列说明和?C++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】阅读下列说明和?Java代码,将应填入?(n)?处的字句写在答题纸的对应栏内。【说明】某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员?(Waiter)?调度厨师制作套餐。现采用生成器?(Builder)?模式实现制作过程,得到如图?6-1?所示的类图。