1、面向对象基础05综合讲解110. 面向对象基础(05) 本次课程是习题课程,将之前所学到的各种知识综合应用在题目之中, 并进行综合讲解,在讲解的时候为读者提供了解决问题的基本思路。 blog: 零基础学JAVAJava SE面向对象部分-10.面向对象基础(05)上季内容回顾:1、类和对象2、引用的内存分配3、封装性4、构造方法5、String类6、this关键字在编写代码之前建立好应该具备的类,之后再为类添加一些属性,属性都是需要被封装的,封装之后必须写setter和getter方法才可以访问属性,如果有需要则可以加入构造方法设置属性。本季主要知识点:1、 题目讲解2、 如何去分析题目本次课
2、程是习题课程,将之前所学到的各种知识综合应用在题目之中, 并进行综合讲解,在讲解的时候为读者提供了解决问题的基本思路。分析下这个题目哈我们最好先画下类图类名属性方法属性的表示:权限 属性名称:类型-name:String=private String name ;方法的表示:权限 方法名称(参数名称:参数类型,参数名称:参数类型):返回值类型+setName(name:String):void=public void setName(String name)用手工画类图会非常麻烦哈,我们可以使用jude这样的工具。JUDE(Java and UML Developers Environment
3、) 1.2.1在这里,我们新建三个类:Student,Class_,Out类我们定义好了后,我们再来定义下类滴属性哈,先Student类定义name、age、score属性。属性定义后我们就定义其setter和getter方法并设置其参数。依此类推然后是班级Class类定义name、de.ion两个属性。同样设置其setter和getter方法并设置参数。最后是输出类Out,这个非常简单,只要定义一个print方法就可以了。最后一张完整的类图就出来了哈在这个工具中,可以根据图形生成代码,我们看下面哈选择文件-导出Java选择存放的路径现在目录中就生成了这三个类文件我们把它们合并到一个文件中,这
4、样直观一点哈验证下效果哈修改代码为其加入构造方法classStudent privateString name;privateintage;privatefloatscore;/修改程序,加入一个构造publicStudent()publicStudent(String name,intage,floatscore)this.setName(name) ;this.setAge(age) ;this.setScore(score) ;publicvoidsetName(String name) this.name = name ;publicString getName() returnthi
5、s.name ;publicvoidsetAge(intage) this.age = age ;publicintgetAge() returnthis.age ;publicvoidsetScore(floatscore) this.score = score ;publicfloatgetScore() returnthis.score ;classClass_ privateString name;privateString de.ion;publicClass_()publicClass_(String name,String de.ion)this.setName(name) ;t
6、his.setDe.ion(de.ion) ;publicvoidsetName(String name) this.name = name ;publicString getName() returnthis.name ;publicvoidsetDe.ion(String de.ion) this.de.ion = de.ion ;publicString getDe.ion() returnthis.de.ion ;classOut publicvoidprint(Student stu, Class_ cla) System.out.println(学生姓名:+stu.getName(
7、) ;System.out.println(学生年龄:+stu.getAge() ;System.out.println(学生成绩:+stu.getScore() ;System.out.println(班级名称:+cla.getName() ;System.out.println(班级描述:+cla.getDe.ion() ;publicclassDemo02publicstaticvoidmain(String args)Student s =newStudent() ;s.setName(王乾) ;s.setAge(27) ;s.setScore(99.9f) ;Class_ c =ne
8、wClass_() ;c.setName(JAVA强化班) ;c.setDe.ion(学习JAVA技术强化班) ;newOut().print(s,c) ;加入构造方法后效果怎么样呢?验证一下哈程序我们已经修改了,我们可以将程序代码导入到工具之中,自动生成类图。首先我们新建一个文件然后选择导入Java找到Java程序的路径单击start如果属性是两个单词的,则第一个单词的首字母小写,之后每个单词的首字母大写。/*1、定义好要使用的类2、定义好类中的属性3、为属性封装4、为封装后的属性设置setter和getter方法5、如果需要可以为类中添加构造方法6、为类中添加所需要的其他方法*/class
9、Student/学生编号privateString stuno ;/学生姓名privateString name ;/数学成绩privatefloatmathScore ;/英语成绩privatefloatenglishScore ;/计算机成绩privatefloatcomputerScore ;publicStudent()publicStudent(String stuno,String name,floatmathScore,floatenglishScore,floatcomputerScore)this.setStuno(stuno) ;this.setName(name) ;th
10、is.setMathScore(mathScore) ;this.setEnglishScore(englishScore) ;this.setComputerScore(computerScore) ;publicvoidsetStuno(String stuno)this.stuno = stuno ;publicvoidsetName(String name)this.name = name ;publicvoidsetMathScore(floatmathScore)this.mathScore = mathScore ;publicvoidsetEnglishScore(floate
11、nglishScore)this.englishScore = englishScore ;publicvoidsetComputerScore(floatcomputerScore)puterScore = computerScore ;publicString getStuno()returnthis.stuno ;publicString getName()returnthis.name ;publicfloatgetMathScore()returnthis.mathScore ;publicfloatgetEnglishScore()returnthis.englishScore ;
12、publicfloatgetComputerScore()returnputerScore ;/添加所需要的其他方法/ 在编写类的时候一定要记住一个原则:任何的输出绝对不能在类中完成/ 所有要输出的内容在类中只是把值返回来,交给调用处输出/ 取得全部成绩的总和publicfloatgetSum()returnthis.mathScore+this.englishScore+puterScore ;/取得平均成绩publicfloatgetAvg()returnthis.getSum() / 3 ;/取最高的成绩publicfloatgetMax()/三个成绩相比floatmax = 0.0f
13、;if(this.mathScorethis.englishScore)max =this.mathScore ;elsemax =this.englishScore ;if(maxthis.englishScore)min =this.englishScore ;elsemin =this.mathScore ;if(minputerScore)min =puterScore ;returnmin ;publicclassDemo03publicstaticvoidmain(String args)Student s =newStudent() ;s.setStuno(s01) ;s.set
14、Name(王乾) ;s.setMathScore(89.8f) ;s.setEnglishScore(99.0f) ;s.setComputerScore(88.8f) ;System.out.println(s.getName()+的成绩单(+s.getStuno()+):) ;System.out.println(t|- 总成绩:+s.getSum() ;System.out.println(t|- 平均成绩:+s.getAvg() ;System.out.println(t|- 最高成绩:+s.getMax() ;System.out.println(t|- 最低成绩:+s.getMin() ;测试下效果一般来说分析面向对象程序的步骤:1、可以画一些类的草图2、之后定义每个类中的属性,属性定义完之后必须封装3、封装的属性如果需要被外部所访问,则肯定必须写setter和getter4、如果需要在对象实例化时可以为其属性赋初始值,则可以加入构造方法,如果有必要则可以加入多个构造(一个是无参的,其他的是有参的)5、为类中添加程序所必须的方法6、进行测试记住:开发中main 方法就是一个测试端,只在里面写少量的代码即可,不可多写,也可以把main 方法称为客户端。总结通过这一季的习题练习哈,我们一定要培养面向对象的解决的思路起来哈#本文出自 “王乾De技术博客” 博客,谢绝转载!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1