Java实验2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
验2
类和对象
一、实验目的:
1、学习定义类和使用类创建对象。
2、掌握对象变量和普通变量的区别,学习掌握使用对象调用其成员的方法。
3、学习掌握类的构造方法。
4、学习掌握给方法传递对象。
5、学习掌握类的静态变量和静态方法。
二、实验任务:
1、创建Java程序,学习类的定义、使用类创建对象、通过对象调用其成员、
类的构造方法的作用、如何给方法传递对象、掌握静态变量、静态方法
的用法。程序要求:
(1)首先创建Circle类表示平面上的圆,要求该类具备构造方法,以初始化表示半径的私有数据成员radius;具备求圆面积的方法;
还要具备一个静态数据成员numOfObjects,用来统计程序运行过
程中创建圆对象的个数。
(2)创建一个静态方法public static void printCircle(Circle c),功能是输出参数圆对象c的相关信息,包括半径和面积的值。(不是Circle
的成员方法)
(3)程序运行中创建2个以上的圆对象,分别输出相关信息,并统计输出对象的数目。
2、创建Java程序,进一步学习上述的内容以及关键字this的使用和类抽象
的概念。程序要求:
(1)首先创建有理数类Rational,该类包含构造方法和加、减、乘、除方法。
(2)程序主方法中创建两个有理数对象,分别进行加、减、乘、除运算,并输出运算结果。
三、实验步骤:
1、按照任务1的要求创建一个表示圆形的Circle类。
2、按照任务1的要求创建一个类TestInstanceAndClassVariable,其中包含静
态方法public static void printCircle(Circle c)和程序的主方法main,在main
方法中创建两个或多个Circle对象,调用printCircle(Circle c)方法显示每
个Circle对象的相关信息,最后统计程序中所有创建的Circle类对象的
数目。
实验代码:
public class TestInstanceAndClassVariable{
public static void main(String[]args) {
Circle circle1=new Circle();
System.out.println("Beforecreatingcircle2");
System.out.print("circle1is:");
printCircle(circle1);
Circle circle2=new Circle(5);
circle1.setRadius(9);
System.out.println("\nAftercreatingcircle2andmodifying"+"circle1' sradiusto9");
System.out.print("circle1is:");
printCircle(circle1);
System.out.print("circle2is:");
printCircle(circle2);
}
public static void printCircle(Circle c){
System.out.println("radius("+c.getRadius()+")andnumberofCircleobject s("+c.getNumOfObjects()+")");
}
}
class Circle{
private double radius;
private static int numOfObjects=0;
public Circle(){
radius=1.0;
numOfObjects++;
}
public Circle(double r){
radius=r;
numOfObjects++;
}
public double getRadius(){
return radius;
}
public void setRadius(double newRadius){
radius=newRadius;
}
public static int getNumOfObjects(){
return numOfObjects;
}
public double findArea(){
return radius*radius*Math.PI;
}
}
实验结果:
3、按照任务2的要求创建一个有理数类Rational,应包含2个私有的长整型
数据成员numerator和denominator分别存储一个有理数的分子和分母;
该类应包含不带参数的构造方法,和带参数的构造方法。其中不带参数
的构造方法把有理数的分子和分母初始化为0和1;带参数的构造方法中
应对该有理数进行约分,为此需为该类创建一个成员方法private long gcd(long n, long d);该方法返回分子和分母的最大公约数。
4、为理数类Rational创建四个成员方法分别实现2个有理数的加、减、乘、
除运算,四个方法的方法签名如下:
public Rational add(Rational secondRational);
public Rational subtract(Rational secondRational);
public Rational multiply(Rational secondRational);
public Rational divide(Rational secondRational);
5、为Rational类改写toString()方法,该方法改写后的功能是:以分数的形
式输出一个有理数。例如:2/3
6、创建一个程序TestRationalClass,该类中分别创建2个Rational类的对象
r1和r2,计算并显示它们的和、差、积、商。程序运行的结果应如下图
所示:
实验代码:
public class Rational
{
// Data fields for numerator and denominator
private long numerator = 0;
private long denominator = 1;
// Default constructor
public Rational()
{
this(0, 1);
}
// Construct a rational with specified numerator and denominator public Rational(long numerator, long denominator)
{
long gcd = gcd(numerator, denominator);
this.numerator = numerator/gcd;
this.denominator = denominator/gcd;
}