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

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


参考答案和解析
A

相关考题:

阅读下列程序说明和C代码,把应填入其中n处的字句写在对应栏内。【说明】下面的程序能够计算不同图形的面积。程序中把每个图形的数据定义成结构类型,利用共同体类型描述2种图形的数据。程序根据输入参数代表的图形类型,求出图形的面积并输出。【程序】struct Circle{float x,y; /*圆心位置*/float r; /*圆半径*/};struct Rectangle{float width; /*矩形宽*/float length; /*矩形长*/};union shape{struct Circle circle;/*圆数据结构*/struct Rectangle rectangle;/*矩形数据结构*/};main(){union shape a;float area;int i;printf(“input number: 1circle,2rectangle,3 end\n”);scanf("%d",i);while (1) /*循环接收输入,并计算输出*/{switch(i){case 1:printf(“input radius:\n”);scanf(“%f”, (2);/*共同体类型变量接收输入*/area=3.1415926* (3);printf(“the area of circle=%f\n”,area);break;case 2:printf(“input width and length :\n”);seanf(“%f,%f”, (4);/*共同体类型变量接收输入*/。area=(5);printf(“the area of rectangle=%f\n”,area);break;}printf(“input number:1 circle,2 rectangle,3 end\n”);scanf(“%d”,i);}}

●试题六阅读以下说明和C++程序,将应填入(n)处的语句写在答题纸的对应栏内。【说明】以下程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类Triangle、Rectangle和Square分别表示三角形、矩形和正方形;抽象类Figure提供了一个纯虚拟函数getArea(),作为计算上述3种图形面积的通用接口【C++程序】#includeiostream.h#includemath.hclass Figure{public:virtual double getArea()=0:∥纯虚拟函数};class Rectangle: (1) {protected:double height;double width;public:Rectangle(){};Rectangle(double height,double width){this-height=height;this-width=width;}double getArea(){return (2) ;}};class Square: (3) {public:Square(double width){(4) ;}};class Triangle: (5) {double la;double Ib;double lc;public:Triangle(double la,double lb,double lc){This-la=la;this-lb=lb;this-lc=lc;}double getArea(){double s=(la+lb+±c)/2.0;return sqrt(s*(s-1a)*(s-1b)*(s-1c));}};void main(){Figure*figures[3]={new Triangle(2,3,3),new Rectangle(5,8),new SqUare (5) );for (int i=0;i3;i++){cout"figures["i"]area="(figures[i])-getArea()endl;}}

阅读以下说明和Java程序,将应填入(n)处的字句写在对应栏内[说明]以下程序的功能时三角形、矩形和正方形的面积输出。程序由5个类组成:areatest是主类,类Triangle,Rectangle和Square分别表示三角形、矩形和正方形,抽象类Figure提供了一个计算面积的抽象方法。[Java程序]public class areatest {public static viod main(string args[]){Figure[]Figures={New triangle(2,3,3),new rectangle(5,8),new square(5)};for(int i=0; i<Figures.length;i++){system.out.println(Figures+"area="+Figures.getarea());}}}public abstract class figure {public abstract double getarea();}public class rectangle extends (1) {double height;double width;public rectangle (double height,double width){this.height=height;this.width=width;}public string tostring(){return"rectangle:height="+height+",width="+width+":";}public double getarea(){return (2)}}public class square exends (3){public square(double width){(4);}public string tostring(){return"square:width="+width":";}}public class triangle entends (5){double la;double lb;double lc;public triangle(double la,double lb,double lc){this.la=la;this.lb=lb;this.lc=lc;}public string tostring()(return"triangle:sides="+la+","+lb+","+lc+":";}public double get area(){double s=(la+lb+lc)/2.0;return math.sqrt(s*(s-la)*(s-lb)*(s-lc));}}

( 13 )补充完整下面的类定义:const double PI=3 .14;class Circle{ // 圆形物体的抽象基类protected:double r; // 半径public:Circle ( double radius=0 ) : r ( radius ) {}【 13 】 ; // 计算圆形物体表面积的纯虚函数声明};class Cylinder:public Circle { // 圆柱体类double h; // 高度public:Cylindr ( double radius=0, doubli height=0 ) :Circle ( radius ) , h ( height ) {}Virtual double Area () { // 计算圆柱体的表面积return 2*PI*r* ( r+h ) ;}};

阅读以下说明和C++代码,将应填入(n)处的字句写在对应栏内。【说明】以下C++程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类 Triangle、Rectangle和Square分别表示三角形、矩形和正方形:抽象类Figure提供了一个纯虚函数getAxea(),作为计算上述3种图形面积的通用接口。【C++代码】include<iostream>include<cmath>using namespace std;class Figure{public:virtual double getArea()=0;//纯虚函数};class Rectangle : (1) {protected:double height;double width;public:Rectangle(){}Rectangle(double height, double width){this->height=height;this->width=width;}double getArea(){return (2);}};class Square: (3) {public:Square(double width){(4);}};class Triangle: (5) {private:double la,lb,lc;public:Triangle(double la,double lb,double lc){this->la=la;this->1b=1b;this->lc=lc;}double getArea(){double s=(la+lb+lc)/2.0;return sqrt(s*(s-la)*(s-lb)*(s-lc));}int main(){Figure *figures[3]={new Triangle(2,3,3),new Rectangle(5,8), new Square(5)};for(int i=0;i<3;i++){cout<<"figures["<<i<<"]area="<<(figures[i])->getArea()<<endl;}return 0;}

阅读以下说明和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;}}

阅读以下说明和C++代码,填入(n)处。[说明]以下C++代码使用虚函数实现了同一基类shape派生出来的Class rectangle、Class triangle、Class circle实现了计算矩形、圆形面积的计算。仔细阅读以下代码,将(n)处语句补充完整。[代码5-1]include<iostream.h>define PI 3.14159class shape {//基类protected:(1);public:(2);(3);};[代码5-2]class rectangle: public shape {public:rectangle (int x2,int y2,int r2): (4) {};double area ( ) {return x*y; };};class circle: public shape {public:circle (int x3,int y3,int r3):(5){};double area ( ) {return r*r*PI; };};[代码5-3]void main ( ){rectangle r (10,20,0);circle c (0,0,30);shape (6);cout<<"长方形面积="<<s1->area ( ) <<endl;cout<<"圆形面积="<<s2->area ( ) <<endl;}[运行结果]长方形面积=200圆形面积=2827.43

阅读以下说明和C代码,将应填入(n)处的字句写在的对应栏内。【说明】在一个简化的绘图程序中,支持的图形种类有点(point)和圆(circle),在设计过程中采用面向对象思想,认为所有的点和圆都是一种图形(shape),并定义了类型shape t、 point t和circle t分别表示基本图形、点和圆,并且点和圆具有基本图形的所有特征。【C代码】typedef enum { point,circle } shape type; /* 程序中的两种图形:点和圆 */typedef struct { /* 基本的图形类型 */shape_type type; /* 图形中类标识:点或者圆*/void (*destroy) (); /* 销毁图形操作的函数指针*/void (*draw) (); /* 绘制图形操作的函数指针*/} shape_t;typedef struct { shape_t common; int x; iht y; } point_t; /* 定义点类型, x, y为点坐标*/void destroyPoint (point_t* this) { free (this); printf ("Point destoryed!\n"); } ) /* 销毁点对象*/void drawPoint(point_t* this) { printf("P(%d,%d)", this-x, this-y); }/* 绘制点对象*/shape_t* createPoint (va_list* ap) (/* 创建点对象,并设置其属性*/point_t* p_point;if ( (p_point= (point_t*)malloc (sizeof (point_t)) ) ==NULL) returnNULL;p_point->common, type = point; p_point-common, destroy = destroyPoint;p_point->common.draw = drawPoint;p_point->x = va_arg(*ap, int); /* 设置点的横坐标*/p_point->y = va_arg(*ap, int); /* 设置点的纵坐标*/return (shape_t*)p_ooint; /*返回点对象指针*/}typedef struct { /*定义圆类型*/shape_t common;point_t 4center; /*圆心点*/int radius; /*圆半径*/} circle_t;void destroyCircle(circle_t* this){free((1)); free(this); printf("Circle destoryed!\n");}void drawCircle(circle_t* this) {print f ("C (");(2).draw(this->center); /*绘制圆心*/printf(",%d) ", this->radius);}shape_t* createCircle(va_list4 ap) { /*创建一个圆,并设置其属性*/circle_t4 p circle;if ((p_circle = (circle_t4)malloc (sizeof (circle_t)) ) ==NULL ) return NULL;p_circle->common.type = circle; p_circle->common.destroy = destroyCircle;p_circle->common.draw = drawCircle;(3) = createPoint(ap); /* 设置圆心*/p_circle->radius = va_arg(*ap, int); /* 设置圆半径*/return p_circle;}shape_t* createShape(shape_type st, "') { /* 创建某一种具体的图形*/va_list ap; /*可变参数列表*/&nbs

阅读以下说明和C++程序,将应填入(n)处的语句写在的对应栏内。【说明】以下程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类Triangle、Rectangle和Square分别表示三角形、矩形和正方形;抽象类Figure提供了一个纯虚拟函数getArea(),作为计算上述3种图形面积的通用接口。【C++程序】include<iostream.h>include<math.h>class Figure {public:virtual double getArea()=0; //纯虚拟函数};class Rectangle:(1){protected:double height;double width;public:Rectangle() {};Rectangle(double height,double width) {this->height=height;this->width=width;}double getArea() {return (2);}};class Square:(3){public:Square(double width){(4);}};class Triangle:(5){double la;double lb;double lc;Public:Triangle(double la, double lb, double lc) {This->la=la; this->lb=lb; this->lc=lc;}double getArea() {double s = (la+lb+±c)/2.0;return sqrt(s,(s-la)*(s-lb)*(s-Ic));}};void main() {Figure*figures[3]={new Triangle(2,3,3), new Rectangle(5,8), new SqUare(5));for(int i=0;i<3;i++){cout<<"figures["<<i<<"]area="<<(figures[i])->getArea()<<endl;}}

使用VC6打开考生文什夹下的工程test1_3。此工程包含一个test1_3.cpp,其中定义了类circle和column,其中column类由circle类protected派生,但两个类的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)定义类circle的保护数据成员r和area,它们都是double型的数据。请在注释“//**1**”之后添加适当的语句。(2)添加类circle的无参数的构造函数,使circle对象的r默认值为0,请在汁释“//**2**”之后添加适当的语句。(3)添加派生类column构造函数的定义,传入的参数为double型的height和radius,并将具分别赋值给数擗成员h和基类的r,请在注释“//**3**”之后添加适当的语句。(4)完成派生类column的成员函数print的定义,使其以格式“r=_area=_”先输出半径r和底面积area,再以格式“h=_vol=_”输出高h和体积vol的值,请在注释“//**4**”之后添加适当的语句。输山结果如下:r=1 area=3.1416h=2 vo1=6.2832注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。源程序文件test1_3.cpp清单如下:include<iostream.h>const double pi=3.1416;class circle{protected://**1**public://**2**circle(double radius){ r=radius;}void print(){area=r*r*pi;cout<<"r="<<r<<" "<<"area="<<ared<<endl;}};class column: protected circle{protected:double h;public://** 3 **void print(){// ** 4 **}};void main(){column col(1.0,2.0);Col.print();}

阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。【说明】以下C++程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类Triangle、Rectangle和Square分别表示三角形、矩形和正方形;抽象类Figure提供了一个纯虚拟函数getArea(),作为计算上述3种图形面积的通用接口。include<iostream.b>include<math.h>class Figure{public:virtual double getArea0=0; //纯虚拟函数};class Rectangle: (1) {protected:double height;double width;public:Rectangle(){};Rectangle(double height, double width){This->height=height;This->width=width;}double getarea(){return (2);}};class Square: (3) {public:Square(double width){(4);}};class Triangle: (5) {double la;double lb;double lc;public:Triangle(double la, double lb, double lc){this->la=la; this->lb; this->lc;}double getArea(){double s=(la+lb+lc)/2.0;return sqrt(s*(s-la)**(s-lb)*(s-lc));}};viod main(){Figure* figures[3]={new Triangle(2,3,3), new Rectangle(5,8), new Square(5));for(int i=0;i<3;i++){cout<<"figures["<<i<<"]area="<<(figures[i])->getarea()<<endl;}}

阅读下列说明、图和C++代码,回答问题1至问题3。【说明】已知四个类之间的关系如图2-2所示,分别对每个类的方法进行编号,例如Shape的perimeter()方法为1号,表示为1:perimeter(),Rectangle类的perimeter()为2号,表示为2:perimeter(),依此类推,其中,每个类的perimeter方法都为虚函数且方法签名相同。【C++代码】Triangle *tr=new Triangle();Square *sq=new Square();Shape *sh =tr;关于上述C++代码中sh和tr的以下叙述中,哪两个是正确的(写出编号)。①sh和tr分别引用同一个对象;②sh和tr分别引用同一类型的不同的对象:③sh和tr分别引用不同类型的不同对象;④sh和tr分别引用同一个对象的不同备份:⑤sh和tr所引用的内存空间是相同的。

阅读以下说明和Java源程序,将应填入(n)处的字句写在答题纸的对应栏内。说明以下程序的功能是计算三角形、矩形和正方形的面积并输出。程序由5个类组成:AreaTest是主类,类Triangle、Rectangle和Square分别表示三角形、矩形和正方形,抽象类Figure提供了一个计算面积的抽象方法。程序public class AreaTest{public static void main(String args[]){Figure[]figures={new Triangle(2,3,3),new Rectangle(5,8), new Square(5)};for(int i=0;i<figures.1ength;i++){System.out.println(figures[i]+"area="+figures[i].getArea());}}}public abstract class Figure{public abstract double SetAJea();public class Rectangle extends (1) {double height;double width;public Rectangle(double height,double width){this.height=height;this.width=width;}public String toString(){return "Rectangle:height="+height+",width="+width+":";}public double getArea() { return (2);} } public class Square extends (3) {public Square(double width) {(4);}public String toString() {return "Square:width="+width+":";} } public class Triangle extends (5). {double la;double lb;double lc;public Triangle(double la,double lb,double lc) {this.la=la; this.lb=lb; this.lc=lc;public String toString(){return "Triangle: sides="+la+","+lb+","+lc+":";public double getArea() {double s=(la+lb+lc)/2.0;return Math.sqrt(s*(s-la)*(s-lb)*(s?1c));}}

阅读以下说明和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)处的字句写在答题纸的对应栏内。说明以下程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类Triangle、Rectangle和Square分别表示三角形、矩形和正方形;抽象类Figure提供了一个纯虚拟函数getArea(),作为计算上述三种图形面积的通用接口。c++程序include <iostream.h>inclule <math.h>class Figure {public:virtual double getArea()= 0; // 纯虚拟函数};class Rectangle: (1) {protected:double height;double width;public:Rectangle() { };Rectangle(double height, double width) {this->height = height;this->width = width;}double getArea() {return (2) ;}class Square: (3) {public:Square(double width) {(4) ;}};class Triangle: (5) {double la;double lb;double lc;public:Triangle(double la, double lb, double lc) {this->la = la; this->lb ='lb; this->lc = lc;}double getArea() {double s = (la+lb+lc)/2.0;return sqrt(s*(s-la)*(s-lb)*(s-lc));} }; void main() {Figure* figures[3] = {new Triangle(2,3,3), new Rectangle(5,8), new Square(5)};for (int i = 0; i < 3; i++) {com << "figures[" << i << "] area =" << (figures[i])->getArea0 << endl;}

阅读下列说明、图和Java代码,回答问题1至问题3。【说明】已知四个类之间的关系如图2-4所示,分别对每个类的方法进行编号,例如Shape的perimeter()为1号,表示为1:perimeter(),Rectangle类的perimeter()为2号,表示为 2:perimeter(),依此类推,其中,每个类的perimeter方法签名相同。【Java代码】Triangle tr=new Triangle();Square sq=new Square();Shape sh=tr;关于上述Java代码中sh和tr的以下叙述中,哪两个是正确的(写出编号)。①sh和tr分别引用同一个对象;②sh和tr分别引用同一类型的不同的对象:③sh和tr分别引用不同类型的不同对象:④sh和tr分别引用同一个对象的不同拷贝;⑤sh和tr所引用的内存空间是相同的。

下列程序中,先声明一个圆类circle和一个桌子类table,另外声明一个圆桌类roundtable,它是由 circle和table两个类派生的,要求声明一个圆桌类对象,并输出圆桌的高度,面积和颜色。请填空完成程序include<iostream.h>include<string.h>class circle{double radius;public:circle(double r){radius=r;}double get_area(){return 3.416*radius*radius;}};class table{double height;public:table(double h)<height=h;}double get_height(){return height;}};class roundtable:public table,public circle{char *color;public:roundtable(double h,double r,char c[]): 【 】 {color=new char[strlen(c) +1];【 】;};char*get_color(){return color;}}:void main(){roundtable rt(0.8,1.0,“白色”);cout<<"圆桌的高:"<<rt. get_height()<<end1;cout<<"圆桌面积:"<<rt.get_area()<<end1;cout<<"圆桌颜色:"<<n.get color()<<end1;}

当对Draw Width进行设置后,将影响( )。A.Line、Circle、Pset方法B.Line、Shape控件C.Line、Circle、Point方法D.Line、Circle、Pset方法和Line、Shape控件

阅读以下关于某绘图系统的技术说明、部分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;}

编译以下代码,将出现什么情况?()abstract class Shape{ abstract void draw();}Class Square extends Shape{ }A. Square类和Shape类都可以成功编译B. Square类无法编译,但Shape类可以编译C. 类无法编译,但Square类可以编译D. Square类和Shape类都无法编译

试题六(共15分)阅读以下说明、图和Java代码,填补Java代码中的空缺(1)~(6),将解答写在答题纸的对应栏内。【说明】已知对某几何图形绘制工具进行类建模的结果如图6.1所示,其中Shape为抽象(abstract)类,表示通用图形,Box(矩形)、Ellipse(椭圆)和Line(线条)继承(extends)了Shape类,其中,Circle表示圆(即特殊的椭圆)。下面的Java代码用于实现图 6-1所给出的设计思路,将其空缺处填充完整并编译运行,输出结果为:EllipseCircleEllipseCE【Java代码】(1) class Shape{public Shape(String name){this.name= name;}(2) void paint();String getName(){retum this.name;}final String name;};//Box 和Line类似下面 Ellipse,其代码略class Ellipse (3) {public Ellipse(String name){super(name);System.out.println("Ellipse");}Void paintO{∥绘制现状示意代码System.out.println(getName0);}};class Circle (4) {public Circle(String name){super(name);System.out.println("Circle");}};class Diagram{private Shape shapes[]= new Shape[2];public void drawAShape(Shape shape){shape.paint();}void erase A Shape(Shape shape){∥删除形状,代码略}void drawShapes(){shapes*0+= new Circle("C”);shapes[l]= new Ellipse("E");for (int i=O; i2;++i) {drawAShap(shapes[i]);//绘制形状}}void close(){for (int i=0;i2; ++1) { []关闭图,删除所绘制图形(5) ;}}public static void main(String[] args){Diagram diagram= (6) ;diagram.drawShapes();diagram.close();}}

阅读以下说明和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;}}

阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内[说明]以下程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类Triangle,Rectangle和Square分别表示三角形、矩形和正方形;抽象类Figure提供了一个纯虚拟函数getArea(),作为计算上述三种图形面积的通用接口。[C++程序]include<iostream.h>include<math.h>class Figure{public:virtual double getArea()=0; //纯虚拟函数};class Rectangle: (1) {protected:double height;double width;public:Rectangle(){};Rectangle(double height,double width){This->height=height;This->width=width;}double getarea(){return (2);}};class Square: (3)public:square(double width){(4);}};class triangle: (5) {double la;double lb;double lc;public:triangle(double la,double lb,double lc){this->la=la;thiS->ib;this->lc;}double getArea(){double s=(la+lb+lc)/2.0;return sqrt(s*(s-la)**(s-lb)*(s-lc));}};viod main(){figure*figures[3]={new triangle(2,3,3),new Rectangle(5,8),new Square(5)};for(int i=0; i<3;i++){cout<<"figures["<<i<<"]area="<<(figures)->getarea()<<endl;}}};

阅读以下说明和Java程序,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。【说明】以下Java代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分接口、类及其关系如图5-1所示。【Java代码】interface?DrawCircle?{? //绘制圆形 public(1) ;}class?RedCircle?implements?DrawCircle?{? ?//绘制红色圆形???????public?void?drawCircle(int?radius,intx,?int?y)??{????????????System.out.println("Drawing?Circle[red,radius:"?+?radius?+",x:"?+?x?+?",y:"?+y+?"]");???????}}class?GreenCircle?implements?DrawCircle?{????//绘制绿色圆形??????public?void?drawCircle(int?radius,?int?x,int?y)?{???????????System.out.println("Drawing?Circle[green,radius:"?+radius+",x:?"?+x+?",y:?"?+y+?"]");??????}}abstract?class?Shape?{????//形状? protected? ? (2)???;? ? public?Shape(DrawCircle?drawCircle)?{? ?this.drawCircle=?drawCircle;? ? ? public?abstract?void?draw();}class?Circle?extends?Shape?{? //圆形? ?private?int?x,y,radius;? public?Circle(int?x,int?y,intradius,DrawCircle?drawCircle)?{? ?(3)???;? this.x?=?x;? ? ? this.y?=?y;? ?this.radius?=radius;? }? ? ?public?void?draw()?{? ? drawCircle.? ?(4)? ?;? ? ? }}public?class?DrawCircleMain?{? public?static?void?main(String[]?args)?{? Shape?redCircle=new?Circle(?100,100,10,? (5) );//绘制红色圆形? Shape?greenCircle=new?Circle(200,200,10,(6) );//绘制绿色圆形? ?redCircle.draw(); greenCircle.draw();? ?}}

当设置了容器对象的DrawWidth属性后,会影响()A、Pset、Line、Circle方法B、Line、Shape控件C、Pset、Line、Circle方法和Line、Shape控件D、Line、Circle、point方法

当对DrawWidth进行设置后,将影响()。A、Line、Circle、Pset和Line、Shape控件B、Line、Circle、PsetC、Line、Circle、Poine方法D、Line、Shape控件

单选题关于图3.19的叙述()是不正确的。A Rectangle类和Circle类都有名为area的属性,这两个属性一定是相同的属性B Rectangle类和Circle类都有名为getArea的操作,这两个操作一定是相同的操作C Rectangle中名为length的属性和Circle类中名为radius的属性,这两个属性一定是不同的属性D Shape类有一个属性,Circle类有两个属性,Rectangle类有三个属性