Java实验2

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

相关文档
最新文档