![名师讲坛:Java开发实战经典(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/824/26793824/b_26793824.jpg)
上QQ阅读APP看书,第一时间看更新
5.6 实例讲解——类设计分析
学习了以上的知识之后,下面来分析一道程序,以巩固之前所学习到的知识。在具体题目讲解之前先给出一些类的基本设计思路:
(1)根据要求写出类所包含的属性;
(2)所有的属性都必须进行封装(private);
(3)封装之后的属性通过setter和getter设置和取得;
(4)如果需要可以加入若干构造方法;
(5)再根据其他要求添加相应的方法;
(6)类中的所有方法都不要直接输出,而是交给被调用处输出。
题目:
定义并测试一个名为Student的类,包括属性有“学号”、“姓名”以及3门课程“数学”、“英语”和“计算机”的成绩,包括的方法有计算3门课程的“总分”、“平均分”、“最高分”及“最低分”。
1.本类中的属性及类型
本类中的属性类型如表5-1所示。
表5-1 Student类的属性及类型
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-T101_11268.jpg?sign=1739257446-1KoCFGddhl7Eqz1sAvXsq4cR2u4BDu2m-0-a30e540c5fd937b0bc265269a5d79595)
2.定义出需要的方法(普通方法、构造方法)
在本例中设计两个构造方法,一个是无参的构造方法,另外一个构造方法可以为5个属性进行赋值,如表5-2所示。
表5-2 需要使用的方法
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-T101_124002.jpg?sign=1739257446-vTmWcdTqQL7pX2AkhgTt1IjPRZ62l9Ab-0-23bba7a449be3b82063622d959216866)
根据以上的设置,本范例的类图如图5-10所示。
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-P102_124003.jpg?sign=1739257446-LuCoaRNDTNqlafGcBhHbjWMOSUV1lMWJ-0-885a9f70f1a1b944ef6485027dec1442)
图5-10 程序分析类图
按照以上的类图,编写具体的代码如下。
【例5.15】实现代码
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-P102_124004.jpg?sign=1739257446-3LyhfNEQwJFiegS3B1lZuIM6HQunBhxR-0-39c6ff9c54b9ae92a12a1792efca22ca)
编写测试类,测试以上代码:
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-P103_124006.jpg?sign=1739257446-mvyl67HP4xPxJWyylNf1jZdICQik5Y9j-0-600357f77e0516b5c7493833502044bb)
程序执行结果:
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-P104_124007.jpg?sign=1739257446-Sz8CLTHlmYvCxDrfhncVBTQBvPamdApH-0-3a1de68332180897c9e76d1f42e6420b)
以上的程序只是为读者简单地介绍了类的基本分析思路,实际的问题肯定会比本道例题要复杂得多,此时,就需要读者耐心分析,只有掌握好面向对象中的各个概念,才可以对程序代码进行更加合理的分析与设计。
提示
先从最基本的类开始分析。
读者可以试着按照以上程序的分析思路,分析一下身边的事物。例如,计算机、手机等,以加深对类的认识。