您好,欢迎访问三七文档
南昌大学实验报告---(3)类与对象学生姓名:王维学号:6100212202专业班级:网工121班实验类型:■验证□综合□设计□创新实验日期:实验成绩:一、实验目的本实验的目的用于指导读者掌握Java语言面向对象的程序设计方法,理解对象的封装等概念,要求读者在调试实例程序后,总结出面向对象的事务定义以及以对象的形式进行封装等内容。二、实验内容1、课本P221,8-6和课本P237,8.1题2、编写一个名为“复数”的类,包含复数的实部和虚部(数据成员),以及复数之间的基本算术运算:加、减(方法成员),并要求复数加减运算,程序运行中能对给定的复数进行运算,并打印运算的结果。3、用类来描述游戏角色的交手次数、经验值、生命值之间的关系,并断定角色决斗的胜负。三、实验要求1、加减运算能够接收不同类型的参数既可以实现复数与实数的加减、复数与复数的加减运算。2、两游戏角色决斗。角色1交手次数+1,生命值-1,经验值+2;角色2交手次数+1,生命值-2,经验值+3。经验值每增加50时,生命值+1;生命值0判为负。生命值初始为1000,经验值初始为0。3、给定二个不同的角色,判定交手的胜负关系。4、实验报告给出决斗结果和交手次数5、实验报告给出所有源代码。四、实验环境1、PC微机;2、DOS操作系统或Windows操作系统;3、Eclipse程序集成环境。五、实验步骤内容一:1、创建“复数”类Complex,定义实部、虚部成员2、定义构造函数接收二个double参数用来初始化数据成员3、定义二个复数运算函数plus()以及minus()各接收一个复数类型以实现复数与复数的加减运算。4、定义二个复数运算函数plus()以及minus()各接收一个double类型以实现复数与与实数的加减运算。4、定义一个打印方法。5、在main()方法中创建复数对象并调用相关方法来验证。内容二:1、建立角色类Role,给出相应的成员,并能以生命值、经验值初始化角色对象。2、在角色类中建立fight方法,接收一个角色类型的参数并与之“战斗”,返回胜者信息。3、在主函数中初始化二个角色,调用fight方法。六、测试数据略七、实验报告(学生完成)实验报告应包括以下几个部分:1、程序流程图;鉴于复数类Complex没有复杂的流程,所以没有画流程图。角色类的流程图,我分了三个部分:2、程序的数据结构设计;复数类Complex包含:成员:double类型的real和imaginary,分别代表实部和虚部方法:publicComplexplus(Complexa);publicComplexminus(Complexa);publicComplexplus(doublea);publicComplexminus(doublea);分别进行复数与复数或实数的加减法运算publicStringprint()//打印复数类的信息角色类Role包含:成员:privateintlife;//生命值privateintexp;//经验值privateintlifeSub;//每次战斗生命值减少的量privateintexpAdd;//每次战斗经验值增加的量publicstaticintnum;//交手的次数privateintexpBase;//经验值增加50的基准方法:私有成员exp和life的set和get方法。publicbooleanfight(Roleother)//参数为Role的fight方法。publicvoidfight()//不带参数的fight方法。3、程序的源代码及相关注释复数类源码:packageshiyan3;publicclassComplex{privatedoublereal;privatedoubleimaginary;publicComplexplus(Complexa){doublex=this.real+a.getReal();doubley=this.imaginary+a.getImaginary();Complextmp=newComplex(x,y);returntmp;}publicComplexminus(Complexa){doublex=this.real-a.getReal();doubley=this.imaginary-a.getImaginary();Complextmp=newComplex(x,y);returntmp;}publicComplexplus(doublea){doublex=this.real+a;doubley=this.imaginary;Complextmp=newComplex(x,y);returntmp;}publicComplexminus(doublea){doublex=this.real-a;doubley=this.imaginary;Complextmp=newComplex(x,y);returntmp;}publicStringprint(){if(this.imaginary0)returnthis.real+++this.imaginary+i;elseif(this.imaginary0)returnthis.real++this.imaginary+i;elsereturnthis.real+;}publicdoublegetReal(){returnreal;}publicvoidsetReal(doublereal){this.real=real;}publicdoublegetImaginary(){returnimaginary;}publicvoidsetImaginary(doubleimaginary){this.imaginary=imaginary;}publicComplex(){};//无参数的构造方法。publicComplex(doublereal,doubleimaginary){this.real=real;this.imaginary=imaginary;}publicstaticvoidmain(String[]args){Complexa=newComplex(1,2);Complexb=newComplex(4,5);Complexc=newComplex(2,3);System.out.println(a.print()+和+b.print()+相加等于+a.plus(b).print());System.out.println(a.print()+和+c.print()+相减等于+a.minus(c).print());System.out.println(a.print()+和+12+相加等于+a.plus(12).print());System.out.println(a.print()+和+10+相减等于+a.minus(10).print());}}角色类Role源码:packageshiyan3;publicclassRole{//生命值privateintlife;//经验值privateintexp;//交手的次数privateintlifeSub;privateintexpAdd;publicstaticintnum;//经验值增加50的基准privateintexpBase;publicintgetLife(){returnlife;}publicvoidsetLife(intlife){this.life=life;}publicintgetExp(){returnexp;}publicvoidsetExp(intexp){this.exp=exp;}publicvoidfight(){life-=lifeSub;exp+=expAdd;if((exp-expBase)=50){life++;expBase+=50;}}publicbooleanfight(Roleother){num++;this.fight();other.fight();System.out.println(第+num+次战斗开始);if(life=0&&other.getLife()=0){System.out.println(战斗结束,两人打平);returntrue;}elseif(life=0){System.out.println(战斗结束,角色2获胜);returntrue;}elseif(other.getLife()=0){System.out.println(战斗结束,角色1获胜);returntrue;}else{System.out.println(角色1的生命值为+life+,角色2的生命值为+other.getLife());System.out.println(角色1的经验值为+exp+,角色2的经验值为+other.getExp());returnfalse;}}publicRole(intlife,intexp,intlifeSub,intexpAdd){super();this.life=life;this.exp=exp;this.expBase=exp;this.lifeSub=lifeSub;this.expAdd=expAdd;}publicstaticvoidmain(String[]args){Rolea=newRole(1000,0,1,2);Roleb=newRole(1000,0,2,3);//死循环,两人战斗,直到分出胜负为止while(!a.fight(b)){}}}4、程序运行结果的分析。复数类的运行结果:角色类程序的部分运行结果:八、思考题(学生完成)1.定义一个点类“Point”。Point类的属性有x轴和y轴坐标,可以通过方法setX()设置x轴坐标,方法setY()设置y轴坐标,方法getX()获得x轴坐标,方法getY()获得y轴坐标。编写一个测试类PointTest来创建Point类的对象,测试该类。2.编程定义一个栈类,它封装了栈数组,判断栈空方法、判断栈满方法以及进栈和出栈。Point类:packageshiyan3;classPoint{privatedoublex;privatedoubley;publicdoublegetX(){returnx;}publicvoidsetX(doublex){this.x=x;}publicdoublegetY(){returny;}publicvoidsetY(doubley){this.y=y;}}publicclassPointTest{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubPointa=newPoint();a.setX(10);a.setY(20);System.out.println(该点的坐标为(+a.getX()+,+a.getY()+));a.setX(30.5);a.setY(55.3);System.out.println(该点的坐标为(+a.getX()+,+a.getY()+));}}Stack类:packageshiyan3;importjava.util.Scanner;publicclassStack{intstacksize=10;privateint[]elem;publicStack(intstacksize){elem=newint[stacksize];this.stacksize=stacksize;}//当前栈中元素的个数privateintcount;publicbooleanisEmpty(){returncount==0?true:false;}publicbooleanisFull(){returncount==stacksize?true:false;}publicvoidpush(intvar){if(this.isFull()){Syste
本文标题:实验3--类与对象
链接地址:https://www.777doc.com/doc-7367342 .html