Algorithm-VSM

 view release on metacpan or  search on metacpan

examples/corpus/ExtendedInterface.java  view on Meta::CPAN

    public void setPosition( double x, double y ) { 
        this.x = x; this.y = y; 
    }
    public void draw( DrawWindow dw ) { dw.drawCircle( x, y, r, c ); }
    public void drawScaledShape( int scaleFactor, 
            DrawWindow dw ) {
        dw.drawScaledCircle( x, y, r, c, scaleFactor );
    }
}

class Color { int R, G, B; }

class DrawWindow {
    public DrawWindow() {};
    public void drawRect( double x, double y, 
                double width, double height, Color col ) {
        System.out.println(                                       //(A)
         "Code for drawing a rect needs to be invoked" );
    }
    public void drawScaledRect( double x, double y, double width, 
              double height, Color col, int scale ){            
        System.out.println(                                       //(B)
         "Code for drawing a scaled rect needs to be invoked" );
    }
    public void drawCircle( double x, double y, 
                                 double radius, Color col ) {
        System.out.println(                                       //(C)
         "Code for drawing a circle needs to be invoked" );
    }
    public void drawScaledCircle( double x, double y, double radius, 
                              Color col, int scale ){
        System.out.println(                                       //(D)
         "Code for drawing a scaled circle needs to be invoked" );
    }
}



class Test {
    public static void main( String[] args )
    {
        Shape[] shapes = new Shape[3];
        DrawScalable[] drawScalables = new DrawScalable[3];

        DrawScalableCircle dc = new DrawScalableCircle( 1.1 );
        DrawScalableRectangle dr1 = 
                new DrawScalableRectangle( 2.5, 3.5 );
        DrawScalableRectangle dr2 = 
                new DrawScalableRectangle( 2.3, 4.5 );

        shapes[0] = dc;
        shapes[1] = dr1;
        shapes[2] = dr2;

        drawScalables[0] = dc;
        drawScalables[1] = dr1;
        drawScalables[2] = dr2;

        int total_area = 0;
        DrawWindow dw = new DrawWindow();
        for (int i = 0; i < shapes.length; i++ ) {
            total_area += shapes[i].area();
            drawScalables[i].setPosition( i*10.0, i*10.0 );  
            drawScalables[i].drawScaledShape( 2, dw );       
        }
        System.out.println("Total area = " + total_area);         //(E)
    }
}



( run in 0.693 second using v1.01-cache-2.11-cpan-39bf76dae61 )