Rectangle class

Point class

public class Rectangle {
    private double x;
    private double y;
    private double width;
    private double height;
    
    public Rectangle(double myX, double myY, double myWidth, double myHeight) {
        x = myX;
        y = myY;
        width = myWidth;
        height = myHeight;
    }

    public double getArea() {
        return width * height;
    }
    
    public Rectangle translate(double dx, double dy) {
        return new Rectangle(x + dx, y + dy, width, height);
    }
    
    public boolean contains(Point p) {
        return p.getX() >= x && p.getX() <= x + width
            && p.getY() >= y && p.getY() <= y + height;
    }
    
    public boolean contains(Rectangle query) {
        return this.x <= query.x + query.width
            && query.x <= this.x + this.width
            && this.y <= query.y + query.height
            && query.y <= this.y + this.height;
    }
    
    public Rectangle add(Point p) {
        double retX = x;
        double retWidth = width;
        if(p.getX() < x) {
            retWidth = x + width - p.getX();
            retX = p.getX();
        } else if(p.getX() > x + width) {
            retWidth = p.getX() - x;
        }

        double retY = y;
        double retHeight = height;
        if(p.getY() < y) {
            retHeight = y + height - p.getY();
            retY = p.getY();
        } else if(p.getY() > y + height) {
            retHeight = p.getY() - y;
        }
        
        return new Rectangle(retX, retY, retWidth, retHeight);
    }
}