public class Main {
public static void log
(Object...
o) { for (int i=0; i<o.length; i++) { s += o[i] + " "; }
}
public static void main
(String[] args
) { new Main();
}
public Main() {
shapes[0] = new Circle(100, 100, 20);
Circle c = (Circle)shapes[0];
c.draw();
c.move(10, 10.1);
}
private abstract class Shape { private double x = 0, y = 0;
public Shape(double x,
double y
) { this.x = x;
this.y = y;
}
public double getX() { return x; }
public double getY() { return y; }
public abstract void draw();
}
private interface Moveable {
public void move(double x, double y);
}
private class Circle
extends Shape implements Moveable
{ private static final int END = 10;
private int start = 0;
private double radius = 0;
public Circle(double x, double y, double radius) {
super(x, y);
this.radius = 0;
}
public void draw() {
log("draw circle");
log
(String.
format("center(%.1f, %.1f) - radius(%.1f)", getX
(), getY
(), radius
)); }
public void move(double dx, double dy) {
for (int i=0; i<END; i++) {
log((i+1) + "");
log
(String.
format("center(%.1f, %.1f) - radius(%.1f)", getX
()+dx, getY
()+dy, radius
)); }
}
}
}
cHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIGxvZyhPYmplY3QuLi4gbykgewogICAgICAgIFN0cmluZyBzID0gIiI7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpPG8ubGVuZ3RoOyBpKyspIHsgcyArPSBvW2ldICsgIiAiOyB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgbmV3IE1haW4oKTsKICAgIH0KICAgIHB1YmxpYyBNYWluKCkgewogICAgICAgIFNoYXBlW10gc2hhcGVzID0gbmV3IFNoYXBlWzNdOwogICAgICAgIHNoYXBlc1swXSA9IG5ldyBDaXJjbGUoMTAwLCAxMDAsIDIwKTsKICAgICAgICBDaXJjbGUgYyA9IChDaXJjbGUpc2hhcGVzWzBdOwogICAgICAgIGMuZHJhdygpOwogICAgICAgIGMubW92ZSgxMCwgMTAuMSk7CiAgICB9CiAgICAKICAgIHByaXZhdGUgYWJzdHJhY3QgY2xhc3MgU2hhcGUgewogICAgICAgIHByaXZhdGUgZG91YmxlIHggPSAwLCB5ID0gMDsKICAgICAgICBwdWJsaWMgU2hhcGUoZG91YmxlIHgsIGRvdWJsZSB5KSB7CiAgICAgICAgICAgIHRoaXMueCA9IHg7CiAgICAgICAgICAgIHRoaXMueSA9IHk7CiAgICAgICAgfQogICAgICAgIHB1YmxpYyBkb3VibGUgZ2V0WCgpIHsgcmV0dXJuIHg7IH0KICAgICAgICBwdWJsaWMgZG91YmxlIGdldFkoKSB7IHJldHVybiB5OyB9CiAgICAgICAgcHVibGljIGFic3RyYWN0IHZvaWQgZHJhdygpOwogICAgfQogICAgcHJpdmF0ZSBpbnRlcmZhY2UgTW92ZWFibGUgewogICAgICAgIHB1YmxpYyB2b2lkIG1vdmUoZG91YmxlIHgsIGRvdWJsZSB5KTsKICAgIH0KICAgICAKICAgIHByaXZhdGUgY2xhc3MgQ2lyY2xlIGV4dGVuZHMgU2hhcGUgaW1wbGVtZW50cyBNb3ZlYWJsZSB7CiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVORCA9IDEwOwogICAgICAgIHByaXZhdGUgaW50IHN0YXJ0ID0gMDsKICAgICAgICBwcml2YXRlIGRvdWJsZSByYWRpdXMgPSAwOwogICAgICAgIHB1YmxpYyBDaXJjbGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgcmFkaXVzKSB7CiAgICAgICAgICAgIHN1cGVyKHgsIHkpOwogICAgICAgICAgICB0aGlzLnJhZGl1cyA9IDA7CiAgICAgICAgfQogICAgICAgIHB1YmxpYyB2b2lkIGRyYXcoKSB7CiAgICAgICAgICAgIGxvZygiZHJhdyBjaXJjbGUiKTsKICAgICAgICAgICAgbG9nKFN0cmluZy5mb3JtYXQoImNlbnRlciglLjFmLCAlLjFmKSAtIHJhZGl1cyglLjFmKSIsIGdldFgoKSwgZ2V0WSgpLCByYWRpdXMpKTsKICAgICAgICB9CiAgICAgICAgcHVibGljIHZvaWQgbW92ZShkb3VibGUgZHgsIGRvdWJsZSBkeSkgewogICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8RU5EOyBpKyspIHsKICAgICAgICAgICAgICAgIGxvZygoaSsxKSArICIiKTsKICAgICAgICAgICAgICAgIGxvZyhTdHJpbmcuZm9ybWF0KCJjZW50ZXIoJS4xZiwgJS4xZikgLSByYWRpdXMoJS4xZikiLCBnZXRYKCkrZHgsIGdldFkoKStkeSwgcmFkaXVzKSk7CiAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICB9CiAgICB9Cn0=
draw circle
center(100.0, 100.0) - radius(0.0)
1
center(110.0, 110.1) - radius(0.0)
2
center(110.0, 110.1) - radius(0.0)
3
center(110.0, 110.1) - radius(0.0)
4
center(110.0, 110.1) - radius(0.0)
5
center(110.0, 110.1) - radius(0.0)
6
center(110.0, 110.1) - radius(0.0)
7
center(110.0, 110.1) - radius(0.0)
8
center(110.0, 110.1) - radius(0.0)
9
center(110.0, 110.1) - radius(0.0)
10
center(110.0, 110.1) - radius(0.0)