最近应公司领导需求,开发编程趣味案例,提升学生学习兴趣,引导学生更好的理解程序逻辑。业余时间,我搜集总结了一些网络大神提供案例,对需求进行了改编和升级,增加了趣味性。这里我先将部分案例记载在博客中~~
相关“面向对象基础知识点”的需求如下:
在JAVA程序中,经常要对时间进行操作,那么自己实现一个时间类,满足程序中的需要。
定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),
为了保证数据的安全性,这三个成员变量应声明为私有。
为MyTime类定义构造方法,以方便创建对象时初始化成员变量。
再定义diaplay方法,用于将时间信息打印出来。
为MyTime类添加以下方法:
addSecond(int sec) addMinute(int min) addHour(int hou)
subSecond(int sec) subMinute(int min) subHour(int hou)
逻辑分析:
在需求中定义私有属性和提供公共方法以及提供构造函数这三个需求都是面向对象中,非常简单的,可以直接通过编辑器生成,定义display方法也只是对于时分秒数值进行打印,比较容易实现。此题难度在于 增加时间与减少时间。但是二者逻辑相似。
这里,我们以增加时间为例,首先判断传入参数的正负,如果是正数则增加时间,如果为负数其实是减少时间,故负数时应该调用减少小时的方法,而增加小时数超过了24小时,意味着日期也在增加,时间类不讨论日期的问题,那么我们需要刨除增加的天数外,获取还剩余小时数。故编码时应该对于增加时间进行取余,然后添加到原有的小时数中。如果相加后的和操作24,又以为了多了一天,需要减掉多着一天的24小时,就获取了第二天的时间,在此思路下,代码如下:
// 增加小时的方法
public void addHour(int hou) {
if (hou>=0) { //当传入参数为正数为增加小时
// 一天24个小时,添加的时间是否超过24,就可视为又添加了日期,只计算时间不针对日期,首先对于24进行取余
hou = hou%24;
// 将刨除天数之后的小时数,添加到原来小时的后面
int totalhour = hour+hou;
if (totalhour&l