李金忠,黄雪梅
(1.井冈山大学 电子与信息工程学院,江西 吉安343009;2.井冈山大学 体育学院,江西 吉安343009)
Java SE 是由Sun Microsystems 公司于1995 年5 月推出的Java 程序设计语言和Java 平台的总称,是Java EE 企业级开发、Java Web 应用开发和Android 移动应用开发等开发技术的基础,也是AI、“互联网+”、物联网、云计算和大数据等新兴产业的重要技术工具。
Java 是当今世界上软件开发领域最流行的优秀编程语言之一,其最大的优点在于设计之初就秉承了“一次开发,处处运行”的思想,具有可移植、简单、动态、分布式、多线程、高性能、安全可靠和健壮等优良特性。Java 是一种跨平台、多用途的面向对象编程语言,“继承”是面向对象的“封装、继承和多态”三大特性之一,是Java SE 中面向对象编程技术中的基石和重难点。理解继承的思想和含义,掌握和熟练运用继承思想编程,有利于减少代码的冗余,提高代码及软件的复用程度,使得程序设计和系统开发变得更容易、更简单。
“继承”是Java 面向对象程序设计的三大重要特性之一。所谓继承,是一种演化、发展过程,即通过扩展、更改和特殊化,基于一个已知类(父类),创建一个新类(子类),父类描述的是共性,子类描述的是特性,子类是父类的具体化、延续、组合,子类可以将父类的成员继承到本类中[1],并可扩展自己特有的属性和方法。继承是软件复用的一种形式,是一种由已有类创建新类的机制,即自动实现数据和方法共享的机制。Java 程序开发过程中代码复用的使用频率非常高,因此,教好、学好“继承”,对于学生后续学习“多态”、“抽象类”和“接口”等概念至关重要。
传统的Java 程序设计教学模式往往忽略培养学生对Java 软件系统分析与设计的工程思维和项目开发的实践能力,没有完整的理论和实训体系,既缺乏Java 的系统性思维,又没能与现代社会对Java 软件开发人才的需求相结合。在Java SE 的整个知识体系中,类的继承是教学中的重点和难点。在理论教学中,采用单纯的“继承知识点理论讲解+相关继承实例程序演示”的方法,没有将多且分散的“继承”知识点进行串讲,缺乏“继承”知识的整体融合性。在实践教学中,通常采取“学生自主实验+教师随堂指导”的方法,所做的实验大多是对“继承”机制的演示性和验证性Java 编程实验,且各实验之间比较分散,并未着重考虑运用“继承”机制的工程实践应用性综合实验。再者,传统讲授“继承”的方式较少应用先进的教育理念和教学模式,难以激发学生自主学习的热情,并难以调动学生思考和解决实际工程问题的积极性,更难以体现“以学生为中心”的主体地位。如此,导致不少同学对Java SE 中的“继承”机制理解不透彻,最终导致学生在编程过程中不能灵活运用“继承”机制去设计程序和开发系统。
为解决Java SE 中“继承”在教学中存在的问题,迫切需要探索对Java SE 的教学改革,以改变传统教学的现状。
CDIO 代表Conceive(构思)、Design(设计)、Implement(实现)和Operate(运作),是近年来国际工程教育改革的创新性最新成果。CDIO 工程教育理念以产品研发到产品运行的生命周期为载体,让学生以主动的、实践的、课程之间有机联系的方式进行学习[2]。CDIO 旨在解决工程教育中理论与实践脱节的问题,它把理论、实践和创新融为一体,着重培养学生的工程实践能力。CDIO 是工程项目的构思—设计—实现—运作的全过程,能够显著提高学生的实践应用能力,但是教师进行实时答疑解惑的机会很少,且课堂时间利用不足。
翻转课堂(Flipped Classroom)是一种颠覆传统教学的新型教学模式,它把传统课堂的教学顺序进行颠倒,即学生在课前“借助信息化平台与资源传递知识”,通过观看教学视频等学习资源自主完成新知识的学习;课中在教室或实训室“通过完成任务内化知识”,课堂变成了师生之间和生生之间互动的场所,包括答疑解惑、互动交流和小组协作等活动,以促使知识内化;课后“借助信息化平台与资源弥补欠缺的知识以及拓展技能”,通过单元测试和复习巩固、意见反馈和总结以及教学反思等活动以强化知识。它的优势在于从先教后学到先学后教,将学习的主动权从教师转移给学生,把课堂还给学生,让学生真正成为自己学习的主人。学生从被动学习到主动学习,在这样的教学模式中,能有效提升学生的学习能力与自我管理能力,促进学习效果的显现[3]。翻转课堂是课前自主学习—课中知识内化—课后知识强化的过程,有利于学生的个性化自主学习和师生、生生互动,能够大大提升教学质量,但其工程实践教学能力略显不足。
CDIO 和翻转课堂都主张“以学生为中心”,分小组进行协作学习,注重调动学生的学习积极性,让学生主动参与课程的学习,两者具有很高的融合度[4]。张园等以“自动控制原理”课程为例进行了CDIO 和翻转课堂教学改革方案设计[5]。
Java SE 是一门集理论性、应用性、实践性和工程性于一体的课程,与CDIO 的工程教育理念非常契合,并且适宜采用翻转课堂的教学模式。两者的融合使Java SE 的教学体现了“以学生为中心”的理念,有助于激发学生的学习兴趣和加强师生、生生之间的互动交流,有助于培养学生的编程思维和提高学生的程序开发能力,提升学生编程实践能力和解决实际工程应用问题的能力。总之,两者的融合有利于培养学生的自主学习能力、工程应用实践和创新能力,必将使课堂教学质量显著提升,从而达到更好的教学效果。
软件项目的开发经常需要用“继承”机制去减少冗余代码和实现软件复用,为此,熟练和灵活运用“继承”思想去开发软件是至关重要的。鉴于CDIO 工程教育理念和翻转课堂教学模式具有高度一致性和互补性,将CDIO 和翻转课堂融会贯通,发挥各自长处,弥补各自缺陷,以改进Java SE 中“继承”的教学,并推广至Java SE 的整个教学中甚至软件工程类相关课程中,是非常有意义和价值的。
我们将以1 次课(整个教学过程时长为2 个学时)的教学内容作为教学改革示范,采用耿祥义主编的《Java 2 实用教程微课版》[6]教材,示范内容为第5 章“子类与继承”的前5 小节的内容,其教学内容的思维导图如图1 所示。
图1 教学内容思维导图Fig.1 The Mind Map of Teaching Content
我们构建的Java SE 中“继承”的多维度混合式教学改革的整体设计思路是:以CDIO 工程教育理念为指导思想,以翻转课堂教学模式为实践框架,以项目驱动和小组讨论教学法为教学手段,以思维导图为辅助教学工具,探索融合CDIO 和翻转课堂的教育教学方式等的多维度混合式教学以改进Java SE 课程中“继承”章节的教学。从课堂教育理念、课堂教学模式和课堂教学方法等方面,通过线上线下相结合的混合教学方式,探索基于CDIO 工程教育理念和翻转课堂教学模式等的多维度混合式Java SE 的教学改革以凸显“教师为主导、学生为主体”,从而打造具有较强系统设计能力、应用编程能力和系统开发能力的Java 软件开发人才。
基于此教学改革设计思路,我们提出了Java SE 中“继承”的多维度混合式教学改革思路的总体框架,如图2 所示。由该图可知,在教学内容的组织上采用CDIO 工程教育理念,在教学实践框架上采用翻转课堂教学模式,在教学手段上采用项目驱动法和小组讨论法等先进教学方法混合实施教学活动,并辅以线上线下相结合的方式,强化学生的软件项目编程等实践应用能力,从而提高教学效果。
图2 Java SE 中“继承”的多维度混合式教学改革思路的总体框架Fig.2 The Overall Framework of the Multi-Dimensional Hybrid Teaching Reform Idea of 'Inheritance' in Java SE
基于所构建的多维度混合式教学方式的总体框架,以项目为主线,即以若干个Java 项目在课前进行自主学习,一个指定的小项目(几何图形计算小软件)在课堂进行实训,一个各组任选的大项目(如学生综合素质测评管理系统、动物园动物管理系统、蔬菜水果批发市场管理系统等)在课后巩固演练,将这些项目融入到整个Java SE 中“继承”的教学过程中。采用CDIO 工程教育理念组织教学内容,按照翻转课堂教学模式进行教学实施,并将小组讨论法贯穿于整个教学过程中。
Java SE 中“继承”的多维度混合式教学是一种融合CDIO 和翻转课堂等的教学方式,它针对CDIO工程教育理念的构思、设计、实现、运作四大阶段和翻转课堂教学模式中的课前、课中和课后三大过程,采用项目驱动法和小组讨论法进行教学改革的实施,其具体实施方案如表1 所示。
表1 Java SE 中“继承”的多维度混合式教学改革具体实施方案Table 1 The Specific Implementation Plan of the Multi-Dimensional Hybrid Teaching Reform of 'Inheritance' in Java SE
在课前,教师首先准备第5.1 节至5.5 节的微课视频和PPT 等,并提供含有“继承”的Java 项目如“动物园动物管理系统”等线上教学资源。其次,布置学习任务,要求学生线上听完教材中第5.1 节至5.5 节的微课视频并上机调试教材p112~p125 中例子1 至8。再次,布置教材中习题5 中的练习,包括:第2 题中的第(3),(5)~(9)小题,第3 题中(1)~(3)小题,布置各个Java 项目所分解出来的包含有“继承”的功能模块的微视频学习后的项目构思—设计—实现—运作(CDIO)任务。要求学生在上课前自主完成线上学习和练习任务,小组讨论并完成所布置的各个Java 项目所分解出来的包含有“继承”的功能模块的CDIO任务,并发送完成情况和反馈问题给教师。教师线上获取问题反馈,确定线下课程教学重难点和方法。
在课中,即课堂上,教师首先以提问的方式简要回顾Java SE 面向对象程序设计的三大重要特性之一——封装,以及类的使用、方法的重载和this 关键字的用法等,并通过现实生活中存在的继承实例导向式引入Java SE 面向对象程序设计的三大重要特性之二——“继承”的概念,让同学们加深概念的理解深度,比如引入谚语“龙生龙,凤生凤,老鼠的儿子会打洞”。其次,重点讲解学生所反馈的问题、疑惑以及“继承”章节中的重难点问题,例如为什么要使用“继承”,其优势在哪?什么时候需要使用“继承”?什么时候需要对方法进行重写?子类和父类在或不在同一包中的继承性、方法重写与重载的区别、this 和super 的区别等。在此过程中,要求学生积极讨论,且可随时提问并让其他组员进行组间互答。再次,以小项目为主线,将“几何图形计算小软件”Java 小项目引入课堂实训,分解这个小项目中含有“继承”的功能模块并布置“继承”的CDIO 实训任务。要求学生小组讨论和协作交流课前的Java 项目的CDIO 任务,合作完成“几何图形计算小软件”Java 小项目所分解出来的含有“继承”的各功能模块(如图形类)的CDIO 实训任务,包括“继承”的构思、设计、编程实现和调试,并现场运行和演示项目的效果。教师对所布置的CDIO 实训任务进行指导和帮助,并对学生完成的项目进行点评,同时也要求学生组间交流和互评。
在课后,教师首先布置“继承”章节的单元作业,要求学生完成单元测试和复习巩固,并完善“几何图形计算小软件”Java 小项目中“继承”的CDIO 实训任务。其次,以大项目为主线,布置大项目中含有“继承”功能模块的CDIO 实训任务,要求各小组任选一个包含有“继承”的综合性较强的Java 工程项目,小组讨论、分阶段协作完成所布置的CDIO 阶段性任务。再次,教师对学生完成的大、小两项目进行考核评价并拓展延伸后续章节,如“多态”、“抽象类”和“接口”等知识点的教学内容的构思。最后,学生进行意见反馈和学的反思;教师给出大、小项目中含有“继承”的代码示例,并进行总结反馈和教的反思,同时根据线下学生表现情况,改进线上教学资源及教学方案。
“继承”是Java 面向对象程序设计中最重要的三大特性之一,它是整个Java 技术体系和后续软件工程相关课程的前导基础,也是新工科背景下新兴产业软件开发的重要技术。本文通过融合CDIO 工程教育理念和翻转课堂教学模式,以思维导图为教学辅助工具,将工程项目的软件开发的CDIO 和小组讨论贯穿于“课前、课中和课后”整个教学过程中,去探索改进Java SE 中“继承”的教学思路,以铺垫学生学习后续Java 知识点和Java 类专业课,以期提高教学质量,从而提高学生的自主学习能力、工程实践应用能力、项目团队协作能力和创新创业能力等。
尽管本文是针对Java SE 中“继承”知识点进行的多维度混合式教学改革探索,但此思路可经过适当扩充范围并加以修改,从而推广到整门课程及Java 类软件开发课程,更为广泛地推广至适合采用此思路的任意课程(群)的教学改革中。