时光飞逝,转眼面向对象程序设计课程接近了尾声,本周我们完成了第三阶段的学习。JAVA的学习是循序渐进一环扣一环的,经过了三个阶段的学习,本身对JAVA的了解也更为深刻立体了。由于上学期进行了C语言的学习,所以在此进行一些JAVA与C语言之间的对比说明。C语言为面向过程的程序设计语言,注重过程的构建,函数是重中之重。对比JAVA的学习期间,更加注重一些基础算法的学习,属于为自己未来的计算机方面的学习打下了基础。而JAVA属于面向对象的程序设计课程,从某中意义来讲,JAVA脱胎于C语言及其衍生的C++语言,实现了更加友好的编译环境。面向对象顾名思义,JAVA中有一个及其重要的概念——对象。初学JAVA,对对象的概念十分模糊,很难理解。但是现在却认识到,对象,实际上就类似于大千世界每一个有实体的存在(可以理解为类的实例化),而我们可以通过类的实例化对象来对类的特定属性来进行操作。相比于面向过程的编程语言,无疑更加贴合现实生活,符合人类对世界的认知。且JAVA的编译器eclipse给编写代码提供了巨大的便利,弹出的代码提示,导入文件的提示,DEBUG,测试,构造了一个十分友好的环境。诚然,JAVA提供了一个相对友好的环境,但是比起C语言,代码执行效率不足的问题却是硬伤。运用JAVA与C语言实现欧拉筛法来统计一千万以内的素数个数,C语言的效率远高于JAVA。也不难理解,JAVA中许多包装的类等的调用都需要时间,这也是一个弊端。虽然没有学习过时间复杂度的计算,但是实际生活中还是能体会到基于JAVA实现的程序长久以后的效率,运行速度不如C或者C++。但是我们不能否认JAVA的巨大优势,对编程人员的友好,跨平台编译都是它火热,风靡全球的重要原因。
接下来进行第三阶段的作业分析。第三阶段的作业没有了前几个阶段的类图提示,意味着我们必须着手思考类之间的关系,自己设计、调用类,难度比较大,因为这更加考察了我们的创新能力。
第九次作业:雨刷程序功能扩展设计。刚开始学习类的相关知识时就已经介绍过雨刷程序,不过此次作业需要将其功能实现拓展,增强其可复用性。因为我们都知道,一个合格的程序,不可能只满足单方面的要求,如果客户需求增加,如果需要重新编写代码,那可太糟糕了。欲解决这个问题,我将Agent类修改为抽象类,特定的雨刷控制系统可以继承自这个Agent类,以实现特定的控制功能。实际上,这是一种常见的思想,将可复用部分定义为一个抽象类(或接口),之后去继承(实现)它。
第十次作业:统计JAVA程序中关键词出现的次数。这道题考察了数据结构中TreeMap的用法。将出现的词与次数存入MAP中,使执行效率更加高效,更加简洁。由于刚开始学习数据结构相关的内容,对map的用法十分不了解,翻及上课的录像时,发现题目与例题有异曲同工之妙。仔细研究了一阵之后终于能够解决了问题。
最后一次作业是表达式求值。通过钻研这道题,我了解了我们平日里使用的表达式计数法是中缀表达式,而后缀表达式(逆波兰式)更加符合计算机语言的风格。所以去除表达式的空格后将中缀表达式转化为后缀表达式,再进行计算。至于在合法性校验的方面,由于考虑的情况并没有很多,所以我选择了传统的if else方法,更加直观。表达式计算的重点在于栈的运用,何时入栈,弹出是十分重要的。
总的来说,JAVA面向对象程序设计课程在PTA的作业已经步入了尾声,我们的JAVA课程学习也即将迎来终点,回想起刚刚开始学习JAVA时的惶恐不安,现在觉得有些如释重负。当然,虽然课程结束了,但是软件的学习才刚刚开始。我们现在所学的一切都是为了将来埋下伏笔。无论是苦也好累也罢,能够有所收获才是最令人喜悦与欣慰的。其实还有许多知识没有掌握彻底,漫漫人生路,更多的是依靠自学,不可能碰到解决不了的问题,就向他人抛出疑惑,这样只会被质疑自己的能力,只有通过自我学习,致力于完善自身,才能获得自己的认同及他人的尊重。
关于对课程的建议:由于我们是上学期学习了C语言,这个学期学习JAVA课程,两种思想不同的编程思想其实转化需要一定的时间,所以作业前期的难度设置是非常合理的。我们可以在学习JAVA语法过程中,将思维进行一定的转化,提升自己的编程语言的亲和度。但是随着进入类的阶段时,老师为了降低难度给出了类图,以至于当时完成作业时,是先将类图中的各个方法写出来(搭建出一个框架,解决方案留待日后解决),这样其实会抑制学生的自主思考。建议是,例如第三次作业中的日期问题面向对象设计两道题目,可以给出一道题目的类图,由于两道题欲实现的内容相差无几,可以让学生自主探究第二题的类的结构,关系。这样更加有助于培养学生的探究能力。同时在下一次作业可以适当降低难度,让学生自己设计类之间的关系,当然难度比较大的题目可以给出类图。JAVA类之间的关系更应该类似于引导,让学生可以自主设计实现,而不是照葫芦画瓢,这样的效果始终具有局限性。当然,学习初期就挑战设计类,对一定的学生具有挑战性,所以可以设计为附加题,有能力实现的学生先行完成该题目类的设计。同时建议正则表达式的内容可以讲解多几个题目,这方面比较晦涩,初学时很难理解,花费了许多时间收到的效益也并不高。
总体来说,JAVA课程的设计是十分合理、十分科学的。总的分为三个阶段,每个阶段分为三次实际操作课和一次撰写BLOG总结自己的收获与体验的课程,作业的难度逐级提高,有梯度,能够逐渐的适应。写blog的总结也是十分必要,这样可以反思自己的不足,回忆这个阶段的作业的完成过程,碰到的问题等。吾日三省吾身,反思自身也是极其重要的课程内容。
很快JAVA课程就要结束了,内心是松了一口气,也有一些不舍。但是自己也更加明白,详实的语言学习或许就不再有了,以后更加要靠自己的努力,书山有路勤为径,学海无涯苦作舟!
posted @
2020-06-08 10:31
vici_conquer
阅读(
122)
评论()
收藏
举报