软件设计师(4)-2013年下半年下午JAVA

题目如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
源码附上:

package 真题;

public class test_2013_high {
    public static void main(String[] args) {
        V1Drawing v1Drawing = new V1Drawing();
        Circle circle = new Circle(v1Drawing,1,2,3);
        circle.draw();

        V2Drawing v2Drawing = new V2Drawing();
        Rectagle rectagle = new Rectagle(v2Drawing,1,2,3,3);
        rectagle.draw();
    }
}

interface Drawing { //后面用的是implements 所以明显Drawing是一个接口
    void drawLine(double x1, double y1, double x2, double y2);
    void drawCircle(double x, double y, double r);
}

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 {
    @Override
    public void drawLine(double x1, double y1, double x2, double y2) {
        DP1.draw_a_line(x1, y1, x2, y2);
    }
    @Override
    public void drawCircle(double x, double y, double r) {
        DP1.draw_a_circle(x, y, r); //根据类图 直接用类名调用类的静态方法
    }
}

class V2Drawing implements Drawing {
    @Override
    public void drawLine(double x1, double y1, double x2, double y2) {
        DP2.drawline(x1, y1, x2, y2);
    }

    @Override
    public void drawCircle(double x, double y, double r) {
        DP2.drawcircle(x, y, r); //根据类图 直接用类名调用类的静态方法
    }
}

abstract class Shape {
    private Drawing _dp;
    abstract public void draw(); //根据Shape的两个子类:均重载了draw方法 所以在这里应该定义draw的抽象方法

    public Shape(Drawing _dp) {
        this._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 Rectagle extends Shape {
    private double _x1, _x2, _y1, _y2;

    public Rectagle(Drawing _dp, double _x1, double _x2, double _y1, double _y2) {
        super(_dp);
        this._x1 = _x1;
        this._x2 = _x2;
        this._y1 = _y1;
        this._y2 = _y2;
    }

    @Override
    public void draw() {
        System.out.println("这画的是一条线!");
    }
}

class Circle extends Shape {
    private double _x, _y, _r;

    public Circle(Drawing _dp, double _x, double _y, double _r) {
        super(_dp);
        this._x = _x;
        this._y = _y;
        this._r = _r;
    }

    @Override
    public void draw() {
        System.out.println("这画的是一个圆!");
    }
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值