java定义一个圆类_2.8.1 如何定义一个圆的类

2.8  绝知此事要躬行--自己动手定义对象

在本章***一小节中不再给大家介绍更多新的知识,只是通过一个较为全面的实例把前面介绍的内容再复述一遍,好让大家加深一下印象,更深刻地理解一下Java的面向对象编程。为了使用标准的Java语言来向大家呈现这个例子,在下面的例子中不可能避免地会出现还没有讲到的东西。遇到这些不明白的地方,大家不必深究,我们只是想用这个例子来让大家巩固本章中前面讲的知识,所有不明白的地方在后面的章节中都会学到。所谓万事开头难,刚开始知道的东西少,碰到不知道的东西比较多是很正常的现象,希望这不要影响大家学习Java编程的热情与信心!

2.8.1  如何定义一个圆的类

在这个比较综合的例子当中,我们把代码分成两段展现给大家,是为了容易解释。大家要把后面的所有代码按顺序放在一个名为Example2_1.java的文件中。这个文件***还是放在第1章我们作示范的那个目录下面,都放在一起比较方便管理。把后面的代码都输入到Example2_1.java之后,在文件所在目录下执行命令来编译这个Java程序文件:javac Example2_1.java

执行完上面这个命令之后,会在当前目录下产生一个名为Example2_1.class的文件。这个文件就是Java字节码文件,还记得吗?然后再执行这个Java字节码程序:java Example2_1

好的,先来看一下我们的例子中最重要的Circle类的定义吧:/* 装载所必需的程序包 */

import java.lang.*;

import java.io.*;

/* 定义一个表示圆的类 */

class Circle {

/* 类的私有属性 */

private double x;                   // 圆心的X轴坐标x

private double y;                   // 圆心的Y轴坐标y

private double radius;              // 圆半径:radius

/* 类的公共属性 */

public final doublePI=

3.14159265358979323846264338327950288419716939937510582;

/* 类的私有方法 */

private double distanceX(double x0) {

return x-x0;

}

private double distanceY(double y0) {

return y-y0;

}

/* 类的公共方法 */

public double distanceTo(double x0, double y0) {

return Math.sqrt(distanceX(x0)* distanceX(x0) + distanceY(y0)*          distanceY(y0));

}

public boolean inCircle(double x0, double y0) {

// 判断点(x0, y0)是否在圆的内部

return distanceTo(x0, y0)

}

public void moveTo(double x0, double y0) {  // 设置圆心位置

x=x0;                     // 在类定义内部可以直接改变私有属性的值

y=y0;

return;

}

public void getPosition() {             // 输出圆心的位置

System.out.println( "x=" + x ); // 在类定义内部可以直接使用私有属性

System.out.println( "y=" + y );

return;

}

public void setRadius(double r) {       // 设置圆的半径

rradius= r;

return;

}

public double getRadius() {             // 取得圆的半径值

return radius;

}

public double getDiameter () {          // 计算圆的直径长度:2*R

return 2*radius;

}

public double getCircumference () {     // 计算圆的周长:PI*D

return PI*getDiameter ();

}

public double getArea() {               // 计算圆的面积:PI*R*R

return PI*radius*radius;

}

public double getCurvature () {         // 计算圆的曲率:1/R

return 1.0/radius;

}

}

看到这么长的程序不要害怕,只是举个例子让大家来感受一下类的各种成员及Java中对象的操作方式,并不是让大家现在就完全弄懂上面的程序。下面简单看一下这个类的定义吧。

在类Circle的定义中,首先是它的一些属性定义。我们定义的是一个圆,它的圆心坐标和半径都是这个圆的一些特性。如前面所述,将这些属性设为私有,不要让它们直接被外界访问或修改属性值。但我们也定义了一个公共的属性,即圆周率的值。将它设为公有,是为了从圆这个对象中可以直接取得圆周率的值。这个值是恒定不变的,所以可以放心地设为公有,好在程序中方便使用。这些只是程序设计上的一些习惯,读者完全可以把它也设成私有,然后再定义一个方法取圆周率的值。

大家可以自己试着改一下,没关系。在这个类的定义中,把属性的定义放在方法定义的前面,这不是习惯问题。在定义任何一个类的时候,都要将类的属性定义放在最前面。具体原因等大家学了第3.3.4小节就清楚啦。现在只是预先给大家一个提示,省得尝试修改下面的示例程序时出现其他的问题。

【责任编辑:book TEL:(010)68476606】

点赞 0

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验内容: 一、定义一个名为Circle的圆类,位于shape包中。要求如下: (1) 该需要描述在二维坐标系中的位置,心的横、纵坐标值均取整数;描述的半径,取双精度型。 (2) 无参构造方法将心坐标设为坐标点,半径设为1.0;有参构造方法需要根据参数值设置心坐标和半径值。 (3) 提供一个计算面积的方法double getArea()。 (4) 提供一个判断当前对象与参数对象是否相交的方法(相交方式见下图): boolean isIntersected(Circle another) (5) 提供一个判断当前对象是否包含参数对象的方法(包含方式见下图): boolean contains(Circle another) (6) 提供一个判断当前对象与参数对象的大小关系的方法(判断依据是半径,半径之差的绝对值小于0.0001认为相等;返回负数表示当前对象小,0表示相等,正数表示当前对象) int compareTo(Circle another) (7) 提供返回当前的字符串的方法,格式为:[Circle(x,y)-raduis] String toString() 二、定义一个包含main方法的TestCircle,位于shape包中。要求如下: (1) main方法中调用以下方法。 (2) 编写静态方法createArray,生成位置和大小均随机的10个对象,置于数组中。 (3) 编写静态方法sort对这10个对象进行升序排序,并输出。 (4) 编写静态方法computeArea计算这10个中互不相交和包含的的面积之和。 提交要求:打包为可以执行的JAR文档,其中要包含源程序文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值