![Android移动应用开发技术与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/15/40681015/b_40681015.jpg)
上QQ阅读APP看书,第一时间看更新
实例3-1:一个典型流程控制应用
例如下面的应用,先定义一个接口,该接口的代码如下:
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/84_01.jpg?sign=1739527284-tNjpGInEElkQK9ZVzTSqIwZU6feUoJ6b-0-63827abf2a094d5d9e1ce1282a5a52d0)
上面的接口定义了一个getGrade方法,该方法用于获得学生的学分等级。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/84_02.jpg?sign=1739527284-AbiuXqEX77GEukQ7AhNLF9vaEd2vQAV5-0-6a710e56d24238df3104c74d44a25fdd)
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/85_01.jpg?sign=1739527284-DNFd8jRTjehmgCtjbzIVlR0avSmjn9UL-0-256cda68c75f7ddeb22f598f81fefc4c)
此类为抽象类,将本科生和研究生抽象成学生类。成员变量表示了学生的姓名、学生类型、成绩、年级,以及学分等级。成员函数分别表示了设置和获得学生姓名、类型、成绩、年级、学分等级。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/85_02.jpg?sign=1739527284-ZYKVlK1hsfv0FnPrRsb3jEmSCvOzpAW9-0-baed50142ecb3f8b2f44cc2b533358fe)
为了能够获得学生学分等级,定义一个类用于实现GradeCalculate接口,并重写getGrade函数用于计算本科生学分等级。采用if-else判断成绩属于某个区间,用以返回对应的学分等级。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/85_03.jpg?sign=1739527284-AcHo0RM0rWx2x897zY3CsiPTBRFGXdot-0-25b799620e7daa3ad40b5f8d76bd3856)
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/86_01.jpg?sign=1739527284-qV7vSc6vXIIEYCYk8xKbM8pNUeA6aXMI-0-6e63070ba6ba03fd729c3887e4d55460)
由于研究生的学分等级和本科生的学分等级计算方法不同,因此需要重新定义一个类用于计算研究生的学分等级。该类同样实现了GradeCalculate接口。计算方法采用switch循环进行。到此已将用于计算学生学分等级的方法全部实现,现在需要定义对应的学生类型。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/86_02.jpg?sign=1739527284-ZtxK9R4POChOnZ9Bvt3kfSaBlUkpVP29-0-218c9fd525ea2d7cf3a96ce04cf4ce68)
此类为本科生类,继承了学生抽象类。该类包含一个构造函数,用于初始化所创建的对象实例。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/86_03.jpg?sign=1739527284-MtMjLwv9wM3V5hykOaoaYICg8VAaBf5t-0-ccbdcdd72c6b5d612e213686bce876fe)
同样,还需要一个研究生类。该类也是继承至学生抽象类。构造函数也用以初始化对象实例。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/86_04.jpg?sign=1739527284-Figh7ICZ8fyD361oKDAhR1tG7KqeopPz-0-5ded6b93c8e24885b5a33251d289254c)
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/87_01.jpg?sign=1739527284-XbVM9xkcWpLey8k53lCWT70I8WYdM14W-0-735631fed5a576e9980110a46474e368)
在定义完所有类以后,创建一个test类,用于测试所有的类和方法。这里定义了十个学生对象的数组用于存放学生实例。首先用for循环将其初始化,并随机获得学生的成绩用于计算学分等级。初始化完成后,再使用for循环将学生的信息进行输出。
编译并运行程序,其结果如图3-18所示。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/87_02.jpg?sign=1739527284-YqOfUXIIOAmzSTIPguywfVP6jjyeY0IJ-0-a1dc565d2485b9cedbd6db4b3002172f)
图3-18 一个典型的流程控制应用