您好,欢迎访问三七文档
验2类和对象一、实验目的:1、学习定义类和使用类创建对象。2、掌握对象变量和普通变量的区别,学习掌握使用对象调用其成员的方法。3、学习掌握类的构造方法。4、学习掌握给方法传递对象。5、学习掌握类的静态变量和静态方法。二、实验任务:1、创建Java程序,学习类的定义、使用类创建对象、通过对象调用其成员、类的构造方法的作用、如何给方法传递对象、掌握静态变量、静态方法的用法。程序要求:(1)首先创建Circle类表示平面上的圆,要求该类具备构造方法,以初始化表示半径的私有数据成员radius;具备求圆面积的方法;还要具备一个静态数据成员numOfObjects,用来统计程序运行过程中创建圆对象的个数。(2)创建一个静态方法publicstaticvoidprintCircle(Circlec),功能是输出参数圆对象c的相关信息,包括半径和面积的值。(不是Circle的成员方法)(3)程序运行中创建2个以上的圆对象,分别输出相关信息,并统计输出对象的数目。2、创建Java程序,进一步学习上述的内容以及关键字this的使用和类抽象的概念。程序要求:(1)首先创建有理数类Rational,该类包含构造方法和加、减、乘、除方法。(2)程序主方法中创建两个有理数对象,分别进行加、减、乘、除运算,并输出运算结果。三、实验步骤:1、按照任务1的要求创建一个表示圆形的Circle类。2、按照任务1的要求创建一个类TestInstanceAndClassVariable,其中包含静态方法publicstaticvoidprintCircle(Circlec)和程序的主方法main,在main方法中创建两个或多个Circle对象,调用printCircle(Circlec)方法显示每个Circle对象的相关信息,最后统计程序中所有创建的Circle类对象的数目。实验代码:publicclassTestInstanceAndClassVariable{publicstaticvoidmain(String[]args){Circlecircle1=newCircle();System.out.println(Beforecreatingcircle2);System.out.print(circle1is:);printCircle(circle1);Circlecircle2=newCircle(5);circle1.setRadius(9);System.out.println(\nAftercreatingcircle2andmodifying+circle1'sradiusto9);System.out.print(circle1is:);printCircle(circle1);System.out.print(circle2is:);printCircle(circle2);}publicstaticvoidprintCircle(Circlec){System.out.println(radius(+c.getRadius()+)andnumberofCircleobjects(+c.getNumOfObjects()+));}}classCircle{privatedoubleradius;privatestaticintnumOfObjects=0;publicCircle(){radius=1.0;numOfObjects++;}publicCircle(doubler){radius=r;numOfObjects++;}publicdoublegetRadius(){returnradius;}publicvoidsetRadius(doublenewRadius){radius=newRadius;}publicstaticintgetNumOfObjects(){returnnumOfObjects;}publicdoublefindArea(){returnradius*radius*Math.PI;}}实验结果:3、按照任务2的要求创建一个有理数类Rational,应包含2个私有的长整型数据成员numerator和denominator分别存储一个有理数的分子和分母;该类应包含不带参数的构造方法,和带参数的构造方法。其中不带参数的构造方法把有理数的分子和分母初始化为0和1;带参数的构造方法中应对该有理数进行约分,为此需为该类创建一个成员方法privatelonggcd(longn,longd);该方法返回分子和分母的最大公约数。4、为理数类Rational创建四个成员方法分别实现2个有理数的加、减、乘、除运算,四个方法的方法签名如下:publicRationaladd(RationalsecondRational);publicRationalsubtract(RationalsecondRational);publicRationalmultiply(RationalsecondRational);publicRationaldivide(RationalsecondRational);5、为Rational类改写toString()方法,该方法改写后的功能是:以分数的形式输出一个有理数。例如:2/36、创建一个程序TestRationalClass,该类中分别创建2个Rational类的对象r1和r2,计算并显示它们的和、差、积、商。程序运行的结果应如下图所示:实验代码:publicclassRational{//Datafieldsfornumeratoranddenominatorprivatelongnumerator=0;privatelongdenominator=1;//DefaultconstructorpublicRational(){this(0,1);}//ConstructarationalwithspecifiednumeratoranddenominatorpublicRational(longnumerator,longdenominator){longgcd=gcd(numerator,denominator);this.numerator=numerator/gcd;this.denominator=denominator/gcd;}//FindGCDoftwonumbersprivatelonggcd(longn,longd){longt1=Math.abs(n);longt2=Math.abs(d);longremainder=t1%t2;while(remainder!=0){t1=t2;t2=remainder;remainder=t1%t2;}returnt2;}//GettermethodfornumeratorpubliclonggetNumerator(){returnnumerator;}publiclonggetDenominator(){returndenominator;}//AddarationalnumbertothisrationalpublicRationaladd(RationalsecondRational){longn=numerator*secondRational.getDenominator()+denominator*secondRational.getNumerator();longd=denominator*secondRational.getDenominator();returnnewRational(n,d);}//SubtractarationalnumberfromthisrationalpublicRationalsubtract(RationalsecondRational){longn=numerator*secondRational.getDenominator()-denominator*secondRational.getNumerator();longd=denominator*secondRational.getDenominator();returnnewRational(n,d);}//MultiplyarationalnumbertothisrationalpublicRationalmultiply(RationalsecondRational){longn=numerator*secondRational.getNumerator();longd=denominator*secondRational.getDenominator();returnnewRational(n,d);}//DividearationalnumberfromthisrationalpublicRationaldivide(RationalsecondRational)throwsRuntimeException{if(secondRational.getNumerator()==0)thrownewRuntimeException(Denominatorcannotbezero);longn=numerator*secondRational.getDenominator();longd=denominator*secondRational.getNumerator();returnnewRational(n,d);}//OverridethetoString()methodpublicStringtoString(){if(denominator==1)returnnumerator+;elsereturnnumerator+/+denominator;}}publicclassTestRationalClass{//Mainmethodpublicstaticvoidmain(String[]args){//Createandinitializetworationalnumbersr1andr2.Rationalr1=newRational(4,2);Rationalr2=newRational(2,3);//DisplayresultsSystem.out.println(r1.toString()+++r2.toString()+=+(r1.add(r2)).toString());System.out.println(r1.toString()+-+r2.toString()+=+(r1.subtract(r2)).toString());System.out.println(r1.toString()+*+r2.toString()+=+(r1.multiply(r2)).toString());System.out.println(r1.toString()+/+r2.toString()+=+(r1.divide(r2)).toString());}}实验截图:四、实验结果通过本次实验,我掌握了静态变量和静态方法的使用方法和使用环境。
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:94Java实验2
链接地址:https://www.777doc.com/doc-5891351 .html