class Point
{
private double x;
private double y;
//double x;
//double y;
Point()
{
x = 0;
y = 0;
}
Point(double _x,double _y)
{
x = _x;
y = _y;
}
void setX(double _x)
{
x = _x;
}
void setY(double _y)
{
y = _y;
}
double getX()
{
return x;
}
double getY()
{
return y;
}
}
class Circle
{
private Point p;
private double radius;
Circle()
{
p = new Point(0.0,0.0);
radius = 1.0;
}
Circle(Point _p)
{
p = _p;
}
Circle(double _radius)
{
radius = _radius;
}
Circle(Point _p,double _radius)
{
p = _p;
radius = _radius;
}
void setPoint(Point _p)
{
p = _p;
}
void setPoint(double _x,double _y)
{
p.setX(_x);
p.setY(_y);
}
void setRadius(double _radius)
{
radius = _radius;
}
Point getPoint()
{
return p;
}
double getRadius()
{
return radius;
}
//计算圆的面积
double getArea()
{
return 3.14*radius*radius;
}
//判断一个点是否在圆内
boolean inCircle(Point _p)//返回值为布尔类型的函数,一般函数名为第三人称单数,例如:contains
{
//double i = (_p.getX()-p.getX())*(_p.getX()-p.getX())-(_p.getY()-p.getY())*(_p.getY()-p.getY());//不好,太长了
double x = (_p.getX()-p.getX())*(_p.getX()-p.getX());
double y = (_p.getY()-p.getY())*(_p.getY()-p.getY());
//double temp = x^x - y^y;
/*
TestCircle.java:95: 错误: 二元运算符 '^' 的操作数类型错误
double temp = x^x - y^y;
^
第一个类型: double
第二个类型: double
1 个错误
*/
double temp = x*x - y*y;
/*if(i == radius*radius || i > radius*radius)
return false;
else
return true;
*/
if(temp > radius*radius)
return false;
else
return true;
}
}
public class TestCircle
{
public static void main(String[] args)
{
/*
需求:
定义一个圆的类,
属性:圆心,半径
方法:计算圆的面积(假设PI为3.14)
*/
Circle c = new Circle();
System.out.println("半径为:"+c.getRadius());
//System.out.println("圆心为:("+c.getPoint().x+","+c.getPoint().y+")");
System.out.println("圆心为:("+c.getPoint().getX()+","+c.getPoint().getY()+")");
/*
TestCircle.java:94: 错误: x可以在Point中访问private
System.out.println("圆心为:("+c.getPoint().x+","+c.getPoint().y+")");
*/
System.out.println("面积为:"+c.getArea());
Point p = new Point(1.0,2.0);
Circle c1 = new Circle(p,10.0);
System.out.println("半径为:"+c1.getRadius());
System.out.println("圆心为:("+c1.getPoint().getX()+","+c1.getPoint().getY()+")");
System.out.println("面积为:"+c1.getArea());
Point p2 = new Point(3,4);
System.out.println(c1.inCircle(p2));
}
}
/*
小结:
1.circle--圆
radius--半径
2.private修饰的成员只可以在类体内部使用
可以通过类的成员方法访问成员变量的值
3.该程序的改进
圆的圆心的设定
原来方法:
void setPoint(Point _p)
{
p = _p;
}
改进后的方法:
void setPoint(double _x,double _y)
{
p.setX(_x);
p.setY(_y);
}
两者可以共存,也就是函数的重载
4.分析内存的分配与释放过程
在纸上画出来
6.内存区域
1)data区--存放字符串常量等
2)代码区
3)栈区--存放局部变量
4)堆区--存放对象(引用类型的变量,也就是new出来的东西)
7.判断一个点是否在圆内
设l = 点到圆心的距离
r = 圆的半径
1)如果l < r,在圆内
2)如果l = r,在圆上
3)如果l > r,在圆外
在圆内与在圆上,统称为在圆内
8.double i = (_p.getX()-p.getX())*(_p.getX()-p.getX())-(_p.getY()-p.getY())*(_p.getY()-p.getY());//不好,太长了
变量的值早好不要太长,不利于阅读
碰见值比较长的情况,多定义几个变量就行了
9.如何定义函数
1)分析需求
2)确定函数名
3)确定返回值
4)确定返回值类型
*/
{
private double x;
private double y;
//double x;
//double y;
Point()
{
x = 0;
y = 0;
}
Point(double _x,double _y)
{
x = _x;
y = _y;
}
void setX(double _x)
{
x = _x;
}
void setY(double _y)
{
y = _y;
}
double getX()
{
return x;
}
double getY()
{
return y;
}
}
class Circle
{
private Point p;
private double radius;
Circle()
{
p = new Point(0.0,0.0);
radius = 1.0;
}
Circle(Point _p)
{
p = _p;
}
Circle(double _radius)
{
radius = _radius;
}
Circle(Point _p,double _radius)
{
p = _p;
radius = _radius;
}
void setPoint(Point _p)
{
p = _p;
}
void setPoint(double _x,double _y)
{
p.setX(_x);
p.setY(_y);
}
void setRadius(double _radius)
{
radius = _radius;
}
Point getPoint()
{
return p;
}
double getRadius()
{
return radius;
}
//计算圆的面积
double getArea()
{
return 3.14*radius*radius;
}
//判断一个点是否在圆内
boolean inCircle(Point _p)//返回值为布尔类型的函数,一般函数名为第三人称单数,例如:contains
{
//double i = (_p.getX()-p.getX())*(_p.getX()-p.getX())-(_p.getY()-p.getY())*(_p.getY()-p.getY());//不好,太长了
double x = (_p.getX()-p.getX())*(_p.getX()-p.getX());
double y = (_p.getY()-p.getY())*(_p.getY()-p.getY());
//double temp = x^x - y^y;
/*
TestCircle.java:95: 错误: 二元运算符 '^' 的操作数类型错误
double temp = x^x - y^y;
^
第一个类型: double
第二个类型: double
1 个错误
*/
double temp = x*x - y*y;
/*if(i == radius*radius || i > radius*radius)
return false;
else
return true;
*/
if(temp > radius*radius)
return false;
else
return true;
}
}
public class TestCircle
{
public static void main(String[] args)
{
/*
需求:
定义一个圆的类,
属性:圆心,半径
方法:计算圆的面积(假设PI为3.14)
*/
Circle c = new Circle();
System.out.println("半径为:"+c.getRadius());
//System.out.println("圆心为:("+c.getPoint().x+","+c.getPoint().y+")");
System.out.println("圆心为:("+c.getPoint().getX()+","+c.getPoint().getY()+")");
/*
TestCircle.java:94: 错误: x可以在Point中访问private
System.out.println("圆心为:("+c.getPoint().x+","+c.getPoint().y+")");
*/
System.out.println("面积为:"+c.getArea());
Point p = new Point(1.0,2.0);
Circle c1 = new Circle(p,10.0);
System.out.println("半径为:"+c1.getRadius());
System.out.println("圆心为:("+c1.getPoint().getX()+","+c1.getPoint().getY()+")");
System.out.println("面积为:"+c1.getArea());
Point p2 = new Point(3,4);
System.out.println(c1.inCircle(p2));
}
}
/*
小结:
1.circle--圆
radius--半径
2.private修饰的成员只可以在类体内部使用
可以通过类的成员方法访问成员变量的值
3.该程序的改进
圆的圆心的设定
原来方法:
void setPoint(Point _p)
{
p = _p;
}
改进后的方法:
void setPoint(double _x,double _y)
{
p.setX(_x);
p.setY(_y);
}
两者可以共存,也就是函数的重载
4.分析内存的分配与释放过程
在纸上画出来
6.内存区域
1)data区--存放字符串常量等
2)代码区
3)栈区--存放局部变量
4)堆区--存放对象(引用类型的变量,也就是new出来的东西)
7.判断一个点是否在圆内
设l = 点到圆心的距离
r = 圆的半径
1)如果l < r,在圆内
2)如果l = r,在圆上
3)如果l > r,在圆外
在圆内与在圆上,统称为在圆内
8.double i = (_p.getX()-p.getX())*(_p.getX()-p.getX())-(_p.getY()-p.getY())*(_p.getY()-p.getY());//不好,太长了
变量的值早好不要太长,不利于阅读
碰见值比较长的情况,多定义几个变量就行了
9.如何定义函数
1)分析需求
2)确定函数名
3)确定返回值
4)确定返回值类型
*/