欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。以绘制直线和圆形为例,对应的绘图程序如表6-1所示。
表6-1不同的绘图程序
该绘图软件的扩展性要求,将不断扩充新的图形和新的绘图程序。为了避免出现类爆炸的情况,现采用桥接(Bridge)模式来实现上述要求,得到如图6-1所示的类图。
图6-1类图
【Java代码】
(1)Drawing{
(2);
(3);
}
class DP1{
static public void draw_a_line(double x1,double y1,double x2,double y2){/*代码省略*/}
static public void draw_a_circle(double x,double y,double r){/*代码省略*/}
}
class DP2{
static public void drawline(double x1,double y1,double x2,double y2){/*代码省略*/}
static public void drawcircle(double x,double y,double r){/*代码省略*/}
}
class V1Drawing implements Drawing{
public void drawLine(double x1,double y1,double x2,double y2){/*代码省略*/}
public void drawCircle(double x,double y,double r){(4);}
}
class V2Drawing implements Drawing{
public void drawLine(double x1,double y1,double x2,double y2){/*代码省略*/}
public void drawCircle(double x,double y,double r){(5);}
}
abstract class Shape{
private Drawing_dp;
(6);
Shape(Drawing dp){_dp=dp;}
public void drawLine(double x1,double y1,double x2,double y2){_dp.drawLine(x1,y1,x2,y2);}
public void drawCircle(double x,double y,double r){_dp.drawCircle(x,y,r);}
}
class Rectangle extends Shape{
private double_x1,_x2,_y1,_y2;
public Rectangle(Drawing dp,double x1,double y1,double x2,double y2){/*代码省略*/}
public void draw( ){/*代码省略*/}
}
class Circle extends Shape{
private double_x,_y,_r;
public Circle(Drawing dp,double x,double y,double r){/*代码省略*/}
public void draw( ){drawCircle(_x,_y,_r);}
}
正确答案及解析
正确答案
解析
(1)public interface或interface
(2)public void drawLine(double x1,double y1,double x2,double y2)或void drawLine(double x1,double y1,double x2,double y2)
(3)public void drawCircle(double x,double y,double r)或void drawCircle(double x,double y,double r)
(4)DP1.draw_a_circle(x,y,r)
(5)DP2.drawcircle(x,y,r)
(6)abstract public void draw()
本题考查Java面向对象程序设计。这类题型主要涉及两个方面的考查内容:Java语法与设计模式。所谓语法考查是要求考生清楚接口、抽象类、抽象方法等的定义,相关意思能用正确方式表达出来。而设计模式层次的考查主要是模式间关联的建立。
在本题中,(1)~(3)都是典型的语法问题,由于Drawing在后面被实现(implements)了,所以他是一个接口,帮(1)为:public interface。继续通过这条线索分析可知,Drawing应有drawLine和drawCircle两个方法的定义。故(2)(3)分别为:public void drawLine(double x1,double y1,double x2,double y2)和public void drawCircle(double x,double y,double r)。
接下来的第(4)和(5)是同样类型的空,都需要完成函数的实现部分,此处的实现,一般不要求考生真正实现功能,而是通过别的函数完成该职能。从对应的类图可以了解到V1Drawing与DP1存在依赖关系,而DP1中有draw_a_circle()的函数已完成了画圆的操作,所以在此只需要调用这个方法即可。所以(4)和(5)分别为:DP1.draw_a_circle(x,y,r)和DP2.drawcircle(x,y,r)。最后的(6),可以通过分析类图得知,因为类图中标明Shape类中有:draw()、drawLine()和drawCircle()三个函数,而在Shape类中缺draw(),所以需要补上该函数的定义,即abstract public void draw()。
包含此试题的试卷
你可能感兴趣的试题
【说明】利用ASP+access开发网站管理系统,设计以下两个网页Add_form.asp 和Add.asp,通过它们将网站信息添加到数据库test.mdb 中website表中。下图是Add_form.asp 浏览页面,在其上输入需要添加页面内容后,单击"确定"按钮,执行Add.asp 页面完成相应内容添加到数据库test.mdb 中。
问题1:完成程序中空白处填空。
<% Option Eplicit%><Html><head><title>添加记录示例</title></head>(1)align="center">添加新网站</h2><center><table border="1" width="90%"><form name ="form1"method="(2)"action=(3)"><tr><td>网站名称</td><td><input type="(4)"name="name" size=20></td></tr><tr><td>网站地址</td><td><input type="text"name="URL" size=40></td></tr><tr><td>网站简介</td><td>(5) name ="into" row="2"cols="40"wrap="solf "></textarea></td></tr><tr><td> </td><td><input type=(6)" "value="确定"><input type=(7)" "value="(8)"</td></tr></from></table></center></body></html>
添加数据记录执行程序add.asp:
<% Otion Eplicit><% '如果上面信息已经填全了,就添加记录,否则给出错误提示信息Dim connSet conn=server.(9)("ADODB.Connection")conn.Open "Dbq="&Server,mappath("(10)")&";Driver={Microsoft Access Driver(*.mdb)};"Dim strSql,varName,varURL,varlntro,rs '定义变量VarName=Request.Form("(11)")VarURL=Request.Form(" URL")VarIntro =Request.Form("Intro")(12)="Insert into website (name,URL.intro,submit_date)Values( "&varName &","&_varURL&","& varIntro &",# "&Date( )&" # )" 'Date( )表示取服务器时间Set rs=conn.(13) (strSql)index.asp" '添加成功,则返回首页index.asp…response.(14) "请将所有信息填写完整"response. (15)"add_form.asp"%>
备选答案
(1).A.b3 B. h2 C.h3 D.空白
(2)A. get B. post C.put D.pull
(3)A.add.asp B.add C.add_form.asp D.continue
(4)A.submit B.option C.radio D.text
(5)A. textarea B.text C.select D.option
(6)A.submit B.reset C.radio D.text
(7)A.submit B.reset C.radio D.text
(8)A.submit B.确定 C.reset D.重写
(9)A.mappath B.cereateobject C.application D.server
(10)A.test B.test.mdb C.website D.website.table
(11)A.name B.text C.requesto D.response
(12)A. strSql B.varName C.varURL, D.varlntro
(13)A.open B.execute C.requesto D.response
(14)A.write B.rewrite C.redirect D.direct
(15)A.write B.rewrite C.redirect D.direct
- 查看答案
某机器字长为n,最高位是符号位,其定点整数最大值为( )。【由于网页格式问题,答案中N表示N次方】
-
- A.2^n-1
- B.2^(n-1)-1
- C.2^n
- D.2^n+1
- 查看答案
10个成员组成开发小组,若任意两人之间都有沟通路径,则一共有(7)条沟通路径
-
- A.100
- B.90
- C.50
- D.45
- 查看答案
在软件设计阶段,划分模块原则是,一个模块( )。
-
- A.作用范围应该在其控制范围之内
- B.控制范围应该在作用范围之内
- C.作用范围与控制范围互不包含
- D.作用范围与控制节围不受任何限制
- 查看答案
以下关于结构化开发方法叙述中,不正确是( )。
-
- A.“总指导思想是自顶向下,速层分解
- B.基本原则是功能分解与抽象
- C.与面向对象开发方法相比,更合适大规模、特别夏杂项目
- D.特别适合于数据处理领域项目
- 查看答案