【VB开源代码栏目提醒】:网学会员为广大网友收集整理了,以螺旋式案例实施面向对象程序设计教学的研究 - 技术总结,希望对大家有所帮助!
第5期 计算机教育 2010年3月10日 Computer Education No.5 Mar.102010 116 文章编号1672-5913201005-0116-05 中图分类号G642 文献标识码A 以螺旋式案例实施面向对象程序设计教学的研究 杨朝霞 兰州交通大学 数理学院甘肃 兰州 730070 摘 要面向对象是随着GUI迅速发展起来的编程技术如何组织好面向对象课程的教学是近年来高等教育的热门话题之一。
本文结合面向对象程序设计课程的教学经验和建构主义学习理论针对面向对象程序设计技术的特点提出螺旋式递进案例教学法。
实践证明该教学方法能够激发学习者的学习兴趣、提高信息技术类课程的教学质量。
关键词案例教学法面向对象程序设计C语言 计算机区别于其他计算工具的根本特征是“存储程序”计算机本质上是“程序的机器”程序设计能力在计算机学科知识体系中具有核心地位。
因此程序设计作为计算机及其相关专业的一门重要核心课程其教学质量直接影响到后续专业课程的学习和毕业生未来的发展。
鉴于程序设计课程的基础性和综合性如何设计好教学过程以增强教学效果培养学生的编程能力和实际动手能力以适应社会的需求始终是教师、学者和专家关注的问题。
面向对象编程技术是一个教学难点为此很多教育工作者在实践中不懈努力摸索出一些经验提出不少有价值的见解1-6。
笔者结合多年从事程序设计教学的经验与体会对程序设计类课程的教学特点和方法做了研究并在近年教学实践基础上探索如何将案例教学运用于面向对象的程序设计教学以螺旋式递进分解子任务的方法展开案例教学内容在有限的学时内收到较好的教学效果。
1 面向对象程序设计课程教学中存在的问题 1.1 面向对象方法的特点决定了传统教学法的不适宜性 面向对象程序设计方法作为设计基于GUIGraph User Interface软件系统的一种新方法不仅实践性和技术性较强包含的新概念、新名词也较多诸如继 承和派生、多态、重载、消息、事件驱动、模板等等。
由于其思维方式和知识结构的变化传统的罗列概念语法、编程举例讲解、练习验证巩固的三部曲灌输型教学法容易使学习者从一开始就感觉面向对象既抽象、又庞杂易产生畏惧心理而且难以体会到面向对象程序设计方法的本质导致实际开发能力严重不足。
1.2 现有教材体系不利于培养学习者的创新思维和系统观 面向对象程序设计方法对编程者的系统观念、全局观念要求较高而且在面向对象的软件开发过程中对团队协作配合能力要求较高。
但是从现有的教材体系来看基本都是按照知识点分章节按部就班组织学习内容各章节的实例不连贯且很多例子与实际求解问题无关仅仅是为了说明某个知识点或者原理而设计的
代码。
这种短小精悍的例子难以贯穿面向对象程序设计方法的大部分内容进而导致学习者在学习过程中只见树木不见森林的片面性也难以形成软件工程人才应具备的科学的系统观。
1.3 在大多数高校的培养计划中属于小学时课程 对于程序设计课程而言其特点是更新快、内容多、课时少。
所以按照传统的讲授法和系统的学习方法难以在小学时内达到课程的教学要求。
基金项目兰州交通大学校级重点课程群课题“软件技术基础系列课程群”101007。
作者简介杨朝霞女副教授硕士研究方向为软件工程。
杨朝霞以螺旋式案例实施面向对象程序设计教学的研究 117第5期 传统的系统学习和讲授有许多缺点它偏重知识的灌输重理论轻实践以教师为中心以单项讲授为主是代理式的学习方法培养出的学生实践能力不足不能满足当前社会对创新型人才的需要。
虽然近年来教学方式有所改变但受传统教学影响教学内容仍然是理论与实践相脱节课堂教学空洞、呆板缺乏吸引力束缚学生的思维发展且不能发挥学习者的潜力。
2 案例驱动教学法 所谓案例就是为了一定的教学目的围绕选定的一个或几个问题以事实或实际情境为素材对某一实际情境的客观描述。
案例教学就是以案例为基本素材将学习者引入一个特定的真实情境中通过师生、生生之间双向和多向互动、积极参与、平等对话和研讨从而重点培养学习者的批判反思意识及团体合作能力促使学习者充分理解问题的复杂性、变化性、多样性等属性的重要教学形式7-9。
案例教学是近年来倡导的主流教学方法之一它能很好解决理论与实践的衔接问题。
在案例教学中强调学习者的参与和师生间的互动。
情境性、互动性、实践性是案例教学的基本特征。
由于案例教学法自身的特点决定了案例的好坏直接影响到教学的效果及质量。
所以案例的选择要做到精、够、深同时还要注意到量和规模的控制。
3 螺旋式递进案例教学法 螺旋式案例教学法是指教师根据对教学内容的理解将精心选择的案例以知识点的逐渐递进为原则分解为环环相扣的子任务每个教学子任务的教学过程设计均以学习者建构知识点为目标采用循序渐进的方式展开。
螺旋式递进案例教学法以案例为素材从学习者已有的知识能力为起点不断提出新的目标和子任务又以新任务的解决和新知识点的建构作为新的起点引出下一个子任务。
整个教学过程由若干个循环依次提升所形成的螺旋组成其中的每一个循环如图1所示。
引入新任务 求解任务 总结知识点 图1 螺旋式递进案例课堂教学的一个循环 这种由浅入深、层层递进、螺旋式上升的案例教学法容易吸引学习者注意力并且由于设计的子任务能够自然引入新知识学习者总是可以从一个比较容易解决的已熟悉的内容进入到新知识点的学习过程中所以学生兴趣高、主动参与度好绝大部分同学能够跟上教师的进度。
同时通过不断地探索每个简单子任务的求解过程使学习者能够体验到胜利的喜悦从而产生学习的成就感进而转化为学习的动力和源泉。
由于教学时数的限制和案例教学本身的特点同时考虑到教学内容及学习者的特点以实用、够用为原则精心选择三个案例以C语言为依托完成面向对象程序设计方法的基础内容教学。
4 螺旋式递进案例教学法的教学设计 4.1 精心选择案例 案例1几何形状的面积和体积。
案例2学生成绩管理系统。
案例3员工管理系统。
为了达到教学目的每个案例的侧重点不同专门针对面向对象技术的特点而设计。
案例1重在面向对象基本知识点的理解案例2侧重于批量数据的处理和文件操作案例3强调设计较大型软件系统时的建模方法、以及利用const、static等修饰符处理细节问题的技巧。
本文以案例1为例说明螺旋式递进案例教学法的具体实施过程。
4.2 合理安排螺旋式递进子任务 将案例分解为一个个循序渐进的子任务每个子任务的设计以能引入新的课程内容为益且预留较强的扩展空间。
计算机教育 Computer Education 118 2010案例1的子任务按照层层深入、逐渐提升知识点的原则依次设计。
如表1所示。
4.3 课堂组织实施 螺旋式递进案例课堂教学的基本组织过程如下。
表1 案例1子任务划分示例 子任务 知识点 问题导入 任务1求圆的面积。
类、对象、面向对象、封装 从简单的面向过程的顺序结构引入 任务2求圆柱的体积。
继承、派生、
代码复用 如何在求体积时复用求圆面积的
代码 任务3求三角形、圆形、矩形、梯形等几何图形的面积。
重载、多态、纯虚函数、抽象类 分析出共同点是求面积如何给用户提供方便而统一的接口 任务4依次改写任务1-任务3使对象能够初始化、自我复制。
构造函数、析构函数、初始化参数表、拷贝构造函数等 如果已知对象各成员的初值如何对它们初始化 1 教师提出学习目标引入案例明确任务针对案例分解子任务。
2 分析和求解子任务。
这是螺旋式递进课堂教学的关键环节每个子任务的学习和求解依赖于前一阶段的学习成果各个子任务的知识点之间构成层层递进的环链关系。
子任务的求解过程以层层递进、螺旋式展开。
具体可以细化为利用已知的方法求解子任务找出旧方法存在的问题和矛盾分析矛盾和案例启发学生思考并解决问题教师引导拓展提出新的问题和矛盾解决新的矛盾总结知识点和它们的用法通过学生实践巩固和升华。
如图2所示。
子任务讲解分析 学生求解问题总结知识点 解决新的矛盾 教师引导拓展教师引入新任务 图2 螺旋式递进案例课堂教学的组织和实施过程 4.4 案例1的教学过程和实施 1 案例引入。
任务1对于已经具备一点程序设计基础的学习者来说非常简单只用顺序结构和简单的几行
代码即可求解。
但是此时教师可以提出虽然短短几行可以解决这个问题但如果需要反复求不同圆的圆面积那么
代码几乎不能重用此时可以用两种方法解决函数或者类。
于是自然地引入使用类的一种解法类的定义如下 class Circle public: double R double area return 3.14159RR 2 寻找问题和矛盾。
教师继续引导该程序虽然使用类求解但是其中没有任何OOObject–Oriented思想对象的所有内部细节对外都是可见的数据的安全性不强而且对于外部用户来说他必须了解半径这个数据成员在类内部的标识符名称否则无法使用这个类。
3 引导拓展新的方法。
如果利用面向对象的思想求解该题那么我们必须换个角度来思考。
对于任务1具体的某个圆可以看做是一个实物即对象。
如果能够精确描述这个实物那么不论需要处理或求解多少个圆面积程序中只需奉行“拿来主义”。
根据求解的侧重点这一类对象的属性就是半径行为就是计算面积一般来说我们不希望外界能够访问属于对象自身的一些数据。
因此可以定义一个与前述不同的类Circle类的定义如下 class Circle public: // 定义对外接口 void set_datadouble r void displayArea private: // 封装部分数据和行为 double m_R double calculateAreavoid 4 知识点的回顾与提升。
根据类Circle的定义分析用private实现封装的方法及好处以及封装之后设计接口的技巧同时指出利用面向对象的程序设计方法解决问题时是以实体作为处理的基本单位而不是描述实体的数据这是和面向过程的程序设计方法所不同的。
5 提出新矛盾引入新任务。
紧接着可以利用学习者面对十几行
代码持有的疑惑指出发现的新问题简单的问题却编写了很长的
代码似乎将问题复杂化了。
杨朝霞以螺旋式案例实施面向对象程序设计教学的研究 119第5期 但是对于前两种解法来说在求圆柱体积时必须要重新将求圆面积的
代码重复写一遍出现了
代码冗余。
而对于第三种做法只需要在其基础上进行类的派生和继承就可以复用Circle类中计算圆面积的
代码。
6 讲解分析递进子任务2。
给出圆柱体类的定义使之从Circle类继承半径和计算圆面积像前文一样分析其优点并总结继承和派生的使用要点。
7 引导拓展提出新任务3。
如果继续求解其他一些几何图形的面积诸如三角形面积长方形面积或球体积圆柱体体积等一般希望对外部用户只提供一样的接口就能够完成相似的操作。
由此自然地引出抽象类多态等概念而且使学生轻松了解了什么是多态以及为什么使用抽象类等知识。
8 知识点的总结与提升。
课程进行到这里时大部分面向对象的基本概念已经学习完毕从类的定义到继承和派生多态和重载抽象类等。
在学习者主动参与分析和解决了问题之后进行分析和总结将习得的新知识系统化、条理化从而使学习者的理解得到升华。
在新知识得到总结和巩固之后可以进一步提出新的子任务4就是当几何图形的数据已知时可以在声明对象时初始化然后引入构造函数、析构函数等。
在案例1的处理上始终以问题为导向通过提出问题促使学习者卷入学习通过引导学生探究促使学生积极思考。
在各个螺旋式渐进子任务的设计中为保证学习者思维的连贯性将构造函数、析构函数等内容后移这样反而使得整个课堂节奏紧凑内容易于理解。
这也是螺旋式渐进教学法的好处即思维连贯难点分散。
根据案例1的教学过程设计通过对教学内容和知识点的螺旋式递进安排使得很多比较抽象的概念和知识简单化使学习过程成为一个不断主动探索完成任务的过程并且这种层层深入、逐渐提升的方式给学习者留下深刻印象学习者在较短的学时内完成了学习内容且效果良好。
教学实践证明这种教学方法值得在信息类课程中推广。
5 螺旋式递进案例教学法实施过程中易出现的问题及对策 1 案例选取不合理。
案例如何选取选择的规模如何控制以及案例教学的具体实施过程都是教学中遇到的新问题。
案例选择不好其原因要么是案例中包含的新知识太多要么是不能完全阐述教学计划内容。
几十年来传统教学法沉淀了不少优秀的教学用例随着案例教学法在信息类课程中的推广我们也急需设计和积累这方面的教学案例。
2 递进子任务分解不合理。
这是分解子任务的关键和难点所在。
由教师分解后的子任务太小或太大。
难度太小不利于课程内容层层深入式展开难度太大则授课进度缓慢课程内容容易被淡化。
因此教师要根据学生特点和教学目标以够用、实用为原则循序渐进适当分解。
3 子任务中引入和展开的知识点太多。
这是教师在讲授子任务时受传统教学法影响而最容易走入的一个误区。
一个子任务求解过程涉及的知识点太多学习者会感到内容庞杂且无所适从。
因此教师在备课时要仔细分析认真取舍深刻把握和界定难度引领学生逐步认识面向对象的精髓。
6 结语 在程序设计课程教学法经历了传统的讲授法、“任务驱动”法等教学模式后本文以建构主义理论为依据结合实际教学经验提出一种新的“螺旋式递进案例教学法”它要求教师认真做好准备充分发挥课堂的主导作用以案例为驱动将案例按照螺旋式递进关系适当分解、细化并以分解后的子任务为线索展开教学。
实践证明该教学方法能有效激发学习者的学习兴趣和实践积极性在较短的学时内能完成原定的教学任务显著提高程序设计类课程的教学效果和质量。
计算机教育 Computer Education 120 2010参考文献 1 贺海晖石林祥.“面向对象程序设计”课程建设的实践与探索J. 计算机教育200910:37-38. 2 王桂平. 基于实训项目的面向对象程序设计课程教学J. 计算机教育200913:191-193. 3 张丽梅. 案例教学法的研究与教学实践J. 黑龙江教育:高教研究与评估200603:51-52. 4 李长荣吴迪. 软件工程专业程序设计基础课程教学的研究J. 计算机教育200913:140-142. 5 张东生李玉玲. 面向对象程序设计的教学研究J. 河南大学学报:自然科学版200203:107-110. 6 朱清华. 面向对象程序设计的教学改革J. 教书育人200511:43-44 7 梁涛. 建构主义学习理论在C程序设计教学中的应用J. 新疆师范大学学报20072:117-120. 8 陈洪东 刘思琦. 案例教学法及应用J. 科教文汇中旬刊200901:95. 9 戴维·加文王公龙. 创造案例教学:为了适应现实世界的专业教育:哈佛大学戴维·加文教授关于21世纪案例教学的新思考J. 党政论坛200906:57-59. Teaching Research with Spiral Case-task to Implement Object-oriented Pogramming Courses YANG Zhao-xia Department of Software Engineering Lanzhou Jiaotong University Lanzhou 730070 China Abstract: The programming techniques of object-oriented developed rapidly along with GUI.How to organize teaching process of object-oriented curriculum is one of hot issues in the fields of higher education in recent years.In this paper aimed at the object-oriented programming technology featuresone teaching method of spiral case-task has been put forward according to our teaching experience and constructivist learning theory.It has been proved by practice that the teaching methods of spiral case-task could stimulate learners interest in learning and improve the quality of education about courses of information technology. Key words: teaching with case-task objected-oriented programming C language 编辑郭小明 上接107页 参考文献 1 张克君张晓昆. 基于“质量工程”的大学计算机公共基础课程教学改革思考J. 计算机教育200913:52-54. 2 朱文增赵竞雄张阿娇. 程序开发在
VB教学中的应用研究J. 电脑知识与技术2009514:3841-3842. Research of Visual Basic Programming Teaching Model Based on Project Development Teaching Method ZHANG Chun-ying LIU Feng-chun College of Science Hebei Polytechnic University Tangshan 063009 China Abstract: In the Visual Basic programming curriculum the project development approach is adopted to design teaching and the teaching order is adjusted in order to implement the principle of “Problem-guide project-driven practice-based stressing training combined theory enough for the degree”. The results of Enhancing real combat training diluting the proof-of-experiments and Strengthening the design-based experiments are making students master the basic method of programming design through the practice project training and familiar with the basic software development process. Furthermore the students’ analyzing and solving problem skills have been Enhanced and the students’ innovative practice ability has been improved. So we have achieved a good teaching effect. Key words: project development teaching method problem-guide practice-based the design-based experiments 编辑郭小明 以螺旋式案例实施面向对象程序设计教学的研究作者杨朝霞 YANG Zhao-xia作者单位兰州交通大学数理学院甘肃兰州730070刊名计算机教育英文刊名COMPUTER EDUCATION年卷期20105被引用次数0次 1.贺海晖.石林祥 quot面向对象程序设计quot课程建设的实践与探索 2009102.王桂平 基于实训项目的面向对象程序设计课程教学 2009133.张丽梅 案例教学法的研究与教学实践 200634.李长荣.吴迪 软件工程专业程序设计基础课程教学的研究 2009135.张东生.李玉玲 面向对象程序设计的教学研究 200236.朱清华 面向对象程序设计的教学改革 2005117.梁涛 建构主义学习理论在C程序设计教学中的应用 200728.陈洪东.刘思琦 案例教学法及应用 200919.戴维·加文.王公龙 创造案例教学:为了适应现实世界的专业教育:哈佛大学戴维·加文教授关于21世纪案例教学的新思考 20096 1.期刊
论文 郑丽香.ZHENG Li-xiang 面向对象单元测试的案例教学法 -电脑知识与技术2008435 该文介绍了在软件测试课程的教学过程中结合学生所学的Java的相关知识用案例教学法来讲解面向对象单元测试这一教学内容让学生既能理解理论知识又能掌握实践技能提高学生的学习兴趣培养学生的动手能力.2.学位
论文 詹自胜 案例教学法在面向对象程序设计教学中的探索与实践 2006 面向对象程序设计的教学不仅要让学生理解面向对象编程的思想更重要的是要会运用面向对象的编程语言于实际生活中要“学以致用”提高学生的实际动手能力才是教学的最终目的。
案例教学法由于在哈佛商学院的成功运用和实施使其成为一种风靡全球的、被认为是代表未来教育方向的成功教育模式。
在我国把案例教学运用于计算机教学中尚处于起步阶段而把案例教学运用于面向对象程序设计教学中也并不多见。
本
论文根据面向对象程序设计课程的特点同时结合案例教学本身的优点采用行动研究的方法进行把案例教学运用于面向对象程序设计教学中的研究旨在为计算机程序设计教学提供可借鉴的经验和建议促进计算机教学的发展丰富教学方法。
本
论文首先通过文献调研分析了面向对象程序设计的教学现状总结了传统环境下面向对象程序设计教学中存在的难点问题。
通过案例教学在面向对象程序设计教学中运用的适用性进行分析设计出一种教学方案及教学流程。
其次选取信阳职业技术学院2004级计算机应用专业大专班作为个案进行行动研究以
VB.net为面向对象程序设计的代表性语言.