您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Java语言程序设计A实验1:类与对象
实验课程名称:Java语言程序设计A实验项目名称实验1:类与对象实验成绩实验者专业班级组别同组者无开始日期第一部分:实验预习报告(包括实验目的及意义,实验基本原理与方法,主要仪器设备及耗材,实验内容及要求,实验方案与技术路线等)一.实验目的及意义1.根据实际需求,使用UML类图,合理设计类及其成员(实例变量、方法)。2.编写、调用构造函数,初始化新建对象。3.编写、调用方法,完成相关操作。4.实现信息隐藏与封装。5.创建对象、调用对象方法。6.正确使用对象数组。7.设计、实现算法逻辑。二.实验基本原理与方法1.面向对象的概念、思想、思维方式。2.UML面向对象设计初步。2.类的概念、结构、定义、使用。3.构造函数的概念、结构、定义、调用。4.方法的概念、结构、定义、调用。5.信息隐藏与封装的概念、实现。6.对象的概念、创建、使用。7.对象数组的概念、使用。8.控制流程。三.主要仪器设备及耗材1.PC及其兼容机。2.计算机操作系统。3.程序编辑器EditPlus。4.Java开发工具JDK。四.实验内容及要求实验1-1:请设计一个类Student,该类的实例变量有学号studentNumber、姓名studentName、专业specialty、学费tuition。学费tuition要实现封装,最低学费4500元。请绘制完整的UML类图,写出类Student的Java源代码。然后,编写测试类StudentTest,给出运行结果。实验1-2:编写类Book,其实例变量简化为:bookNamenumRated5numRated4numRated3numRated2numRated1方法addRating()应保证能接收一个有效整数作为形参,将与形参匹配的评级人数加1。例如,如果接收3,则numRated3加1。方法getAverage(),返回所有评级的平均值。编写测试类BookReviewTest,在main()方法中,创建一个Book对象,为这本图书评级6次,最后输出这本图书的书名、平均评级。程序的一种可能的输出结果:HeadFirstJava,AverageRating:4.2实验1-2(数组版本):重做实验1-2,使用数组代替变量保存图书评级,所有修改只应局限于类Book内部,测试类BookReviewTest无需修改。实验1-3(选做):编写储蓄账户类及测试类,模拟存款,参考以下运行方式:(1)新开5个储蓄账户,各储蓄账户的编号、户名在新开储蓄账户时初始化,假设每位用户新开储蓄账户时都存入了一笔钱。(2)提示用户从键盘输入储蓄账户编号。(3)若输入的储蓄账户编号与新开的5个储蓄账户编号之一匹配,则提示用户从键盘输入存款金额,存款金额必须大于0,否则显示错误提示,直到用户输入的存款金额大于0为止。(4)相应储蓄账户的余额被更新。(5)存款完成后,提示存款成功,显示该储蓄账户的编号、户名、余额。(6)若输入的储蓄账户编号与新开的5个储蓄账户编号均无法匹配,显示错误提示,并询问是否还要继续存款。(7)用户输入yes,继续执行步骤(2),否则显示退出信息。最基本要求:绘制UML类图;储蓄账户的余额必须确保大于等于0。五.实验方案及技术路线(设计思路、UML类图、算法、注意事项)1)对于实验1-1,可以对studentNumber,studentName,specialty,tuition四个变量都进行封装,使用private关键字,然后在类中使用get和set方法,实现对这些实例变量的获取和更改。在setTuition()方法中,首先通过if语句对传入的参数进行判断,若数值大于或等于4500,则修改成功,否则输出错误提示,简略的UML图如下:2)对于实验1-2中,各个星级人数的统计通过switch(){case}语句即可实现,但要注意的是,最好加上default语句用以处理错误输入的情况。数组版本只需要将numRated5、numRated4、numRated3、numRated2、numRated1这几个变量放入一个int[]数组中即可。3)实验1-3中,因为考虑到各个储蓄账号不能重复,并且在每次操作的时候需要进行匹配,若每次都通过for()循环遍历则比较繁琐,操作时间长,说以采用HashMap集合存储账号,账号number为关键字,每个Account对象为值,因为在测试类中会使用到containsKey()等方法,所以在Account类中需要重写toString()、equal()以及hashCode()方法。简略的UML图如下:第二部分:实验过程记录(可加页)(代码、运行结果、实验中出现的问题及解决过程)实验1-1程序代码如下:1)Student类代码:publicclassStudent{privateStringstudentNumber;privateStringstudentName;privateStringspecialty;privatedoubletuition;publicStudent(StringstudentNumber,StringstudentName,Stringspecialty,doubletuition){this.studentNumber=studentNumber;this.studentName=studentName;this.specialty=specialty;this.tuition=tuition;}publicvoidsetStudentNumber(StringstudentNumber){this.studentNumber=studentNumber;}publicStringgetStudentNumber(){returnstudentNumber;}publicStringgetStudentName(){returnstudentName;}publicvoidsetStudentName(StringstudentName){this.studentName=studentName;}publicStringgetSpecialty(){returnspecialty;}publicvoidsetSpecialty(Stringspecialty){this.specialty=specialty;}publicvoidsetTuition(doubletuition){if(tuition4500){System.out.println(最低学费为4500,请不要低于此数值。);}else{this.tuition=tuition;}}publicdoublegetTuition(){returntuition;}}2)StudentTest类代码:publicclassStudentTest{publicstaticvoidmain(String[]args){//创建学生实例Studentstudent1=newStudent(学号,姓名,专业,5000);Studentstudent2=newStudent(学号,姓名,专业,5500);//修改student2的学号student2.setStudentNumber(新学号);//修改student2的姓名student2.setStudentName(新姓名);//修改student1的专业信息student1.setSpecialty(新专业);//修改student1学费信息student1.setTuition(4500);//输出student1和student2的信息System.out.println(学号:+student1.getStudentNumber()+\n+姓名:+student1.getStudentName()+\n+专业:+student1.getSpecialty()+\n+学费:+student1.getTuition()+\n);System.out.println(学号:+student2.getStudentNumber()+\n+姓名:+student2.getStudentName()+\n+专业:+student2.getSpecialty()+\n+学费:+student2.getTuition()+\n);}}运行结果如下:省略实验1-2程序代码如下:1)Book类代码:publicclassBook{privateStringbookName;privateintnumRate1,numRate2,numRate3,numRate4,numRate5;publicBook(StringbookName){this.bookName=bookName;//初始化各星级的人数为0numRate1=0;numRate2=0;numRate3=0;numRate4=0;numRate5=0;}publicStringgetBookName(){returnbookName;}publicvoidsetBookName(StringbookName){this.bookName=bookName;}publicvoidaddRating(intrateIn){switch(rateIn){case1:numRate1++;break;case2:numRate2++;break;case3:numRate3++;break;case4:numRate4++;break;case5:numRate5++;break;default:System.err.println(数字+rateIn+不在星级评定范围,此次输入无效,请输入数字1-5!);break;}}publicdoublegetAverage(){doubleaverage=0;average=(numRate1*1+numRate2*2+numRate3*3+numRate4*4+numRate5*5)*1.0/(numRate1+numRate2+numRate3+numRate4+numRate5);returnaverage;}}2)(数组版)Book类代码:publicclassBook{privateStringbookName;privateint[]numRate=newint[5];publicBook(StringbookName){this.bookName=bookName;//初始化各星级的人数为0for(inti=0;i5;i++){numRate[i]=0;}}publicStringgetBookName(){returnbookName;}publicvoidsetBookName(StringbookName){this.bookName=bookName;}publicvoidaddRating(intrateIn){switch(rateIn){case1:numRate[0]++;break;case2:numRate[1]++;break;case3:numRate[2]++;break;case4:numRate[3]++;break;case5:numRate[4]++;break;default:System.err.println(数字+rateIn+不在星级评定范围,此次输入无效,请输入数字1-5!);break;}}publicdoublegetAverage(){doubleaverage=0;average=(numRate[0]*1+numRate[1]*2+numRate[2]*3+numRate[3]*4+numRate[4]*5)*1.0/(numRate[0]+numRate[1]+numRate[2]+numRate[3]+numRate[4]);returnaverage;}}3)BookReviewTest类代码:importjava.util.Scanner;publicclassBook
本文标题:Java语言程序设计A实验1:类与对象
链接地址:https://www.777doc.com/doc-5091314 .html