摘要:《面向对象程序设计》这门课程理论性与实践性较强,学生要循序渐进地理解教材内容,逐步掌握各个知识点;教师要分过程、分阶段引导学生学习,包括学习过程的辅导、教学过程的控制、复习考试的策略等。实践证明,这样的教学模式有独到之处,对本课程的教学效果有明显的提升。
关键词:面向对象程序设计;教学模式;实践
《面向对象程序设计》是开放教育计算机科学与技术专业(本科)的一门必修课程,按照教学计划安排在第一学期开课。学生在学习这门课程之前,必须掌握一些前导的专业知识,如c语言、程序设计基础、软件工程等,同时,这门课程也是计算机本科其他专业课,如数据结构、操作系统及计算机网络等课程的先修课程,所以,在整个教学体系中,该门课程占据非常重要的地位。
开放教育计算机本科的学生都是专科升本科的,有部分学生专科阶段读的并非计算机专业,这部分学生都没有学过《面向对象程序设计》这门课程的前导基础课,如c语言、程序设计基础等,这就给该课程教学带来了相当大的难度。
“面向对象程序设计”的思想是当前一种全新的程序设计理念。它具有传统结构化程序设计思想不能比拟的优点。
面向对象程序设计思想的基本概念
对象对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
类具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说,类的实例是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有可操作性,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
消息和方法 对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。类中操作的实现过程叫方法,一个方法有方法名、参数、方法体。
面向对象设计的核心思想
面向对象的核心就是类的继承,可让类的代码以非常方便的方式的重使用。有时候,为设计合理的面向对象的编程,都是围绕继承来进行设计的,这里面最为重要的就是方法的继承,于是有了.net中的许多关键字,如virtual,override,new,abstract等。
设计的过程其实就是对现实世界事物建立合理的关系,使得处于这些事物中的人(用户)可以合理、简单、高效地工作。所以我觉得最重要的就是处理事物和关系,面向过程的核心是功能调用,这并不能很好地应对现实的变化需求,而面向对象的建模真正体现了现实世界的这种特征。
任何事物都有共性与个性,并且不是孤立的。分类后找出共性就是类和接口的模型。关系自然就是类之间的通信。所以说,面向对象是把自然界的物体和概念直接映射到程序界的一种比较优雅的手段。
面向对象就是把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。这就是面向对象的大概思想。
通过以上内容的介绍,我们不难发现《面向对象程序设计》这门课程理论性与实践性很强,学生要循序渐进地理解书本内容,逐步掌握各个知识点,教师要分过程、分阶段引导学生学习,主要抓好以下几个步骤。
(一)课程导学
课程一体化导学 开学初的面授课,针对学生对课程缺乏了解的情况,教师应对学生进行该课程的性质、学习目的和任务、学习重点内容和要求、多种媒体资源的配置情况、教学活动整体安排等内容的教育和指导。讲解课程使用的软件工具和安装、使用方法,要求学生学会在自己的机器上安装和使用。另外,辅导教师要进行网上资源建设与整合、面授辅导、指导小组协作学习、实践教学、网上教学、作业批改讲评、课程教研、课程教学质量与效果分析及维持正常的教学秩序等。指明每章的重点、难点,给出导学提纲:明确应该理解哪些基本概念,熟记哪些语法结构,会编写哪些程序,学员自学中有疑点,可以带着问题利用录像、网上资源学习,也可以在辅导课中解决或进行网络、电话答疑。其实辅导教师不仅仅是导观念、导课程内容,更要导技能、导方法。
课程章节导学 在教学过程中,课程辅导教师应针对某一门课程中某一章节对学生进行预习指导。让学生了解本章的基本概念、基本知识、基本技能和重点、难点以及教学要求的层次、网上资源的地址等。
课程考核导学 课程辅导教师对本课程形成性考核、自评自测、期中考试、期末考试等进行指导并提出要求。
(二)自主学习
自主学习是远程教育教学过程中主要的学习阶段,是在完整的学习支持服务体系下的主动学习。但由于学生学习的基础和自主性参差不齐,学习过程中会遇到的问题各异,所以,需要教师进行“助学”,这就要求教师既要注意学生的整体水平,又要照顾个体差异,体现个性化助学服务,提高学生学习效率,保证学习质量。具体的实施方式如下。
个体自主学习 学生根据自己的个别化学习计划,结合相应的教学资源和教学支持服务体系,实现个体自主学习。在自主学习过程中,辅导教师提供的学习过程设计及相应的资源使用建议均只起参考作用,在总体完成学习任务的前提下,学生可以依据自身知识结构、学习偏好和学习时间,自主选择学习进程和学习资源。《面向对象程序设计》课程第九、十、十二章的内容都可以纳入学生自主学习,教师只需要对这些章节内容简单讲解,学生就可以根据网上视频资源和电子教案自主学习。
协作学习 协作学习有两种类型,一种是学生自行开展的小组协作学习,一种是教师直接组织的主题性小组活动。开放教育教学实质是一种基于网络的教学,需要做到现实与虚拟两个课堂相结合,充分利用适应个别化需求的虚拟课堂开展交互教学,是提高开放教育教学质量的有效途径。为此,教师应从引导入手,认真组织学员开展网上交互教学活动。以网络为媒介组成网上学习小组,消除学员协作学习中交通和场所的制约;小组长事先在qq群上发布小组学习活动的安排,确定时间与交流主题,然后,各成员准时上网进行协作学习。通过小组协作学习不仅能解决学习中的问题,强化学习效果,而且能相互交流学习体会和经验,提高自主学习能力。成人学习特别是网络学习往往是“孤独”的学习,而协作学习可以克服这一不足,有利于发展学生个体的思维能力、增强学生个体之间的沟通能力以及对学生个体之间差异的包容能力。
(三)重点与难点讲解
《面向对象程序设计》课程整个教学量是非常大的,整个教材实际上由三个部分组成:c++过程化语言基本概念和方法(第一章到第六章);基本数据结构(第七章、第八章);面向对象的概念、方法和技巧(第九章到第十四章)。因此,对于教师来说,进行教学内容改革首先必须仔细分析这门课程各章节的特点、全书重点章节、考试考点范围、平台已有资源情况等等内容,从而能在不影响专业计划培养要求及考试前提下,对全书教学内容进行分解,部分内容弱化,部分内容重点讲,需要说明的是弱化不等于不讲,而是选择重点、难点内容进行讲解,只是一个讲解点密度问题。对于c++过程化语言的基本概念和方法部分,由于其本身难度小,并且有完整的直播课堂资源,所以,这部分的内容就可以弱化介绍,将第一章c++编程基础、第二章基本c++程序结构、第三章数据类型、第四章程序流程控制以及第六章简单程序设计的主要学习任务与内容留给学生自主学习。这部分内容教师只需要告诉学生每章节的重点是什么,难点是什么。
可以准备几个简单实用的经典案例,通过vc++环境实际运行给学生看。让他们觉得c++程序用有实用价值,并且也不复杂。然后,详细介绍vc++的开发环境使用的几个关键步骤,包括项目建立、关闭、打开、程序调试(错误定位及常见的错误提示信息)。这个环节应该走在课程教学的前面,这样学生在边看教材、边看直播录像的自主学习中遇到的很多感兴趣或困惑的内容,都可以放到vc++下去测试,这既能有效地帮助他们克服自学中的问题,又能帮助他们锻炼动手能力。
对第一部分的第五章函数需要教师重点讲解。函数编写及函数调用也是考试的主要考点之一,但同时也要给学生准备一些编程习题。教材的第二部分所涉及的两个章节:数组与结构、指针与引用都是重点章节,建议教师重点讲解,并补充链表的建立和遍历。第三部分是全书的重点、难点部分,整个面向对象部分内容包括六个章节,由于面向对象表示方法的特殊性,建议学生自主学习第九章,教师重点讲解第十、十一、十二、十三及十四章。
教师上课最好要用生动的电子讲义,并配以一定的实例。因为是本科课程,教材内容多,每节课要讲授的内容多,跨越的章节也多,如果采用传统的板书形式来讲授,会浪费很多书写的时间。同时,用多媒体上课可以实时用电脑演示一些程序实例,学生即时看到运行的结果,学习效果非常好。用动态的电子讲义来讲解,配以实时运行的程序,学生既有理性的认识,亦有感性的认识,教学效果可达到事半功倍。
(四)练习测试
学生都是业余学习,在校时间不长,与教师见面的机会不多,课后如果不配以一定的练习,学生很容易将堂上讲授过的内容忘记。所以,必须给出每一章要做的习题,这些习题可以是教材上的,但最好是教师自己准备的一些更具有综合性的问题。另外,本课程亦是动手能力很强的一门课,编程能力的提高必须配以大量的练习,才能提高学生的编程能力和算法分析能力。很多学生在堂上能听懂教师的讲授,但考试时很多类似的编程题不会做,这就是平时缺少练习的原因。所以,最好在每次课堂讲授结束之前,布置一些相关的测试题,测试题的题型、难度,辅导教师要根据学习者的学习水平来设置,要达到检测和激励的作用。学生按时完成测试后,教师要及时进行批阅,找出学生共性的错误,在课堂上进行讲评,这样有针对性的讲评对学生有很大的帮助。
(五)答疑解惑
教师通过答疑能够监控学生短期学习行为,引导学生承上启下,同时,及时纠正其产生的偏差。答疑的形式可以采用以下方式。
电话、电子邮件可作为上机辅导的辅助手段。电话使用方便,但不是免费的,有的问题也很难用语言表达清楚;电子邮件是免费的,但交互太慢,效率不高。通过电话和电子邮件与学生交流,适合解决一些简单的问题。
课程论坛可作为解决公共问题的发布点。在学校的教学平台上,每门课程都有论坛,教师和学生要充分利用这个交流平台。有一些问题具有公共性,教师要具有预见性,将这些问题摘出放在论坛的显要位置,这样既可方便学生,又可减轻自己回答学生问题的工作量。
建立课程的qq学习群。qq聊天工具几乎每个学生都会使用,教师可以用qq申请一个学习群,开学初就将qq学习群的号码公布给学生,所有学习这门课程的学生都可以加入群。大家在群里共同讨论学习的问题,不管认识的、不认识的,都可以发表见解,有很好的学习氛围,学生可以相互解答问题,也能大大减轻教师的答疑工作量。
推荐一些优秀的学习网站给学生。要学好程序设计类课程,在个人努力的同时,要与别人多交流。学生可以经常访问一些专业的学习网站,与全国各地甚至国外的编程高手交流,以达到自主学习、提高水平的目的。
(六)作业讲评
作业讲评可达到系统指导与全面复习的目的。具体实施方式有:(1)课后作业讲评。在对章节小结时,以课后习题来验证分析方法与计算步骤,加强学生的应用能力。(2)形成性考核册讲评。重在对本课程知识点的融会贯通,以点带面达到综合复习的目的。
(七)复习指导
开放教育期末考试成绩是衡量学习效果的主要依据,期末复习工作的质量直接关系到考试的效果和考风考纪的优劣。所以,期末复习工作应作为重点来抓,本人主要采用以下方式对该课程进行复习指导。
充分利用网络上的期末复习资源,在巩固知识的基础上增加复习的针对性,同时,鼓励学生参与在线测试,认真做模拟试题和往年的试题,起到熟悉题型、自查和摸底的作用。中央电大和省电大的该课程教学辅导栏目中提供了单选题、填空题、程序填充、写出算法运行结果排序、写出算法功能和改错及程序设计等综合练习题,通过这些综合题的下载练习,可使复习更具有针对性。完成这些综合题后,可以下载历年的试题进行模拟测试,从而可以找到自己复习过程中的不足。
学生复习要抓基础,抓重点,大胆放下部分难点。笔者对往年考试的试卷进行分析、筛选,对考试时经常遇到的问题要有所侧重。通过对以往考试的试卷进行分析,发现一般基础内容占70~80%,难点只占20~30%,复习时就要大胆放下难以弄懂的难点内容,将精力全部投放到基础内容,对大部分学生来说,掌握基础内容并不难,这样,大多数学生都能考及格,虽然这对学生学习来说不是最佳方案,但对于考试过关来说,不能不认为是可行的方法。
参考文献:
[1]王萍.c++面向对象程序设计[m].北京:清华大学出版社,2005.
[2]徐孝凯.面向对象程序设计实验[m].北京:中央广播电视大学出版社,2003.
[3]刘文英.《面向对象程序设计》课程教学模式的探索与实践[j].湖南广播电视大学学报,2006,(1).
[4]梅炳夫.《面向对象程序设计》课程教学模式的探索[j].广西轻工业,2008,(8).