Circle.java

package com.example.graphics.model;

import com.example.graphics.visitor.ShapeVisitor;

/**
 * Circle implementation of the Shape interface.
 */
public class Circle implements Shape {
    private int x;
    private int y;
    private int radius;
    
    /**
     * Constructs a circle with the specified parameters
     * @param x the x coordinate of the center
     * @param y the y coordinate of the center
     * @param radius the radius of the circle
     */
    public Circle(int x, int y, int radius) {
        this.x = x;
        this.y = y;
        this.radius = radius;
    }
    
    @Override
    public int getX() {
        return x;
    }
    
    @Override
    public int getY() {
        return y;
    }
    
    @Override
    public void setPosition(int x, int y) {
        this.x = x;
        this.y = y;
    }
    
    /**
     * Get the radius of the circle
     * @return the radius
     */
    public int getRadius() {
        return radius;
    }
    
    /**
     * Set the radius of the circle
     * @param radius the new radius
     */
    public void setRadius(int radius) {
        this.radius = radius;
    }
    
    @Override
    public void accept(ShapeVisitor visitor) {
        visitor.visit(this);
    }
    
    @Override
    public Shape clone() {
        return new Circle(this.x, this.y, this.radius);
    }
}