活动理论下的面向对象教学方法
2015-04-17付永钢
陈 杰,付永钢
(集美大学计算机工程学院,福建 厦门361021)
计算机是一门具有较强的实践意义的学科,因此其专业教学应该是一种面向应用与研发型的教学模式。程序设计作为计算机及其相关专业学生需要掌握的重要基本技能,在很大程度上也成为衡量教学效果的重要依据之一。
面向对象程序设计的讲解基本上是按知识点由深入浅的顺序,根据章节让学生逐步掌握相关的知识和技能,最后强调如何在实践中运用。这种教学方式的优点是按照知识体系结构的讲解,逻辑性、条理性较强。但是在实际教学过程中,大多数的课堂例题和习题都是与实际应用无关的例子和题目,教学的重点放在对语言特性和抽象的概念的讲解上,这显然与人的认知方式是由具体到抽象的这么一个过程是相矛盾的。因此,笔者在分析传统面向对象教学中的存在的问题的基础上,提出在教学中应采用项目驱动同时结合活动理论的教学方式。
一 面向对象教学中当前存在问题
面向对象作为一种重要的程序设计思想,主要使用的语言有Java、C+ +以及C#等。与大多数其他课程类似,传统的面向对象程序设计的讲解注重知识的完整性和逻辑性。但是,存在着涵盖的知识点冗杂而不规范,示例缺乏趣味性、开放性和实用性,在教学方法方面,主要是教师教什么学生就学什么,忽视学生的学习主动性,对如何利用面向对象的思想开发应用程序做得不够[1]。
因此,高校计算机编程人才的培养与企业需求之间尚存在一定程度的差距,应届毕业生的实际操作能力普遍不能满足企业需要。
由于企业需要的是实际的项目研发能力,因此,在实际教学过程中,采用项目驱动的方式,将主要的知识点融入到项目的实现中。通过对项目逐步深入的开发,通过对功能不断的扩充,实现对问题不停地深化和功能扩充,来达到拓宽知识的广度和深度。最终通过一个完整的项目案例来达到学习知识、培养实际编程能力的目的[2]。
笔者认为采用基于活动理论的项目驱动教学方式进行面向对象程序设计思想的讲解能够让学生更容易地掌握面向对象的思想,在实际教学过程中不再给出没有实际联系,也没具体的用途的范例代码。而是通过一个项目将面向对象中分散的知识点贯穿起来,这让学生进一步增强学习的兴趣。
二 活动理论及其在教学中的应用
活动理论起源于1930 年代列昂捷夫的实验及其提出的理论。辩证唯物主义是活动理论的哲学基础。活动理论是有关人的活动、意识、反映及其历史发展过程的。同时,人们会依据周围现实世界的实际属性,作用着并改变着周围世界。人对生活的反映也正是在与周围世界的这种相互关系中得以实现和发展的[3]。列昂捷夫认为外部的实践活动是人与客观世界之间相互作用的中介,活动应是认识心理反映、认识意识问题的关键一环。因此,列昂捷夫认为心理是活动的特殊形式,是物质生活与活动共同作用的结果与产物,后者(外部活动)在社会历史发展的进程中转变为内部活动、意识活动;因此活动的结构和活动的内化就成为心理学研究的中心任务,其模式如图1 所示。
图1 第二代活动理论模式结构图
从图1 可以看出,活动系统的构成要素有主体、客体、共同体、分工、规则、工具六个方面。
客体指的是主体认识和实践的对象,是主体活动的承载体。在活动理论中,客体被转化的过程体现了活动的目的和意图。在教学中,客体即教学目标,或学习目的。
主体指的对客体有认识和实践能力的人,活动系统是主体的观点来感知的。在实际教学中,主体就是学生,活动理论中对主体的分析也就是学习者分析。活动理论认为要在实际教学中给出合理的教学目标和有效的教学活动,需要调查学习者的认知水平,情感、技能水平等特征。
共同体由若干小组或个体组成,所有的共同体共享客体,但每个共同体之间又有差别。在实际教学中,共同体除了学习者以外,还有其他参与者,如教师及实验辅导人员等。因此,共同体是指与主体共同完成学习过程的参与者。共同体在整个学习过程中起重要作用,通过引导和参与的形式不断影响主体,为主体提供所需的资源或帮助。
分工指的是在共同体之间任务的分配和权利及地位的分配。共同体之间的分工并不是一成不变的,而是随着活动的展开以及情景的变化而改变的。在教学过程中,不同的成员在教学过程中都要完成不同的任务。在活动理论中,主体和共同体需要完成各自的任务,以保证活动的顺利开展。
规则指的是在活动过程中对行为所制定的标准或规范。规则是用来协调主体与客体的一种制约、约定。在实际教学中,学生要服从教师的安排,双方进行互动式必需保持某种关系。
工具是主体作用于客体的手段。它可以是任何在活动过程中具体或抽象的东西。活动理论认为人类活动是离不开工具的。学习也一样,活动理论中的工具在教学过程中可以理解为教学环境,包含教学过程中使用的软硬件环境。
三 基于活动理论的项目驱动的面向对象教学方法
由于学生的认知发展一般需要经历一个依靠具体事物和实际动作的直观认识过程,进而发展到摆脱具体事物和实际动作的形象思维阶段,最后才能发展到只依靠符号、概念、命题等的抽象思维水平[4]。学生的学习过程是一个由自己的认知能力,主动地构建知识的过程,这个过程是他人无法替代的。因此,传统的教师把知识传递给学生的单向的教学过程不符合学习的特点[5]。笔者认为使用项目驱动式的教学方法,并运用活动理论有利于学生对面向对象思想的掌握。
将活动理论应用于面向对象教学中,则六大要素分别表示如下:
主体指的就是学生。客体表示教学目标,即面向对象编程思想的掌握。共同体由教师及实验辅导人员组成。工具表示教学过程中使用的硬件与软件,包括计算机,编程软件等。规则表示学生要听从老师的安排,依照教学过程,按步骤地完成教师所布置的项目任务。分工在这里即指教师作为教学的一方应当对项目进行划分,使得每个子项目与具体的知识单元相结合,学生作为学习的一方应当根据当前学习的知识点和教师所布置的任务,分步骤完成项目的开发,实验辅导人员则应当在实验教学过程中进行实验辅导的任务。
由于主体、客体、共同体和工具的概念较好理解,因此,笔者下一部分将从规则和分工的角度来考虑,要较好地贯彻活动理论在面向对象的教学,应当注意以下几点:
(一)确定两个项目,一个用于教学,一个用于实验,并对所选择的实际项目进行一定的简化
由于人的认知发展一般都需要经历从具体事物到抽象概念的过程,因此传统的先直接介绍概念,然后再通过例子来讲解的教学方式与抽象的面向对象程序设计思想是矛盾的。此外,与实际生活脱离、零散的例子对只能让学生初步了解其基本概念,但无法提高面向对象程序设计的实际应用能力。而活动理论是以目标为导向,活动反映的是学习主体的需要。面向对象课程的教学就是为了让学生能够在实际开发中使用面向对象的思想进行项目开发。由此可知,以项目为导向的面向对象程序设计的教学方式不仅符合活动理论的原则,而且也符合人的认知过程。
在实际教学过程中,为了让学生的实际编程能力得到提高,除了在课堂教学中采用项目驱动的教学方式外,在实验教学中也应采用项目驱动的教学方式。所以,笔者认为在实际教学过程用应采用两个项目,一个用于课堂教学,另一个用于实验之中。
由于整个教学过程以项目为主线,因此,知识单元的划分要围绕着范例项目的划分结合起来进行。因此,在划分知识单元的时候要考虑的问题有:(1)项目的划分是否合适。(2)与知识单元结合的是否紧密。 (3)范例项目是否覆盖了该门课程中的主要知识点。这些问题都直接影响教学效果。因此,在进行实际教学之前,笔者认为教师要有实际项目的经验,并且要认真研究项目与教学知识单元的结合情况、难易程度、典型性等方面是否适合于教学,以确保项目驱动教学的正常进行。此外,并不是所有项目都适合用来做课堂教学的,由于学生本身学习生活环境的限制,无法了解许多企业的业务逻辑。因此,在实际的项目选取上应该选择能够贴近学生生活的,容易理解的项目作为课堂教学的案例。
此外,由于实际项目在开发中往往存在需求和业务复杂,如果直接引入会导致学生陷入复杂的需求分析之中,从而忽略了课程真正的核心内容,即面向对象思想的掌握。因此要将其用于实际教学中必须去除其中繁琐的细枝末节的功能需求,只提取出其最主要和核心的,能够充分体现面向对象思想在实际开发中的应用的功能模块,然后对项目核心功能进行重新设计,将面向对象封装、继承、多态等面向对象编程思想以及应用在项目的开发中,然后将其用于实际课堂教学中。
(二)在教学中的项目应采用逐步深入的方法进行
从活动理论的角度来看,活动理论其以目标为导向、具有层级结构、内化和外化结合、具有工具中介和发展的特点[6]。因此,在实际的教学过程中,要让学生明白该课程的主要目标是社么,如何完成这个教学目的。整个教学目标随着活动的展开可以逐步细化,但是活动的每一步都始终围绕最顶级的目标。在每一次的课堂教学完成后,都需要对教学目标和教学方法进行一定的评估和修改,以期进一步完善教学活动。
在实际教学过程中使用的项目不能够将全部的项目代码给学生,然后再介绍代码中如何使用面向对向程序设计的思想。而是应当采用逐步深入的方法,首先是给出整个项目功能,先运行一个完整的项目,让学生清楚在接下去的学习过程中所有的知识点都会围绕着这个项目展开,在运行过程中着重介绍该案例所提供的功能,也就是相当于在课堂上进行了一次需求分析,让学生对整个项目有个清楚的认识。然后从零开始,逐步深入,在教学过程中一边介绍知识点,一边介绍该知识点如何在实际案例中使用,然后,在课堂上教师亲自编程来进行案例的开发。通过代码来介绍面向对象在实际开发中的应用。同时,由于学生在学习过程中往往会受到传统面向过程的编程思想的影响。因此,在教学过程中,教师应当在每次进行编程过程中,给出如果采用面向过程的方法如何实现,并总结其缺点,从而引出如何使用面向对象的思想进行开发,通过这种差异性的比较,来达到理论联系实践的目的,使学生能够将学习重点放在对面向对象思想的理解,从而能够更深刻的理解相关概念,并提高实际开发应用能力上。
在实际教学中,笔者以RPG (Role - Playing Game,角色扮演游戏)游戏为例,将其复杂繁琐的过程都去除掉,只保留某个战斗场景。先演示以该战斗场景为案例,再介绍其实现的基本原理和思想。以C#为例,笔者根据项目的需求与知识点相结合,知识章节依次分为:C#与面向对象基础、类与封装、继承、集合、多态、文件读写、接口、数据库操作和Web 程序设计。并按上述方法将项目开发与知识点的讲解结合在一起,同时为了比较和面向过程编程方法的差异,笔者在实际教学过程中先介绍不使用面向对象的实现方法,再介绍使用面向对象的实现方法,让学生充分体会面向对象编程和面向过程编程的差异性。
(三)实验项目应紧扣教学项目贯穿面向对象的思想
从活动理论的角度来看,人的心理是在实践活动中形成的,因此,必须在活动中进行学习和研究。而活动是由主体实现的,是主体和客体的交互作用,而且活动是独立的。因此,笔者认为采用项目驱动的方法进行课堂教学的同时还应当在实验中也使用合适的项目进行实验。
从计算机专业的特点来看,实验应充分培养学生的动手能力。实验的设计也应采用逐步深入的方法,从刚开始演示整个项目的功能,然后从零开始,逐步深入,根据课堂上的知识点逐步添加实验内容,使实验内容与课堂教学内容紧密结合。在每次实验之后,教师应分析学生所存在的问题,并进行相应的总结,要求学生进行修改,通过每次实验的添加最终完成实验的项目。通过课堂和实验两个项目结合进行教学,使学生进一步理解面向对象的编程思想。
四 结束语
面向对象编程思想一直以来都是计算机专业学生需要掌握的重要编程技能,同时也是教学的重点和难点。总体来说,结合活动理论的项目驱动教学方法有助于学生深入理解面向对象编程思想,掌握其精髓,同时有利于提高学生的编程技能以及分析问题,解决问题的能力。
[1]王远帆. “面向对象程序设计”教学易忽略环节研究[J]. 宁德师范学院学报:自然科学版,2013,25(2):201 -204.
[2]高琴李,枝武. 项目驱动的面向对象程序设计课程教学探究[J]. 玉溪师范学院学报,2013,29 (12):49-51.
[3]赵慧军. 活动理论的产生、发展及前景[J]. 东北师大学报:哲学社会科学版,1997 (1):87 -93.
[4]李松林. 教学活动设计的理论框架——一个活动理论的分析视角[J]. 教育理论与实践,2011,31 (1):54 -57.
[5]S LIAW M HATALA H HUANG. Investigating acceptance toward mobile learning to assist individual knowledge management: Based on activity theory approach [J].Computers& Education,2010 (54):446 -454.
[6]吕巾娇,刘美凤,史力范. 活动理论的发展脉络与应用探析[J]. 现代教育技术,2007,17 (1):8 -14.