package shapes; // Määritellään luokan paketti. public class Circle { // Huomaa, että luokka on yhä julkinen! protected double x, y; // Positio on kätketty, mutta se näkyy // aliluokille. protected double r; // Säde on kätketty, mutta se näkyy aliluokille. // Suurin mahdollinen säde (vakio). private static final double MAXR = 100.0; private boolean check_radius(double r) { return (r <= MAXR); } // Julkiset konstruktorit public Circle(double x, double y, double r) { this.x = x; this.y = y; if (check_radius(r)) this.r = r; else this.r = MAXR; } public Circle(double r) { this(0.0, 0.0, r); } public Circle() { this(0.0, 0.0, 1.0); } // Julkiset kenttien käyttömetodit public void moveto(double x, double y) { this.x = x; this.y = y;} public void move(double dx, double dy) { x += dx; y += dy; } public void setRadius(double r) { this.r = (check_radius(r))?r:MAXR; } // Nämä pienet metodit määritellään final-tyyppisiksi, jotta tulkin // ei tarvitse miettiä suoritettavaa metodia ajonaikaisesti ja jotta // kääntäjä voisi tehdä niistä avoimia. public final double getX() { return x; }; public final double getY() { return y; }; public final double getRadius() { return r; }; }