阅读以下说明和C++代码,将应填入(n)处的字句写上。[说明]现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显不display()。需要新增图形Circle,又已知有类XXCircle实现了所需要实现的功能:显示displayIt()。为了继承自shape以提供统一接口,又不希望从头开发代码,希望使用XXCircle。这样将XXcircle作为Circle的一个属性,即Circle的对象包含一个XXCircle对象。当一个Circle对象被实例化时,它必须实例化一个相应的XXCircle对象: Circle对象收到的做任何事的请求都将转发给这个XXCircle对象。通过这种称为Adapter模式,Circle对象就可以通过“让XXCircle做实际工作”来表现自己的行为了。图6-1显示了各个类间的关系。以下是C++语言实现,能够正确编译通过。[图6-1][C++代码]class Shape{public:(1) void display()=0;};class Line:public Shape{//省略具体实现};class Square:public Shape{//省略具体实现};class XXCircle{public:void displayIt(){//省略具体实现}//省略其余方法和属性};class Circle:public Shape{private:XXCircle *pxc;public:Circle();void display();};Circle::Circle(){pxc=(2);}void Circle::display(){pxc->(3);}class Factory{public:(4) getshapeInstance(int type){//生成特定类实例switch(type){case 1:return new Square;case 2:return new Line;case 3 :return new Circle;default:return NULL;}}};void main(int argc,char*argv[]){if(argc !=2){cout<<"error parameters!"<<endl;return;}int type=atoi(argv[1]);Factory factory;Shape*s=factory. (5);if(s==NULL){cout<<"Error get the instance!"<<endl;return;}s->display();delete s;return;}(1)

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

[说明]

现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显不display()。

需要新增图形Circle,又已知有类XXCircle实现了所需要实现的功能:显示displayIt()。为了继承自shape以提供统一接口,又不希望从头开发代码,希望使用XXCircle。这样将XXcircle作为Circle的一个属性,即Circle的对象包含一个XXCircle对象。当一个Circle对象被实例化时,它必须实例化一个相应的XXCircle对象: Circle对象收到的做任何事的请求都将转发给这个XXCircle对象。通过这种称为Adapter模式,Circle对象就可以通过“让XXCircle做实际工作”来表现自己的行为了。图6-1显示了各个类间的关系。以下是C++语言实现,能够正确编译通过。

[图6-1]

[C++代码]

class Shape{

public:

(1) void display()=0;

};

class Line:public Shape{//省略具体实现

};

class Square:public Shape{//省略具体实现

};

class XXCircle{

public:

void displayIt(){

//省略具体实现

}

//省略其余方法和属性

};

class Circle:public Shape{

private:

XXCircle *pxc;

public:

Circle();

void display();

};

Circle::Circle(){

pxc=(2);

}

void Circle::display()

{

pxc->(3);

}

class Factory{

public:

(4) getshapeInstance(int type){//生成特定类实例

switch(type){

case 1:return new Square;

case 2:return new Line;

case 3 :return new Circle;

default:return NULL;

}

}

};

void main(int argc,char*argv[]){

if(argc !=2){

cout<<"error parameters!"<<endl;

return;

}

int type=atoi(argv[1]);

Factory factory;

Shape*s=factory. (5);

if(s==NULL){

cout<<"Error get the instance!"<<endl;

return;

}

s->display();

delete s;

return;

}

(1)


相关考题:

阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。【说明】某绘图系统存在point、line、square三种图元,它们具有Shape接口,图元的类图关系如图13-12所示。现要将circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由 Shape派生而来的,它提供的接口不能被系统直接使用。代码13-2既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码13-3根据用户指定的参数生成特定的图元实例,并对之进行显示操作。绘图系统定义的接口与XCircle提供的显示接口及其功能如表13-5所示。【代码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;}}

