Java练笔:一个类作为另一个类的参数调用。顺带训练数据在栈和堆的走向。思考若用C++写,delete应该怎么写

class Point{
    private double x = 0,y = 0;
    
    Point(double i,double j){
        x=i;
        y=j;
    }
    
    void setX(double i){
        x = i;
    }
    
    void setY(double j){
        y = j;
    }
    
    double getX(){
        return x;
    }
    
    double getY(){
        return y;
    }
}
//定义一个Point类,含有设定,获取平面坐标的方法。
class Circle{
    private Point o;
    private double radius;
    
    Circle(Point _o,double r){
        o = _o;
        radius = r;
    }
        
    Circle(double r){
        o = new Point(0,0);
        radius = r;
    }

    void contains(Point aim){
        double xCoord = o.getX() - aim.getX();
        double yCoord = o.getY() - aim.getY();
        if ((xCoord * xCoord + yCoord * yCoord) > (radius * radius))
            System.out.println("点在圆外");else
        if ((xCoord * xCoord + yCoord * yCoord) < (radius * radius))
            System.out.println("点再圆内");else
        if ((xCoord * xCoord + yCoord * yCoord) == (radius * radius))
            System.out.println("点在圆上");
    }
    
    void setDot(double _x,double _y){
        o.setX(_x);
        o.setY(_y);
    }
    //创建Circle类,把Point类作为参数传入复制构造函数。顺便练习overload。高一数学没学好,谷歌了圆的一般定义。
    void setRadius(double _r){
        radius = _r;
    }
    
    void reSet(double _x,double _y,double _r){
        o.setX(_x);
        o.setY(_y);
        radius = _r;
    }
    Point getDot(){
        return o;
    }
    
    double getRadius(){
        return radius;
    }
    
    double area(){
        return (3.14 * radius * radius);

    }

//做了重设圆的参数,及相关细化参数的方法。面积计算
}

public class TestCircle {

    public static void main(String[] args) {
        Circle c1 = new Circle(new Point (1,2),2);
        Circle c2 = new Circle(5);
        
        System.out.println("第一个圆的坐标为:(" + c1.getDot().getX() + "," + c1.getDot().getY() + ")" + "," + c1.getRadius());
        System.out.println("第二个圆的坐标为:(" + c2.getDot().getX() + "," + c2.getDot().getY() + ")" + "," + c2.getRadius());
        System.out.println("第一个圆的面积为:" + c1.area());
        System.out.println("第二个圆的面积为:" + c2.area());

        c1.setDot(5,6);
        c2.setRadius(9);
        System.out.println("重设后第一个圆的坐标为:(" + c1.getDot().getX() + "," + c1.getDot().getY() + ")" + "," + c1.getRadius());
        System.out.println("重设后第二个圆的坐标为:(" + c2.getDot().getX() + "," + c2.getDot().getY() + ")" + "," + c2.getRadius());
        System.out.println("重设后第一个圆的面积为:" + c1.area());
        System.out.println("重设后第二个圆的面积为:" + c2.area());
        
        c1.reSet(7, 9, 12);
        c2.reSet(10, 9, 20);
        System.out.println("!重设后第一个圆的坐标为:(" + c1.getDot().getX() + "," + c1.getDot().getY() + ")" + "," + c1.getRadius());
        System.out.println("!重设后第二个圆的坐标为:(" + c2.getDot().getX() + "," + c2.getDot().getY() + ")" + "," + c2.getRadius());
        System.out.println("!重设后第一个圆的面积为:" + c1.area());
        System.out.println("!重设后第二个圆的面积为:" + c2.area());
        
        Point p = new Point(5.2,6.3);
        c1.contains(p);
        c2.contains(new Point(10,9));
    }
//验证函数功能是否正常调用,参数是否正常传入
}


练手,顺带训练基于《java编码规则》的写代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值