• 美文
  • 文章
  • 散文
  • 日记
  • 诗歌
  • 小说
  • 故事
  • 句子
  • 作文
  • 签名
  • 祝福语
  • 情书
  • 范文
  • 读后感
  • 文学百科
  • 当前位置: 柠檬阅读网 > 散文 > 正文

    面向对象程序设计语言是【抛锚式教学模式在《面向对象程序设计》教学中的应用】

    时间:2019-04-15 03:26:41 来源:柠檬阅读网 本文已影响 柠檬阅读网手机站

      摘要:抛锚式教学模式是信息化教学模式之一,其主要特点是从学生已有的知识出发,通过情景提出问题,确定教学内容和教学进程。在分析《面向对象程序设计》课程教学特点的基础上,作者对抛锚式教学模式在《面向对象程序设计》中的应用进行了教学实践探讨,发现运用抛锚式教学能够很好地将面向对象程序设计中的概念、原理与真实世界联系起来,充分利用知识之间的联系,一步步地引导学生掌握面向对象程序设计的知识。
      关键词:抛锚式教学模式;面向对象程序设计;教学案例
      抛锚式教学模式是基于真实或模拟情景的信息化教学模式,它通过情景产生学习需求,确定教学内容和教学进程(就像轮船被锚固定一样),通过镶嵌式教学和学生的主动学习,亲身体验识别解决问题,从而达到学习的目标。
      面向对象程序设计是近年来迅速发展的软件设计思想和技术,它是在继承结构化程序设计技术的优点与长处的基础上产生的一种全新的程序设计思想和方法,在软件开发中有着广泛的应用。《面向对象程序设计》是高等学校计算机及相关专业必修的一门重要课程,研究如何在教学过程中运用信息化教学模式对于提高教学质量、培养学生掌握面向对象程序设计的知识和问题解决的能力具有一定的实践意义和价值。
      1.《面向对象程序设计》教学的特点
      把握课程的特点是开展教学的起点和选择合适教学模式的关键。面向对象程序设计是在继承传统的结构化程序设计的基础上发展而来的。因此,《面向对象程序设计》的教学重点应该包括面向对象程序设计的基本概念和结构化程序设计与面向对象程序设计的区别两个方面。
      面向对象程序设计基于一种抽象的数据类型——类,和这种抽象数据类型的实例——对象[1]。对象是具有某些特性的具体事物的抽象,对象有属性和方法,分别用来表征对象的状态和行为,类是创建对象实例的模板,用来描述具有相同属性和方法的对象集合,它定义了集合中每个对象共有的属性和方法,对象是类的实例。事件是能被对象所识别的外部刺激,如单击鼠标。面向对象程序设计通过事件驱动机制处理事件,即只有在事件发生时程序才会运行,否则处于静止状态。图1表明了这几个概念之间的联系[2]:
      图1 面向对象程序设计中基本概念的关系
      2.《面向对象程序设计》教学中的抛锚式教学
      2.1理论基础
      抛锚式教学模式是指在多样化的现实生活背景中(或在利用技术虚拟的情境中)运用情境化教学技术以促进学生反思,提高迁移能力和解决复杂问题能力的一种教学方式[3]。所谓的“锚”,是指在情景中创设的事例和提出的问题。抛锚式教学模式是建构主义教学模式之一,建构主义主张学习者通过感受真实的环境达到对事物的本质及其相互之间的联系的认知。抛锚式教学模式以真实的事例或问题为锚,在问题背景中产生学习需求,通过主动学习、生成学习和与其他学习成员之间的交流与合作,亲历从识别目标到达成目标的全过程[4]。
      抛锚式教学具有与传统的课堂教学不同的特征:通过真实或者设置的情景引出用作“锚”的问题或者实例;教师不再是传统教学中知识的传播者,而是学生学习的引导者、支持者和学习伙伴;学生通过自主和合作的方式进行学习;强调教学的无序性,也就是教学顺序与预先确定的教学设计不一致,无序性教学富有弹性,教学信息不确定,教学目标具有相对开放性,教学结果有弹性[5]。
      2.2教学案例
      以掌握面向对象程序设计的三大特性中的“继承”、“多态”及“接口”的概念教学为例,下面谈谈在面向对象程序设计教学中如何实施抛锚式教学,程序的实现使用C#语言。学习的前提是学生已经掌握面向对象的概念和“类”的概念,掌握构造类、属性和方法的知识。
      “继承”、“多态”和“接口”之间既相互联系又有区别,为保持教学内容的连贯性和逻辑性,将本次教学分为2个单元,分别学习“继承”、“多态”和“接口”。
      单元1:“继承”和“多态”
      情境1:计算机动画展示:一只“喵喵”叫的“猫”和一只“汪汪”叫的“狗”,动画显示它们都属于“动物”。
      问题1:“分别为猫和狗创建2个类‘Cat’和‘Dog’,这2个类都具有表示名字的属性‘name’和表示动物叫唤的方法‘shout’。建立主程序,在其中实例化猫和狗的对象,输出这2个对象的‘name’,执行‘shout’方法,分别输出‘喵’和‘汪’。”
      问题1的提出是建立在学生已经掌握了“类”和“对象”的概念基础上。建立1个“Cat”类和一个“Dog”类,它们具有功能相同的属性和方法。学生根据自己掌握的面向对象的知识和对问题的理解,可以自己独立解决问题,也可以通过与其他同学交流协作的方式完成任务。
      问题2:“问题1中创建了2个类,主程序中执行了一些操作,在这2个类和主程序中,许多代码是重复或相似的,这些代码被称为冗余代码,有什么方法将代码精简,实现代码的重用?”
      如前所述,学生建立的2个类中具有形同功能的属性和方法,代码冗余度大,复用率低。面向对象程序设计允许通过类的“继承”实现代码的优化和复用。在解决问题2之前要让学生掌握“继承”的概念,并掌握以“继承”的方式建立新类的操作,然后着手解决问题2提出的问题。通过分析“Cat”和“Dog”两个类的共同点,建立一个“animal”类,该类有1个“name”属性和1个“shout”方法。重新构建“Cat”类和“Dog”类,让它们继承自“animal”类。重写主程序,输出“name”、执行“shout”方法。这时学生会发现出现新的问题:“Cat”对象和“Dog”对象执行“shout”方法输出的结果是相同的。由此引出问题3。
      问题3:“为什么执行重构后的程序,‘Cat’对象和‘Dog’对象执行‘shout’方法得到相同的结果?这显然是不合实际的,如何解决?”
      问题3引出了面向对象程序设计的另外一个重要属性“多态”。所谓多态,在面向对象程序设计中是指的同一个消息或者操作作用于不同的对象产生不同的结果。在解决问题3之前要让学生掌握“多态”的概念,然后着手解决问题。重构“animal”类,将“shout”方法改为没有方法体的抽象方法。重构“Cat”和“Dog”类,在其中重载“shout”方法,并分别实现各自的“shout”方法。修改主程序,使用“animal”类分别实例化一个“Cat”对象和一个“Dog”对象,它们执行“shout”方法后得到不同的结果。   单元2:“接口”
      情景2:在情景1的基础上,计算机动画在“猫”的下方显示一只“机器猫”,“机器猫”一边“喵喵”叫,一边变魔术,变出一条鱼。接着在“狗”的下方出现一只“机器狗”,“机器狗”一边“汪汪”叫,一边变魔术,变出一根骨头。
      问题4:“动画中我们看到‘机器猫’和‘机器狗’除了分别具有‘猫’和‘狗’的一般特征外,还具有普通猫和狗不具备的特征,请用程序分别输出‘机器猫’和‘机器狗’叫唤的声音‘喵’和‘汪’,并输出‘机器猫’和‘机器狗’变魔术的动作‘机器猫:变鱼’和‘机器狗:变骨头’。要求运用接口的知识解决该问题。”
      “机器猫”和“机器狗”都要具有普通猫和狗的属性,它们应该分别派生于“Cat”类和“Dog”类。它们又要分别实现“变”这个动作,如果让2个派生类分别实现各自的“变”的动作,则显然又会显出代码的冗余。似乎可以像上面的“猫”和“狗”那样构造一个基类,让“机器猫”和“机器狗”继承基类。可是C#语言只允许单继承,“机器猫”和“机器狗”已经分别继承自“Cat”类和“Dog”类了,如何又能继承自其他类呢?解决问题的办法就是使用接口。接口是用来定义一种程序的协定。在面向对象程序设计中,接口主要用于行为跨越不同类的对象,使用接口可以很好地增强现有类的功能,保证在特定的环境下系统自动实现这些功能。
      要解决问题4必须学习“接口”的相关知识,以及如何使用“接口”的操作。学生将在教师的引导下通过教师的讲解和自主学习掌握这些知识,然后解答问题4。创建接口“IChange”,使其具有“change”方法。分别从“Cat”类和“Dog”派生出两个类“CatMachine”和“DogMachine”,并且这两个类都要实现“IChange”接口的“change”方法,分别输出“机器猫:变鱼”和“机器狗:变骨头”字符串。由于“CatMachine”类和“DogMachine”类分别继承自“Cat”类和“Dog”类,它们的实例对象都可以实现普通“Cat”类和“Dog”类的功能,又实现了“IChange”接口,具有“变”的功能,并且代码复用率高,冗余度小。
      3.教学反思
      抛锚式教学密切联系了课程内容和日常生活,从学生已知的知识出发,运用形象生动的情景、实例或者问题设置好教学内容和教学进程,让学生从问题出发开展积极主动的学习。面向对象程序设计的思想是建立在对现实世界对象的基础上的,运用抛锚式教学模式能够很好地将面向对象的概念和操作与真实世界联系起来,充分利用知识之间的联系一步步地引导学生掌握面向对象程序设计的知识和相关操作。
      参考文献:
      [1]杨帆.面向对象程序设计基本结构和思想分析[J].黄石高等专科学校学报,2000,(2):30-34.
      [2]邵结.面向对象程序设计教学初探[J].宁波大学学报,2002,(6):90-92.
      [3]William R.Booth.Anchored instruction[EB/OL].http://www.coe.enco.edu/ET500/Booth/SL D002.HTM/,2004,7.
      [4]钟志贤.信息化教学模式——理论建构与实践例说[M].科学教育出版社,2005.12.
      [5]马国光.抛锚式教学法在VB教学中的实践初探[J].中国成人教育,2006,(6):127-128.

    相关热词搜索: 抛锚 程序设计 面向对象 式教学

    • 文学百科
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章