题目内容

阅读以下说明和C++代码, [说明] 现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1,y1,x2,y2)画一条直线,DP2则用drawline(x1,x2,y1,y2)画一条直线。当实例化矩形时,确定使用DP1还是DP2。为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现部分”对应“画图”,与一般的接口(抽象方法)与具体实现不同。这种应用称为Bridge(桥接)模式。图6-1显示了各个类间的关系。 [图6-1] 这样,系统始终只处理3个对象:Shape对象、Drawingg对象、DP1或DP2对象。以下是C++语言实现,能够正确编译通过。 [C++代码] class DP1{ public: static void draw_a_line(double x1,double y1,double x2,double y2){ //省略具体实现 } }; class DP2{ public: static void drawline(double x1,double x2,double y1,double y2){ //省略具体实现 } }; class Drawing{ public: (1) void drawLine(double x1,double y1,double x2,double y2)=0; }; class V1Drawing:public Drawing{ public: void drawLine(double x1,double y1,double x2,double y2){ DP1::draw_a_line(x1,y1,x2,y2); } }; class V2Drawing:public Drawing{ public: void drawLine(double x1,double y1,double x2,double y2){ (2) } }; class Shape{ privatc: (3) dp; public: Shape(Drawing*dp); virtual void draw()=0; void drawLine(double x1,double y1,double x2,double y2); }; Shape::Shape(Drawing*dp) { _dp=dp; } void Shape::drawLine(double x1,double y1,double x2,double y2) { //画一条直线 (4) ; } class Rectangle:public Shape{ privatc: double_x1,_y1,_x2,_y2; public: Rectangle(Drawing *dp,double x1,double y1, double x2,double y2); void draw(); }; Rectangle::Rectangle(Drawing*dp,double x1,double y1,double x2,double y2) : (5) { _x1=x1;_y1=yl;_x2=x2;_y2=y2; } void Rectangle::draw() { //省略具体实现 }

查看答案
更多问题

一个工程中包含两个名称分别为Form1、Form2的窗体,一个名称为Func的标准模块。假定在Form1和Func中分别建立了自定义过程,其定义格式为: Form1中定义的过程: Private Sub Fun1() ...... End Sub Func中定义的过程: Public Sub Fun2() ...... End Sub 若要在窗体For2g调用Porm1和Func中分别建立的自定义过程,则调用格式正确的是 ( )

A. Call Form1. Funl() FunFun2()
B. Call Form1. Fun1() Call Fun2()
C. Form1. Fun1() Fun Fun2()
D. Fun1() Fun2()

阅读下列说明和数据流图,回答问题1至问题3, [说明] 考务处理系统具有如下功能: (1)对考生送来的报名单进行检查。 (2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷。 (3)对阅卷站送来的成绩清单进行检查,并根据考试中心制订的合格标准审定合格者。 (4)制作考生通知单送给考生。 (5) 进行成绩分类统计(按地区、年龄、文化程度、职业、考试级别等分类)和试题难度分析,产生统计分析表。 以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。图1-1是顶层数据流图,图1-2是第0层数据流图,图1-3是第l层数据流图,其中(A)是加工1的子图,(B)是加工2的子图。 [图1-1] [图1-2] [图1-3] [数据字典] 报名单=地区+序号+姓名+性别+年龄+文化程度+职业+考试级别+通信地址 正式报名单=报名单+准考证号 准考证=地区+序号+姓名+准考证号+考试级别 考生名单={准考证号+考试级别} 统计分析表=分类统计表+难度分析表 考生通知单=考试级别+准考证号+姓名+合格标志+通信地址 根据题意,指出加工2子图(图1-3B)中缺失的数据流的名称,并指出该数据流的起点和终点。加工2子图(图1-4)中有一条数据流是错误的,请指出这条数据流的起点和终点。

阅读以下函数说明和Java代码, [说明] 现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1,y1,x2,y2)画一条直线,DP2则用drawline(x1,x2,y1,y2)画一条直线。当实例化矩形时,确定使用DPI还是DP2。 为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现部分”对应“画图”,与一般的接口(抽象方法)与具体实现不同。这种应用称为Bridge(桥接)模式。图7-1显示了各个类间的关系。 [图7-1] 这样,系统始终只处理3个对象:Shape对象、Drawing对象、DP1或DP2对象。以下是JAvA语言实现,能够正确编译通过。 [Java代码] //DP1.Java文件 public class DPI{ static public void draw_a_line(double x1,double y1, double x2,double y2){ //省略具体实现 } } //DP2.java文件 public class DP2{ static public void drawline(double x1,double y1, double x2,double y2){ //省略具体实现 } } //Drawing.java文件 (1) public class Drawing{ abstract public void drawLine(double x1,double y1,double x2,double y2); } //V1Drawing.java文件 public class V1Drawing extends Drawing{ public void drawLine(double x1,double y1,double x2,double y2){ DP1.draw_a_line(x1,y1,x2,y2); } } //V2Drawing.java文件 public class V2Drawing extends Drawing{ public void drawLine(double x1,double y1, double x2,double y2){//画一条直线 (2) ; } } //Shape.java文件 abstract public class Shape{ abstract public void draw(); private (3) dp; Shape(Drawing dp){ _dp=dp; } protected void drawLine(double x1,double y1, double x2,double y2){ (4) ; } } //Rectangle.java文件 public class Rectangle extends Shape{ private double_x1,_x2,_y1,_y2; public Rectangle(Drawing dp, double x1,double y1, double x2,double y2){ (5) ; _x1=x1;_x2=x2; _y1=y1;_y2=y2; } public void draw(){ //省略具体实现 } }

选出正确的关系代数表达式。 查询内科病区患胃病的病人的姓名。 A.σName="内科"∨SC="胃病"(π2(R)) B.σName="内科"∧SC="胃病"(π2(R)) C.π2(σName="内科"∨SC="胃病"(R)) D.π2(σName="内科"∧SC="胃病"(R))

答案查题题库