摘要: Java编程语言的开源性、跨平台性、丰富的生态系统、强大的社区支持、高性能等特性驱使其在所有编程语言当中占有主流地位。其面向对象、封装、继承和多态等特性无形中给学习者设立了一道门槛,加之传统教材墨守成规不能够有效激发学习者的兴趣,导致一种“入门即放弃”的现象出现。为打破传统教学的主题观念,采用以Java续写西游记故事为背景的教学方式,极大地提高了学生的学习兴趣和积极性,经过三期实验组与对照组的对比,从教学评价、期末成绩、竞赛情况等方面的结果分析得出,将西游神话引入Java课堂可以有效地扭转“入门即崩溃”的局面。
Abstract: The open-source nature, cross-platform compatibility, rich ecosystem, strong community support, and high performance of the Java programming language have driven it to a dominant position among all programming languages. However, its object-oriented, encapsulation, inheritance, and polymorphism features have inadvertently set a threshold for learners. Coupled with the traditional textbooks’ adherence to conventional methods that fail to effectively stimulate learners’ interest, a phenomenon of “abandoning at the first attempt” has emerged. To break the traditional teaching concept, a teaching method based on continuing the story of “Journey to the West” with Java was adopted, which greatly enhanced students’ interest and enthusiasm in learning. Through the comparison of three experimental groups and control groups, the results from aspects such as teaching evaluation, final exam scores, and competition performance show that introducing the myth of “Journey to the West” into Java classes can effectively reverse the situation of “crashing at the first attempt”.
1. 引言
众所周知在当代的中国,与人们衣食住行息息相关的软件或者系统百分之九十来源于Java开发,而国内的计算机编程领域中,Java占有举足轻重的地位,因此每所高校开设有计算机相关专业的一般都开设有Java课程[1]。不论是有编程基础的Java初学者亦或是多年经验的Java课程讲师,在特定章节例如面向对象、接口与抽象类、封装和继承等Java特有的性质时,都会有牵牛下井的感觉。讲者言其形,听者闻其表,加之传统的教材,动物与鸟类诸如此等老旧案例,在初学者面前枯燥乏味,在讲者眼中索然无味。如此这就导致大批量出现“曾经学过”、“不太明白”、“可能知道”等现象涌入学生当中,然而如何能让这些学习者深入理解的理论知识更接“地气”,被他们欣然接受并融入到他们的知识体系当中,这将需要一场深入的Java教学改进与探索。本文将以“西游记”为背景来进行的Java教学方法改进与探索,经过三期的实验,不论从教学评价、期末成绩、竞赛情况等都取得了优异的成绩。
2. Java语言程序设计课程的背景现状及分析
2.1. Java语言程序设计课程背景
Java编程语言在全球展现出极强的影响力,尤其是在现阶段的中国,在众多编程语言当中占据不可或缺的地位。在国内所有编程的岗位当中,Java工程师却是需求数量最多,占比编程岗位份额最多的,换句话来说,Java开发语言仍然在所有编程语言中呈现出主导地位。Java开发语言之所以享有如此的地位,与其系列产品的开源性、稳定性、生态成熟等特性离不开。例如大型企业后端使用的Spring具有生态成熟、性能稳定;高频交易系统使用的JVM具有低延迟、跨平台性;安卓原生开发使用的Android兼具兼容性、安全性、高效性、灵活性。为了帮助当代大学生能够尽快适应目前的就业环境,国内大多数高等院校所开设的专业但凡有涉及到与计算机相关的,基本上都开设有Java程序设计的课程[2]。Java程序设计课程已然成为了广大学习计算机专业同学必修的基石性课程,然而Java编程语言所特有的编程思维让初学者很难领悟到其中的灵魂,导致持续品尝不出这中间的美味,继而选择中途放弃,即便没有放弃的同学,也觉得枯燥乏味,只有极少数有天赋的人才能够享受到Java的精华。
2.2. Java课程设计现状分析
在同学们当中广泛流传的一句话是“Java从入门到放弃”,之所以会出现这种状态原因有三。第一、学生的状态是处于大学期间,他们不太像高中时代,学习节奏以及学习气氛那么紧张,时刻报有克服困难的决心,轻松舒适地学习是常态,他们对学习研究的深度在一定程度上取决于他们的兴趣点[3]。第二、大学讲师授课的状态在一定程度上起到了引领学生的关键作用,如果讲师原本对于该知识点研究得比较深入,那么学生就可以站在教师的肩膀上,更深更远地去探索知识。然而Java程序设计是一门实战与理论相结合的能力技能课程,其不像高等数学一般写写算算就能够很快领悟到它的核心思想,这就要求广大教师有多年的编程经验,要么其教授多年Java课程,要么其曾经有过多年项目实战开发经验,大多数教师只有如此情况下才能够达到Java技能融汇贯通的境界,这就对教师的能力素质要求比较严格。第三、从当前的年代向前追溯8~15年左右的时间里,大学所选用的Java程序设计相关教材虽版本更新但内容相差无几,老旧案例沿用至今,然而在当下这个智能发展的时代,那些案例显得有些苍白无力,虽然能够表达清楚其理论含义,但却不能提起当代大学生的学习兴趣[4]。
2.3. 产生的影响
爱因斯坦曾经说过:“兴趣是最好的老师”,孔子亦云:“知之者不如好之者,好之者不如乐之者。”当代的大学生在学校期间能否塑造出更好的自己,关键核心点在于是否产生兴趣,正如某些手机APP总是推送他们兴趣点上的短视频,所以他们爱不释手且视如珍,然学习对广大学生而言总是痛苦的,所以在时间的竞赛上,学习总是排在短视频、游戏之后,那么如果学生对于编程失去兴趣,从学生的角度而言,他们将会产生一系列糟糕的心理反应[5],如程度轻微的会产生“编程技术问题恐惧症”、严重的产生自卑情节,甚至会形成逃避问题的习惯,不论是面对编程类的或者其他科目类的小问题,亦或者人生中的其他大问题都会不自觉地选择逃避。数字时代将编程能力推向了基础素养的高度,从教师的角度出发,学生们失去兴趣将导致对他们创新思维的培养链形成断裂;从社会发展角度观察,如果一代学生集体逃离编程,那么会导致人工智能、量子计算等前沿科技的人才储备不足。所以点燃他们对学习的热情才是培养人才的关键点。
3. “西游记”在Java教学方法上的创新应用
3.1. 挖掘“西游记”元素与Java编程概念的内在联系
选用“西游记”作为Java课程教学方法上的探索原因有三,其一从心理学角度出发,根据兴趣驱动学习理论,当学生对学习内容产生浓厚的兴趣时,学习效果会显著提高,西游记是一部带有神话色彩且家喻户晓的小说,备受幼、青、中、老一代的好评;其二从教育学角度来看,根据皮亚杰的认知发展理论,学生通过具体情境和直观形象更容易理解抽象概念,“西游记”中的人物和情节可以作为具体的情境,带动学生们理解Java中那些抽象晦涩的概念;其三“西游记”中人物、武器素材众多且具有个性化,这些特性恰好应用于Java枯燥的面向对象、多态性等理论当中,可激发学生的兴趣,帮助他们理解抽象概念,培养逻辑思维能力,提升代码实践能力。
3.2. “西游记”在Java程序设计上的创新应用
3.2.1. “西游记”在类、对象、抽象类、抽象方法上的应用
用Java的视角来看西游神话,那么西游记中大量的人物角色,如果按照法力等级来统计可大致分为神仙类、妖怪类和人类等,在人类这个等级当中,按照年龄划分又可分为老年、中年、青年、幼儿和婴儿等,如此称之为类。那么像观音菩萨、白骨精、唐玄奘他们又称之为什么呢?答案是对象。总结来说类是对现实世界中对象的抽象,是定义对象属性和方法的蓝图或模板,对象是类的实例化,即类是模板,对象是根据模板创造出来的具体实例。
经过观察可以发现所有神仙和妖怪都会施展魔法,他们的神通各不相同,如孙悟空有七十二变、白骨精可以幻化为人形、红孩儿有三昧真火、毗蓝婆菩萨有绣花针等。那么在神仙类或者妖怪类当中,他们最大的特点是施展魔法,不同的对象能够施展出来的魔法各不相同,如果将他们施展魔法这个动作抽象成一个方法的话,就是抽象方法。那么抽象方法的定义为:在抽象类中声明但没有具体实现的方法。
抽象类是个比较难理解的概念,它的定义是:一种不能被直接实例化的类,用于定义其他类的共性结构和行为规范,通常作为基类被其他子类继承。那么抽象类在“西游记”当中是如何出现的?抽象类可视作生物类,神仙类、妖怪类以及人类都是生物类的子类,如果根据生物类直接去创造对象的话是非常难以创造的,因为不知道是该生成人类对象,妖怪类对象亦或者是生成神仙类对象,他们之间有很大的区别,例如能力和魔法。但是像生物类这样的抽象类到底有哪些好处呢?其实生物类是高度概括的类,其可以囊括所有生物的共性,例如又有生命,可以呼吸等等,如此特性可以免去了子类不停地重复定义这些共同特性的麻烦。
3.2.2. “西游记”在接口、继承和重载上的应用
在Java的国度里,针对神通可以定义为一个接口,它是各种魔法的高度概括化,例如“飞行”、“隐身”、“变形”等。它的好处是可扩展,怎么理解?接口要求具体的类来实现这个接口,并实现该接口里的方法,这就是说孙悟空类可以在可以实现七十二变,猪八戒可以实现三十六变,赤脚大仙可是实现腾云驾雾,红孩儿可以实现三昧真火,蜘蛛精可以吐司,如果有需要新增一类黑白无常的话,就可以扩展实现勾魂索命,不需要修改原有的其他类。如此可以实现可扩展性和多态性。
继承的概念是如何理解呢?继承是一个子类继承另一个类的属性和方法,子类可以扩展或重写父类的行为。例如儿子卯日星官继承母亲毗蓝婆菩萨鸡的属性,例如有鸡冠,可以鸡鸣,专治毒虫,这就是Java里的继承,儿子卯日星官灭虫的方法还可以不使用母亲毗蓝婆菩萨的灭虫方法,使用自己的日轮烈焰,这是对父类行为的扩展或重写。
那什么是重载呢?诸如孙悟空的变化能力,可以变化成人、可以变化成动物也可以变化成房子等,像这样一个变化的动作,却可以形成不同的物种,称之为方法的重载。
3.2.3. “西游记”在集合上的应用
Java在集合中常用的有两类,分别是单链集合和双链集合,单链集合最常见的是ArrayList,双链集合最常见的是HashMap。在西游神话中大致可以分为三大集合,分别是神仙集合、妖怪集合、凡人集合。妖怪集合可以有:白骨精、老鼠精、黄袍怪、黑熊精、黄风怪…像这样的很多妖怪对象可以放在一个ArrayList集合里,统一来管理妖怪。按照妖怪最拿手的兵器为例:铁扇公主是芭蕉扇、牛魔王是混铁棍、红孩儿是火尖枪、银角大王是紫金红葫芦、九头虫是月牙铲、玉兔精是捣药杵等等,将这些兵器可以放入HashMap双链集合(可称兵器库)中统一管理,当铁扇公主出战抵抗孙悟空的时候,就可以从这个双链集合中顺利取出,具体做法是根据自己的名号可直接快速获取所存的法宝芭蕉扇,如此既方便存储又便于管理,还不会被弄丢。
3.2.4. “西游记”在多线程上的应用
在多线程编程中,西天取经途中唐僧师徒四人的主要任务是求得真经,但他们四人的线程分工又不相同,孙悟空本领高强,负责降妖除魔,唐僧作为团队的核心,负责把握方向和决策,猪八戒幽默风趣,负责保护和气氛调节,沙僧忠厚老实,负责后勤保障,白龙马任劳任怨,负责运输和保护。他们师徒四人在取经路上相互协作,共同克服困难,这样体现出多线程的协作特性,但是取经途中经常会遇到食物短缺、住宿拥挤等现资源缺而争辩,又体现出多线程的资源竞争等特性。
3.2.5. “西游记”做成西游系统
将唐玄奘去西天取经打怪升级的故事做成游戏系统,该游戏简单分为5个关卡,分别是孙悟空被压五行山、三打白骨精、女儿国遇难、三调芭蕉扇以及通天河遇鼋湿经书等。这五个关卡是西游神话故事里比较令大众难忘的故事情节,且这五个关卡是有先后顺序的,只有当前面的关卡通关之后,才可以开启后面的篇章。通过制作如此这样的游戏系统,可以帮助学生理解类与对象、封装与继承、多态等Java特性,还可以学会使用集合(HashMap, ArrayList)、多线程、异常处理以及Swing等用法;刨除理论知识增长外,从另一个角度还可以锻炼学生们团队协作和沟通的能力,他们只有各个小组成员通力合作才可以在短暂的3~4周之内利用课余时间完成。
3.3. OBE在Java课程教学设计上的应用
4. “西游记”在Java课程教学中实验设计与数据分析
4.1. 实验设计
为了验证将“西游记”引入Java课堂是否可以激发学生的兴趣,本文设置了实验组和对照组。其中实验组和对照组分别为同年级、同专业、同程度、同班级人数的两个班。实验组的班级采用以“西游记”为背景的Java课程教学,对照组则按照传统的教学方法。
4.2. 实验方法
实验周期为一个学期,一共进行三期,这三期包含不同的年级。课程内容主要包括Java基础语法、面向对象编程、集合、多线程等。实验组的教学内容结合“西游记”元素与OEB理念,通过故事讲解、案例分析和项目实践等方式进行教学。对照组采用日常的传统教材与教学方式。
4.3. 数据收集与分析
实验数据包括学生的日常课堂氛围、作业成绩、期末考试成绩、竞赛参与情况、就业跟踪和学生反馈调查。采用统计分析方法对数据进行处理,包括均值比较、方差分析和相关性分析。
4.3.1. 日常教学情况
日常课堂氛围:实验组的班级课堂氛围比对照组的活跃;日常作业成绩:实验组的日常作业平均成绩高于对照组,并且实验组学生上交作业的积极性高于对照组;期末考试成绩:实验组学生的平均分数比对照组学生的平均分高出10分;团队协作能力:日常各方面活动,实验组的学生团结力和沟通能力强于对照组[6]。
4.3.2. 学生竞赛情况
实验组中参加蓝桥杯全国软件和信息技术专业人才大赛、团体程序设计天梯赛、中国大学生程序设计竞赛以及[6]“百度之星”程序设计大赛等的人数是对照组人数的3倍,从竞赛选择的语言来看,实验组选用的Java人数是对照组的15倍,从获奖结果上看,实验组是对照组的13倍。
4.3.3. 学生就业情况
实验组的学生就业方向选择与编程行业相关的人数是对照组的18.7倍,其中从事Java工程师的人数,实验组是对照组的18.1倍。
4.3.4. 学生反馈调查
通过问卷调查,实验组学生对课程的满意度达到85%,而对照组仅为45%。学生普遍认为“西游”主题教学方法更加生动有趣,有助于理解抽象概念。
5. 结语
站在学生的角度以此出发,进行Java程序课程内容上的改革,让“西游记”等神话话本活跃在课堂上,深入到教学内容的精髓深处,可以激发学生们的兴趣与编程的热情,培养他们科技强国的意识和科学的计算思维,锻炼他们解决问题的能力,适应社会对计算机专业人才的要求。