- 1
-
试题六(15分)
阅读下列说明和java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。以绘制直线和圆形为例,对应的绘图程序如表6-1所示。
表6-1不同的绘图程序
DP1
DP2
绘制直线
draw_a_line(x1,y1,x2,y2)
drawline(x1,x2,y1,y2)
绘制圆
draw_a_circle(x,y,r)
drawcircle(x,y,r)
该绘图软件的扩展性要求,将不断扩充新的图形和新的绘图程序。为了避免出现类爆炸的情况,现采用桥接(Bridge)模式来实现上述要求,得到如图6-1所示的类图。
图6-1类图
【Java代码】
(1) Drawing{
(2) ;
(3) ;
}
class DP1{
static public voiddraw_a_line(double x1, double y1, double x2, double y2)
{/*代码省略*/}
static public voiddraw_a_circle(double x, double y, double r)
{/*代码省略*/}
}
class DP2{
staticpublic void drawline(double x1, double y1, double x2 ,double y2){/*代码省略*/}
staticpublic void drawcircle (double x, double y, double r){/*代码省略*/}
}
classV1Drawing implements Drawing{
public void drawLine(double x1, double y1,double x2 ,double y2){/*代码省略*/}
public void drawCircle (double x, doubley, double r){(4);}
}
class V2Drawingimplements Drawing{
public void drawLine(double x1, doubley1, double x2 ,double y2){/*代码省略*/}
public void drawCircle (double x, doubley, double r){(5);}
}
Abstract classShape{
Private Drawing _dp;
(6);
Shape(Drawing dp) {_dp=dp;}
public void drawLine(double x1, doubley1, double x2 ,double y2){
_dp.drawLine(x1,y1,x2,y2); }
public void drawCircle (double x, doubley, double r){ _dp.drawCircle(x,y,r);}
}
class Rectangleextends Shape{
private double _x1,_x2,_y1,_y2;
public Rectangle(Drawing dp,double x1,double y1, double x2 ,double y2)
{/*代码省略*/}
public void draw(){/*代码省略*/}
}
class Circleextends Shape{
private double _x, _y, _r;
public Circle(Drawing dp,double x, doubley, double r) {/*代码省略*/}
public void draw(){drawCircle(_x,_y,_r);}
}
- 1
-
试题五(15分)
阅读下列说明和C++代码,将应填入 (n)处的字句写在答题纸的对应栏内。
【说明】
欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。以绘制直线和圆形为例,对应的绘图程序如表5-1所示。
表5-1不同的绘图程序
DP1
DP2
绘制直线
draw_a_line(x1,y1,x2,y2)
drawline(x1,x2,y1,y2)
绘制圆
draw_a_circle(x,y,r)
drawcircle(x,y,r)
该绘图软件的扩展性要求,将不断扩充新的图形和新的绘图程序。为了避免出现类爆炸的情况,现采用桥接(Bridge)模式来实现上述要求,得到如图5-1所示的类图。
图5-1类图
【C++代码】
class DP1{
public:
static voiddraw_a_line(double x1,double y1,double x2,double y2){/*代码省略*/}
static void draw_a_circle(double x,double y,double r){ /*代码省略*/}
};
class DP2{
public:
static void drawline(double x1,double x2,double y1,double y2){/*代码省略*/}
static void drawcircle(double x,double y,double r){/*代码省略*/}
};
class Drawing{ //简历
public:
(1) ;
(2) ;
};
classV1Drawing:public Drawing{
public:
void drawLine(double x1,double y1,double x2, double y2){/*代码省略*/}
void drawCircle(double x, double y, double r){ (3) ;}
};
classV2Drawing:public Drawing{
public:
void drawLine(double x1,double y1,double x2, double y2){/*代码省略*/}
void drawCircle(double x, double y, double r){ (4) ;}
};
class Shape{
public:
(5) ;
Shape(Drawing * dp){ _dp = dp;}
void drawLine(double x1, double y1,double x2, double y2){
_dp->drawLine(x1,y1,x2,y2);}
void drawCircle(double x, double y, double r){
_dp->drawCircle(x,y,r);}
private: Drawing * _dp;
};
class Rectangle:public Shape{
public:
void draw(){/*代码省略*/}
//其余代码省略
};
classCircle:public Shape{
private: double _x,_y,_r;
public:
Circle(Drawing * dp, double x, double y, double r): (6) {_x = x; _y = y; _r =r;}
void draw(){ drawCircle(_x, _y,_r);}
};
int main(){
Resume * a = new Resume(“张三”);
a->SetPersonInfo(“男”,“29”);
a->SetWorkExperience(“1998-2000”,“XXX公司”);
Resume * b = (5) ;
b->SetWorkExperience(“2001-2006”,“YYY公司”);
return 0;
}