【Java】 目前主要更新Java,一起学习一起进步。
本期主要介绍综合案例——发红包【界面版】
红包文化源远流长。从古时的红色纸包,到手机 App 中的手气红包,红包作为一种独特的中华文化
传承至今。之前
的课程中,我们也编写过程序,模拟发普通红包。那么今天,我们将整合基础班课程中所有的技术
和知识,编写一
个带界面版的 发红包 案例。
目前,我们尚未学习过任何与界面相关的类。所以,界面相关代码,已经给出。请运用所学技术分
析并使
用。
分析并使用已给出的类,编写程序,设置红包类型。
小贴士
红包类型:
1. 普通红包:金额均分。不能整除的,余额添加到最后一份红包中。
2. 手气红包:金额随机。各个红包金额累和与总金额相等。
红包场景:
此案例是模拟群主给群成员发红包,群主自己打开最后一个红包的场景。
已知的类:
1. RedPacketFrame :一个抽象类,包含了一些属性,是红包案例的页面。
2. OpenMode :一个接口,包含一个分配方法,用来指定红包类型。
环境搭建:
1. 创建项目:名称自定义,建议为 RedPacketDemo 。
2. 导入图片:将 pic 目录,导入项目中,与 src 目录平级。
3. 导入已知类:在 src 下创建一个包,名字自定义,建议为 known ,将类 RedPacketFrame 、接
口 OpenMode
拷入。
代码实现:
1. 定义 RedPacket 类,继承 RedPacketFrame ,代码如下:
2. 定义测试类,创建 RedPacket 对象,代码如下:
运行代码,打开一个发红包的页面。可以输入总金额,红包个数,留言信息。
点击 塞钱进红包 按钮,跳转到下一页面。
点击 谁谁谁谁 和 開 ,两个区域,发现可以设置两项内容:
谁谁谁谁 :表示群主在发红包,可设置群主名称。通过此方法,熟悉类结构,直接调用父类的方
法。
開 :表示打开红包,跳转到下一页面。但是开启之前,必须先设置红包的类型,否则无法开启。
3. RedPacket 对象,设置群主名称。
setOwnerName (
String ownerName ) ,是字符串作为参数。我们只需要传递一个字符串即可。
4. RedPacket 对象,设置红包类型。
setOpenMode(OpenMode openMode) ,是接口作为参数。我们必须定义接口的实现类,重写接
口中方法,并传
递实现类对象到 setOpenMode 方法中,方可设置完成。再观察接口:
5. 普通红包,打开方式 Common ,代码如下:
6. 发普通红包,代码如下:
7. 手气红包【重点】
本质上,手气红包就是把总金额 totalMoney 随机分成指定的 count 份,所以必须规定每一份金额
的取值范围。如
果范围太小,可能导致后分配红包金额特别大。反之范围太大,可能导致后分配红包金额为 0 ,不
够分。可见,取
值范围的定义规则,是手气红包的关键所在。
我们规定:每一份随机金额范围(除最后一份),最小值为 1 ,最大值为 当前剩余平均金额的 2 倍
,单位为 " 分 " 。
计算公式:
举例:总额为50元,发5个红包。
小贴士:为方便表格中进行运算,此处,单位为 " 元 " 。程序中,建议换算为 " 分 " 进行运算。
手气红包,打开方式 Lucky ,代码如下:
8. 发手气红包,代码如下:
通过 发红包 案例,你都学到了什么呢?请你思考如下问题:
1. 基础语法,你是否清晰?
2. 一些基本的类的方法,你是否能够调用?
3. 案例中哪里体现了继承,继承的作用是什么?
4. 接口作为参数,如何使用?
5. 接口作为成员变量,如何使用?
6. 如何简化接口的使用方式?
相信每位学员,都会有自己的思考和答案。也相信大家,随着开发经验的丰富,对于技术的理解会
更加深入,对技
术的运用会更加纯熟。通过对大量案例的不断积累,最终写出属于你自己的程序,成为一名真正的
coder 。感谢大
家参与学习 JavaSE 基础班课程,技术的道路上,这只是一个开始!谢谢大家!