Java实验2
- 格式:pdf
- 大小:96.52 KB
- 文档页数:6
Java实验2
验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 longgcd(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/36、创建⼀个程序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;
}
// Find GCD of two numbers
private long gcd(long n, long d)
{
long t1 = Math.abs(n);
long t2 = Math.abs(d);
long remainder = t1%t2;
while (remainder != 0)
{
t1 = t2;
t2 = remainder;
remainder = t1%t2;
}
return t2;
}
// Getter method for numerator
public long getNumerator()
{
return numerator;
}
public long getDenominator()
{
return denominator;
}// Add a rational number to this rational
public Rational add(Rational secondRational)
{
long n = numerator*secondRational.getDenominator() +
denominator*secondRational.getNumerator();
long d = denominator*secondRational.getDenominator();
return new Rational(n, d);
}
// Subtract a rational number from this rational
public Rational subtract(Rational secondRational)
{
long n = numerator*secondRational.getDenominator()
- denominator*secondRational.getNumerator();
long d = denominator*secondRational.getDenominator();
return new Rational(n, d);
}
// Multiply a rational number to this rational
public Rational multiply(Rational secondRational)
long n = numerator*secondRational.getNumerator();
long d = denominator*secondRational.getDenominator();
return new Rational(n, d);
}
// Divide a rational number from this rational
public Rational divide(Rational secondRational)
throws RuntimeException
{
if (secondRational.getNumerator() == 0)
throw new RuntimeException("Denominator cannot be zero");
long n = numerator*secondRational.getDenominator();
long d = denominator*secondRational.getNumerator();
return new Rational(n, d);
}
// Override the toString() method
public String toString()
{