网站大量收购闲置独家精品文档,联系QQ:2885784924

如何在C++教学中引入设计模式的思想.docVIP

如何在C++教学中引入设计模式的思想.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何在C教学中引入设计模式的思想

如何在C++教学中引入初步的设计模式思想 向 华 (长江大学计算机科学学院,湖北荆州 434100) [摘要] 本文从教学的角度阐述了如何在C++程序设计课中引入初步设计模式的思想的方法,简单说明了设计模式在面向对象程序设计教学中的重要性,并以一个实际可操作性的案例为进行论述,在实践中取得了良好的教学效果。 [关键字] 设计模式 案例 抽象工厂 引言 C++语言程序设计是计算机类专业的专业基础课,本课程的主要目的是培养学生的基本编程能力、基本的软件逻辑思维方法以及基本的面向对象思维方法[1],但从实际教学情况看,本课程学完之后,很多同学遇到具体的问题时,很少有同学用面向对象的类结构解决问题,即使设计了类,也是把各种功能揉进一个类中,然后“按顺序”调用,经过了解,很多同学感觉学了C++后,在解决某一个具体问题时,直接设计使用C++的函数就可以解决问题,对于设计类,然后借助对象搭建程序反而感觉更“麻烦”。分析其原因,主要是由于我们在教学过程中,过于注重C++的语法解析,所举的应用实例都是为了理解语法的方便比较简单的计算型的,较少涉及到逻辑关系复杂,代码量较长的问题,所以无法让学生从根本上理解面向对象程序设计的好处,又由于课时安排的原因,在整个本科教学过程中又无法开设《设计模式》这门课,这样导致部分同学在后面的学习过程无法遇到问题,还是无法很好的利用面向对象的可复用思想解决问题。 C++教学中引入设计模式思想的案例 设计模式使人们可以更加简单方便地复用成功的设计和体系结构,给同学们传递的最主要的是可复用的面向对象的思想,现有的23个模式是实现这一思想的主要模式[2],但如果在教学中不加选择的笼统介绍给同学们,在还不是很熟练的掌握C++的语法的情况下,会让大家更是一头雾水,所以,对准备给同学们讲的模式应当有代表性,实现起来又比较容易,同时,使同学们切身感受到设计模式的好处。经过笔者教学过程中的摸索,给出了一个比较好的教学思路,下面以一个讲解抽象工厂模式的例子说明教学引入过程。 1.前期铺垫 在讲解函数一章时,布置下函数作业,要求同学们分别写出求圆、正方形、矩形、梯形、三角形面积的函数,从实践情况看,大部分同学在这一阶段可以很好的完成任务,给出所要求的程序,同学们作业中一般的函数结构是: Double AreaOFTectangle(double); //求三角型面积。其它几种图形面积求法类似。 2.创建类对象求面积 在进入面向对象程序设计讲解时引入类的概念之后,要求同学们完成构建圆、正方形、矩形、梯形、三角形类,并用各个类分别创建一个对象实例,然后求出总面积输出。 此阶段在同学们的作业中多出现类似下面的程序结构: Circle c(3.0); //圆对象 Square Sq(4.0); //正方形对象 Rectangle R(5.0,6.0); //矩形对象 Trapezoid Tra(6.0,4.0,3.0); //矩形对象 Triangle Tri(5.0,3.0.4.0); //三角形对象 Double AreaSum=C.ReturnArea()+Sq.ReturnArea()+R.ReturnArea()+Tra.ReturnArea()+Tri.ReturnArea();//面积求和计算 3.提出问题 在深入学习过多态性与虚函数一节之后,向同学们提新的要求,可否提供一个基类[3],把所有图形的面积计算都做成一个统一的接口,由于已经学过虚函数还有继承,所以同学们会很自然想到用虚基类的继承形式,形成如下的类结构图。 图表 1 图形类继承关系 此结构其实已经是抽象工厂模式了,只是同学们还不知道如何发挥它的作用,在这里用进一步的问同学们如何得到一组图形的面积和?用以引导同学们进一步探讨此模式的用法。在恰当的时候,老师可以给出解决方案: Figure *pFig[n]; pFig[0]=new Circle(3.0); //圆对象 pFig[1]= new Square (4.0); //正方形对象 pFig[2]= new Rectangle(5.0,6.0); //矩形对象 pFig[3]= new Trapezoid(6.0,4.0,3.0); //矩形对象 pFig[4]= new Triangle(5.0,3.0.4.0); //三角形对象 ….. //统一通过基在指针调用子类对象的面积函数 for(int i=0;in;i++) AreaSum +=pFig[i]-ReturnArea(); 此例演示完成后,则可以给同学们给出规范化的抽象工厂模式的结构图和描述,如下图,描述略。 图表 2 抽象工厂模式 至此,在抽象工厂模式的讲解完成,用类似的先实践后理论总结的方法笔者也尝试讲

文档评论(0)

xingkongwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档