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

题目

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


相似考题

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

参考答案和解析
正确答案:virtual
virtual 解析:由函数drawLine()结尾的“=0”易知,空(1)应填virtual。
更多“ 阅读以下说明和C++代码,[说明]现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1,y1,x2,y2)画一条直线,DP2则用drawline(x1,x2,y1”相关问题
  • 第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题:

    双纵坐标的绘图命令为

    A.plotyy(x1,y1,x2,y2)

    B.ploty(x1,y1,x2,y2)

    C.plot(x1,y1,x2,y2)

    D.plotyy(x1,y1;x2,y2)


    C

  • 第3题:

    MATLAB提供了绘制对数和半对数坐标曲线的函数有

    A.semilogx(x1,y1,选项1,x2,y2,选项2,…)

    B.semilogy(x1,y1,选项1,x2,y2,选项2,…)

    C.loglog(x1,y1,选项1,x2,y2,选项2,…)

    D.polar


    D

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

    //省略具体实现

    }

    }

    (1)


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

  • 第5题:

    2、双纵坐标的绘图命令为

    A.plotyy(x1,y1,x2,y2)

    B.ploty(x1,y1,x2,y2)

    C.plot(x1,y1,x2,y2)

    D.plotyy(x1,y1;x2,y2)


    C