阅读以下关于某绘图系统的技术说明、部分UML类图及C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。【说明】某绘图系统存在Point、Line和Square这三种图元,它们具有Shape接口,图元的类图关系如图5-10所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供了的接口不被系统直接使用。【C++代码5-1】既使用了XCircle又遵循了Shape规定的接口,即避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。【C++代码5-2】根据用户指定的参数生成特定的图元实例,并对它进行显示操作。该绘图系统定义的接口与XCircle提供的显示接口及其功能如表5-13所示。【C++代码5-1】class Circle: public (1) {Private;(2) m_circle;Public;void display(){m_circle. (3)}};【C++代码5-2】class Factory{public;(4) getShapeInstance(int type){ //生成特定类实例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;}}};void main(int argc, char *argv[]){if(argc !=2){cout<<"error parameters!"<<endl;return;}int type=atoi(argv[1]);Factory factory;Shape *s;s=factory.(5);if(s==NULL){cout<<"Error get the instance!"<<endl;return;}s->display();(6);Return;}

从下列2道试题(试题五至试题六)中任选 1道解答。如果解答的试题数超过1道,则题号小的1道解答有效。试题五(共15分)阅读以下说明、图和C++代码,填补C++代码中的空缺(1)~(5),将解答写在答题纸的对应栏内。【说明】已知对某几何图形绘制工具进行类建模的结果如图5.1所示,其中Shape为抽象类(应至少包含一个纯虚拟( virtual)函数),表示通用图形,Box表示矩形,Ellipse表示椭圆,Circle表示圆(即特殊的椭圆),Line表示线条。下面的C++代码用于实现图5-1所给出的设计思路,将其空缺处填充完整并编译运行,输出结果为:EllipseCircleEllipseCE【C++代码】include stringinclude iostreamusing namespace std;class Shape{public:Shape(const string name){m_name= name;}~Shape(){}(1) void paint() = 0;stringgetName()const {retumm name;}Private:string m_name;};//Box和 Line类的定义与 Ellipse类似,其代码略classEllipse (2) {public:Ellipse(const string name) : Shape(name){ cout"Ellipse" endl; }Voidpaint() { coutgetName()endl;}};classCircle (3) {public:Circle(const string name) : Ellipse(name){ cout"Circl"endl; }};class Diagram {public:void drawAShap(Shape* shape){ shape-paint(); }void drawShapes() {shapes[0] = new Circle("C");shapes[l] = new Ellipse("E");for (int i=O;i2; ++1) {drawAShap(shapes[i]);}}void close (){ /*删除形状,代码略 */ }private:Shape* shapes[2];};int main( ){Diagram* diagram = (4)diagram-drawShapes();diagram-close ();(5) diagram;}

阅读以下说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某绘图系统存在Point、Line、Square三种图元,它们具有Shape接口,图元的类图关系如图5-1所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供的接口不能被系统直接使用。代码5-1既使用了XCircle又遵循了Shape规定的接口,既避免了从头,开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码5-2根据用户指定的参数生成特定的图元实例,并对之进行显示操作。绘图系统定义的接口与XCircle提供的显示接口及其功能如下表所示:【代码5-1】class Circle:public (1) {pfivme:(2) m_circle;public:void display(){m_circle. (3);}};【代码5-2】class Factory{public:(4) getShapeInstance (int type){ //生成特定类实例switch (type){case 0:rcturn new Point;Case l:return new Rectangle;case 2: return new Line;case 3: return new Circle;default: return NULL;} void main (int argo, char *argv[]) {if (argc!=2) {cout << "error parameters !" << endl; return; inttype=atoi (argv[1]) ;Factory factory;Shape *s;s = factory. (5):if (s==NULL) {cout << "Error get the instance !" << endl;return;}s->display () ;(6);return;

阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某绘图系统存在Point、Line、Square三种图元,它们具有Shape接口,图元的类图关系如图6-1所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供的接口不能被系统直接使用。代码6-1既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码6-2根据用户指定的参数生成特定的图元实例,并对之进行显示操作。绘图系统定义的接口与XCircle提供的显示接口及其功能如下表所示:【代码6-1】class Circle (1) {private (2) pxc;public Circle(){pxc=new (3) ;}public void display(){pxc. (4) ;}}【代码6-2】public class Factory{public (5) getShapeInstance(int type){ //生成特定类实例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 void main (String argv[] )if (argv. length != l) {System. out.println ("error parameters !");return;}inttype= (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;}}

定义接口Shape,抽象方法为showMj() 和showZc(),求出面积和周长并显示。定义矩形类rectangle、正方形类square、圆类circle,根据各自的属性,用showMj() 和showZc()方法求出各自的面积和周长;在main方法中构造3个对象,调用showMj() 和showZc() 方法。

设计一个Shape接口和它的两个实现类Square和Circle,要求如下: 1)Shape接口中有一个抽象方法area(),方法接收有一个double类型的参数,返回一个double类型的结果 2)Square和Circle中实现了Shape接口的area()抽象方法,分别求正方形和圆形的面积并返回。在测试类中创建Square和Circle对象,计算边长为2的正方形面积和半径为3的圆形面积。

2、设计一个Shape接口和它的两个实现类正方形Square和圆形Circle 1)Shape接口中有一个抽象方法area(),方法接收一个double类型的参数,返回一个double类型的结果。 2)Square和Circle中实现了Shape接口的area()抽象方法,分别求正方形和圆形的面积并返回 3)分别创建Square和Circle对象,计算边长为2的正方形面积和半径为3的圆形面积

设计一个Shape接口和它的两个实现类Square和Circle。要求如下: (1)Shape接口中有一个抽象方法area(),方法接收一个double类型的参数,返回一个double类型的结果。 (2)Square和Circle中实现了Shape接口的area()方法,分别求正方形和圆形的面积并返回。 在测试类中创建Square和Circle对象,计算边长为2的正方形面积和半径为3的圆形面积。