设计一个圆Circle类,包含圆心和半径两个数据成员。
①编写合理的构造方法。
②编写计算圆面积的方法getArea()。
③编写计算圆是否包含指定的点contains(Point),contains(int x,int y)。
import math
class Circle:
def __init__(self,location,r): #定义圆心和半径
self.location =location
self.r=r
def GetGirth(self): #周长的计算
return 2*3.14*self.r
def GetArea(self): #面积的计算
return 3.14*self.r*self.r
myCircle=Circle((200,200),10) #圆心为(200,200),半径为10
print("圆的周长=%0.2f"%(myCircle.GetGirth()))
print("圆的面积=%0.2f"%(myCircle.GetArea()))
(x,y)=eval(input("请你输入坐标:")) #计算圆是否包含指定的点
s=x**2+y*y
if s<=100: #设定的半径为10
print("该坐标在该半径的圆内")
else:
print("该坐标不在该半径的圆内")
class Point { //定义Point类
private double x;
private double y;
Point(double x1, double y1) { //构造方法point,接收两个双精度类型数据x1、y1
x = x1;
y = y1;
}
public double getX() { return x; } //公用方法getX return给x值
public double getY() { return y; } //公用方法getY return给y值
public void setX(double i) { x = i; } //公用方法setX 接收一个双精度i,赋值给x
public void setY(double i) { y = i; } //公用方法setY 接收一个双精度i,赋值给y
}
public class Circle1 { //主类TestCircle
public static void main(String args[]) { //主方法main
//问题1.计算圆面积的方法
Circle c1 = new Circle(new Point(1.0,2.0), 2.0); //新建一个Circle类型对象c1,圆心(1,2)和半径2
Circle c2 = new Circle(5.0); //新建一个Circle类型对象c2,圆心(0,0)半径5
System.out.println("c1:("+c1.getO().getX()+","
+c1.getO().getY()+"),"+c1.getRadius()); //输出c1的初始信息
System.out.println("c2:("+c2.getO().getX()
+","+c2.getO().getY()+"),"+c2.getRadius());//输出c2的初始信息
System.out.println("c1 area = "+c1.area());//c1和c2的面积
System.out.println("c2 area = "+c2.area());
//问题2.编写计算圆是否包含指定的点
c1.setO(5,6);
c2.setRadius(9.0);
System.out.println("c1:("+c1.getO().getX()+","
+c1.getO().getY()+"),"+c1.getRadius());
System.out.println("c2:("+c2.getO().getX()+","
+c2.getO().getY()+"),"+c2.getRadius());
System.out.println("c1 area = "+c1.area());
System.out.println("c2 area = "+c2.area());
Point p1 = new Point(5.0, 6.0);//新建一个点P1,计算他是否在圆内
System.out.println(c1.contains(p1));
System.out.println(c2.contains(new Point(10.0,9.0)));
}
}
class Circle { //定义Circle类
private Point o; //定义Ponint类型对象o
private double radius;
Circle(Point p, double r) //构造方法Circle,接收一个Point类型p,双精度类型r
{
o = p; //Point类型赋值给o
radius = r; //双精度类型r赋值给radius
}
Circle(double r) { //构造方法Circle的重载,接收一个双精度r
o = new Point(0.0, 0.0); //给point类型对象o赋值,分配堆内存
radius = r; //双精度类型r赋值给radius
}
boolean contains(Point p) { //布尔类型 contains,接收point类型p的值
double x = p.getX() - o.getX(); //调用对象p的getX方法接收的值减对象o的getX方法接收的值
double y = p.getY() - o.getY(); //调用对象p的getY方法接收的值减对象o的getY方法接收的值
if(x*x + y*y > radius * radius) return false; //假如x的平方和y的平方的和小于radius的平方,返回false,否则为true;
else return true;
}
public void setO(double x, double y) { //接收两个双精度值x、y
o.setX(x); //x赋值给o对象setX方法
o.setY(y); //y赋值给o对象setY方法
}
public Point getO() { return o; } //geto 方法,返回给o一个值
public double getRadius() { return radius;} //getRadius方法,返回一个双精度radius
public void setRadius(double r) { radius = r;} //tRadius方法,接收一个双精度r,赋值给radius
public double area() { //area方法,返回3.14*radius*radius的值
return 3.14 * radius * radius;
}
}
package chap4.excercise.Ex67;
public class Point {
private int x;
private int y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
/**
*重载的构造器 初始化对角线上的点
**/
public Point(int x){
this(x,x);//调用本类的两个整数类型参数的构造器
}
/**
* 计算当前点到原点的距离
* */
public double distance(){ //当前点就是this
return Math.sqrt(this.x*this.x + this.y*this.y);
}
/**
*计算当前点到另外一个坐标的距离
*/
public double distance(int x, int y){
return Math.sqrt((this.x-x)*(this.x-x)+(this.y-y)*(this.y-y));
}
/**
* 计算当前点到另外一点的距离
* */
public double distance(Point other){
//重用本类的方法
return this.distance(other.x, other.y);
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
package chap4.excercise.Ex67;
public class Circle {
private Point center; //圆心
private double r; //半径
public Circle() {
super();
// TODO Auto-generated constructor stub
}
public Circle(Point center) {
this.center = center;
}
public Circle(Point center, double r) {
this(center);
this.r = r;
}
public double getArea(){
return Math.PI * r *r;
}
/**
* 判断指定的点是否在圆内
* @param Point
*/
public boolean contains(Point p){
if(center.distance(p)