![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=1739291812-Ld7U5usTxdYjRpoElItaVZLtBXyzjbFe-0-b921286914fdd3da95e11ccbd50edafd)
上面的接口定义了一个getGrade方法,该方法用于获得学生的学分等级。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/84_02.jpg?sign=1739291812-fdAdFWNr3owmdAceDf9m0cQAyQdXWm8R-0-81a7ff75522f81c928252c9ae6fbd7fe)
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/85_01.jpg?sign=1739291812-EdbhV0hB4mlPwTyNiSgxHWyGps37rStv-0-158176ea3d4cf11fa26569684860f242)
此类为抽象类,将本科生和研究生抽象成学生类。成员变量表示了学生的姓名、学生类型、成绩、年级,以及学分等级。成员函数分别表示了设置和获得学生姓名、类型、成绩、年级、学分等级。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/85_02.jpg?sign=1739291812-bNT3OrMRYmDPuXcI7nH9qc2JzfVD0DfD-0-4b4ae0fbb1095a5d8492762d6bc160ae)
为了能够获得学生学分等级,定义一个类用于实现GradeCalculate接口,并重写getGrade函数用于计算本科生学分等级。采用if-else判断成绩属于某个区间,用以返回对应的学分等级。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/85_03.jpg?sign=1739291812-KPpyXti5hAP7ucKaI5JXjPnh6xFbch3W-0-981d1e897d4417640fede413b06dcbb2)
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/86_01.jpg?sign=1739291812-CxE7MgHfXYoVBMr3nqXPGDhEhHAFRD6I-0-074c478d57c268bf26ace763a95570c2)
由于研究生的学分等级和本科生的学分等级计算方法不同,因此需要重新定义一个类用于计算研究生的学分等级。该类同样实现了GradeCalculate接口。计算方法采用switch循环进行。到此已将用于计算学生学分等级的方法全部实现,现在需要定义对应的学生类型。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/86_02.jpg?sign=1739291812-vUMNZQrAxW11Q1c35k07Dmm66M70Fl7j-0-c6f101cc087b1abfa0244f9ee38ce628)
此类为本科生类,继承了学生抽象类。该类包含一个构造函数,用于初始化所创建的对象实例。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/86_03.jpg?sign=1739291812-V8AmErclmqimpD99MrG0hV5wapoQKuxm-0-86ac3fe5ed37beee61b7e3b761c016d4)
同样,还需要一个研究生类。该类也是继承至学生抽象类。构造函数也用以初始化对象实例。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/86_04.jpg?sign=1739291812-PNDyMZfsDOMGyHt8AB3kF4eg26DnP8VL-0-a22efd1e6ce5e09ff793a2e4df588f76)
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/87_01.jpg?sign=1739291812-evW4DkrGRQWSlBhPyyp1yUtDNMLlm1bf-0-db78111ffe533bdab6b92ba621a927b0)
在定义完所有类以后,创建一个test类,用于测试所有的类和方法。这里定义了十个学生对象的数组用于存放学生实例。首先用for循环将其初始化,并随机获得学生的成绩用于计算学分等级。初始化完成后,再使用for循环将学生的信息进行输出。
编译并运行程序,其结果如图3-18所示。
![](https://epubservercos.yuewen.com/B95AF2/21122066801630906/epubprivate/OEBPS/Images/87_02.jpg?sign=1739291812-Qu6m5OLMHRUFijuCBVWQ4XA0egR7moBC-0-df4096d10eddd9a971e188d2ecf4bcb0)
图3-18 一个典型的流程控制应用