niusouti.com

阅读以下函数说明和Java代码,将应填入(n)处的字句写在对应栏内。【说明】现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1,y1,x2,y2)画一条直线,DP2则用drawline(x1,x2,y1,y2)画一条直线。当实例画矩形时,确定使用DP1还是DP2。为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现部分”对应“画图”,与一般的接口(抽象方法)与

题目

阅读以下函数说明和Java代码,将应填入(n)处的字句写在对应栏内。

【说明】

现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1,y1,x2,y2)画一条直线,DP2则用drawline(x1,x2,y1,y2)画一条直线。当实例画矩形时,确定使用DP1还是DP2。

为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现部分”对应“画图”,与一般的接口(抽象方法)与具体实现不同。这种应用称为Bridge(桥接)模式。图9-6显示了各个类间的关系。

这样,系统始终只处理3个对象:Shape对象、Drawing对象、DP1或DP2对象。以下是 Java语言实现,能够正确编译通过。

【Java代码】

//DP1.java文件

public class DP1{

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(){

//省略具体实现

}

}


相似考题

4.阅读以下说明和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(){//省略具体实现}(1)

更多“ 阅读以下函数说明和Java代码,将应填入(n)处的字句写在对应栏内。【说明】现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1,y1,x2,y2)画一条直线,D”相关问题
  • 第1题:

    阅读以下说明和c++代码,将应填入(n)处的字句写在对应栏内。

    【说明】

    现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1, y1,x2,y2)画一条直线,DF2则用drawline(x1,x2,y1,y2)画一条直线。当实例画矩形时,确定使用DP1还是DP2。为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现 部分”对应“画图”,与一般的接口(抽象方法)与具体实现不同。这种应用称为Bridge(桥接)模式。图9-7显示了各个类间的关系。

    这样,系统始终只处理3个对象:Shape对象、Drawing对象、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{

    private:

    (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{

    private:

    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=y1;_x2=x2;_y2=y2;

    }

    void Rectangle::draw()

    {

    //省略具体实现

    }


    正确答案:(1) virtual (2) DP2::drawline(x1x2y1y2) (3) Drawing (4) _dp->drawLine(x1y1x2y2) (5) Shape(dp)
    (1) virtual (2) DP2::drawline(x1,x2,y1,y2) (3) Drawing (4) _dp->drawLine(x1,y1,x2,y2) (5) Shape(dp) 解析:由函数drawLine()结尾的“=0”易知,空(1)应填virtual。
    空(2)是调用DP2系统的相应方法,可参照DP1的对应函数的函数体,但要注意参数不完全相同,应填DP2::drawline(x1,x2,y1,y2)。
    _dp属性是用来存储Drawing对象的,参照Shape的构造函数可确认这一点,空(3)应填 Drawing*。
    Shape类的drawLine方法是通过调用Drawing对应的方法来实现所需要的功能,因此空(4)应填_dp->drawLine(x1,y1,x2,y2)。
    空(5)显然是基类构造函数,应填Shape(dp)。

  • 第2题:

    试题三(共 15 分)

    阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。


    正确答案:

  • 第3题:

    阅读下列说明和?C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
    【说明】
    阅读下列说明和?Java代码,将应填入?(n)?处的字句写在答题纸的对应栏内。
    【说明】
    某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种
    类可能不同,但其制作过程相同。前台服务员?(Waiter)?调度厨师制作套餐。现采用生成器?(Builder)?模式实现制作过程,得到如图?6-1?所示的类图。






    答案:
    解析:

  • 第4题:

    ●试题二

    阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

    【说明】

    该程序运行后,输出下面的数字金字塔

    【程序】

    include<stdio.h>

    main ()

    {char max,next;

    int i;

    for(max=′1′;max<=′9′;max++)

    {for(i=1;i<=20- (1) ;++i)

    printf(" ");

    for(next= (2) ;next<= (3) ;next++)

    printf("%c",next);

    for(next= (4) ;next>= (5) ;next--)

    printf("%c",next);

    printf("\n");

    }

    }


    正确答案:
    ●试题二【答案】(1)(max-′0′)(2)′1′(3)max(4)max-1(5)′1′【解析】该程序共有9行输出,即循环控制变量max的值是从1~9。每行输出分3部分,先用循环for语句输出左边空白,(1)空填"(max-′0′)";再用循环输出从1到max-′0′的显示数字,即(2)空和(3)空分别填1和max;最后输出从max-′1′~1的显示数字,即(4)空和(5)空分别填和max-1和′1′。

  • 第5题:

    阅读以下函数说明和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(){

    //省略具体实现

    }

    }

    (1)


    正确答案:abstract
    abstract 解析:由类Drawing的drawLine()方法是abstract的知,Drawing要么是接口,要么是抽象类,在此为抽象类,故空(1)应填abstract。