面向对象程序设计教学改革与探索
- 格式:doc
- 大小:29.00 KB
- 文档页数:4
[收稿时间]2022-12-10[基金项目]广西高等教育本科教学改革工程项目(2021JGB255,2021JGB500);广西职业教育教学改革研究项目重点项目(GXGZJG2022A053)。
[作者简介]陆建波(1977—),男,广西人,硕士,副教授,研究方向为智能计算。
2023年3University Education[摘要]为实现立德树人教育目标,推进思政教育融入专业课程,文章分析了面向对象程序设计课程思政建设的重要性,并通过对工程精神及工匠精神的挖掘、中国传统文化与哲学的融入、辩证唯物主义观点的引入等方法进行了课程思政教学的改革与探索,提高了课程思政教学的效果与质量。
[关键词]工程精神;工匠精神;传统文化与哲学;辩证唯物主义;面向对象;课程思政[中图分类号]G642[文献标识码]A [文章编号]2095-3437(2023)05-0106-03国无德不兴,人无德不立。
教育部于2020年印发的《高等学校课程思政建设指导纲要》中指出:全面推进课程思政建设是落实立德树人根本任务的战略举措,让所有高校、所有教师、所有课程都承担好育人责任,守好一段渠、种好责任田,使各类课程与思政课程同向同行,将显性教育和隐性教育相统一,形成协同效应,构建全员全程全方位育人大格局[1]。
2021年7月,国家教材委员会关于印发《习近平新时代中国特色社会主义思想进课程教材指南》的通知中指出:理学、工学、医学类课程教材要结合学科专业特点,阐明人民至上、生命至上思想,培养学生胸怀祖国、服务人民的爱国精神,勇攀高峰、敢为人先的创新精神,追求真理、严谨治学的求实精神,淡泊名利、潜心研究的奉献精神[2]。
这为课程思政的开展指明了方向。
课程思政的核心是凸显立德树人的中心任务,借助专业课教学载体,挖掘专业课程中的思政元素,在讲授专业知识与技能的过程中,始终融入理想信念层面的精神指引,真正将学生培养成德才兼备的创新型人才[3]。
长期以来,部分理工科教师在教学过程中习惯性地侧重于对知识与技能的传授,忽视对人文精神的宣扬,造成了部分学生“重技能、轻人文”“技术至上”等问题。
独立学院面向对象课程的教学改革与探索摘要:本文根据面向对象编程技术这门课程的特点,再结合独立学院学生的能力,提出“任务驱动”的教学方法,通过具体的案例来激发学生的主动性与积极性,以切实提高三本学生的动手能力。
通过两个学期的改革探索,证明了该方法确实能帮助学生更加深入的理解理论知识,提高分析和解决问题的能力。
关键词:教改任务驱动面向对象编程技术中图分类号:g642 文献标识码:a 文章编号:1673-9795(2012)12(b)-0007-011 现状与背景面向对象的设计方法是20世纪80年代发展起来的一种程序设计方法。
面向对象的方法就是将数据以及数据的操作方法放在一起,作为一个项目依存、不可分离的整体——对象。
对同类型对象抽象出其共性,形成类。
类中的大多数数据,只能用本类的方法进行处理。
类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信[1]。
相对与结构化的程序设计思想,面向对象的程序模块间的关系更为简单,模块的独立性,安全性有了很好的保障。
但是,很多学生在先学了结构化的程序设计之后,再来学习面向对象的一些概念就显得难以理解。
封装,继承,多态,对象,这样的概念显得很抽象。
目前,《面向对象编程技术》课程教学是老师单一授课后布置一些小习题让学生进行练习,这种教学模式过分的强调教师的主导作用,学生缺乏主观能动性,自主学习能力没有得到锻炼。
加上刚刚接触面向对象这些抽象的概念,普遍有畏难和厌倦的情绪。
为此,本文将以“任务驱动”为导向的课程教学及实践的方法对本门课程进行改革。
2 “任务驱动”教学2.1 “任务驱动”模式“任务驱动”教学模式是以任务为核心,通过分析该模式中的学生这一主体,设计合适的任务,引导学生去完成该任务,最后,针对完成的情况进行总结分析和评价。
主要有以下几部分构成[2,4]:(1)学生能力的分析。
“任务驱动”教学模式中学生是主体,是任务的主动实施者。
对学生能力的分析,有利于教师设计出更符合学生特点及能力的任务,更好的提供帮助和指导,设计适合学生任务与学习资源。
“C++面向对象程序设计”教学改革探索摘要:“c++面向对象程序设计”课程是当前计算机以及相关专业的一门重要的基础课程。
该文结合多年的教学经验,对该课教学中的课程定位、教学内容、教学方法以及考核方式等方面总结了一些思路,并进行了有益探索,以期对该课程的教学方法的改进和教学质量的提高有所贡献。
关键词: c++面向对象程序设计;教学改革中图分类号:g642 文献标识码:a 文章编号:1009-3044(2013)02-0351-051 概述“c++面向对象程序设计”课程是我校信息与电子学院信息类专业学生的一门公共基础课,该课程以“c语言程序设计”为先修课程,以“数据结构”为后续课程。
该课程概念多、理论抽象、知识面广,并且起着承上启下的重要作用,为了设计好教学过程,增强教学效果,经过多年的思考和探索,《c++面向对象程序设计》课程组在明确课程定位、优化教学内容、改革教学方法和完善考核方式等方面进行了探索,逐步形成了自己的课程特色。
2 课程定位课程必须准确定位,这个定位指明了整个教学过程中努力的方向。
大体而言,c++程序设计的课程定位大体有两种不同的思路:1)侧重于程序设计语法规范的说明。
认为课程的对象是高校各专业的大学生,并无从事程序设计的实际经验,将来也不一定是c++的专业开发人员,因此课程的定位在于了解面向对象程序设计方法,能够利用c++编写相对简单的程序,为以后进一步学习和应用打下基础。
2)侧重于用编程解决实际问题的说明:致力于消除大学生毕业后却不会编程的普遍现状,将课程定位牢牢锁定在编程能力而不是应付机械式的考试上。
这两种思路是鉴于学生的未来是否以编写程序为职业作为出发点来进行定位,由于本门课程的教学对象是信息类非计算机专业大二本科生,学生的未来职业与c++的相关度属于中等程度,因此,从这个意义上来说,本门课程的基本定位首先是力求平衡。
其次,等级考试所引起的盲目应试追求虽然常被诟病,然而应试所带来的学习驱动力是客观事实,因此,本门课程的定位兼顾着应对计算机等级考试能力的培养,旨在由应试需求驱动学习兴趣,从而引导学生走向内在驱动,领悟c++面向对象程序设计本身的精彩之处。
面向对象分析与设计课程教学改革探索摘要:本文分析了当前高等院校面向对象分析与设计课程的教学现状,指出其存在的弊端;提出了该课程基于项目驱动的实践体系结构;在知识体系结构、教学方法、考核方式等方面,探讨了本门课程的教学改革思路。
关键词:项目驱动面向对象分析与设计实践教学面向对象分析与设计(OOA/D)课程主要任务是在学生已掌握的面向对象程序设计语言的基础之上,使学生们能够深入理解面向对象方法的精髓和实质,全面了解面向对象分析与设计相关领域的主要研究内容及关键技p当前我们在此门课程的讲授不能满足教学大纲培养需求,经分析现行的课程教学模式主要存在以下问题。
(1)理论知识传授过程中某些知识点的讲授无法切实让学生清晰的领会教学内容,因本门课程对项目实践能力要求较高以及对学生抽象思维能力要求较高,即便是在结合案例的讲授方式下,学生仍然对主要内容的把握上表现出不知所措,学习兴趣及积极性自然大打折扣。
(2)实验体系也演化为为了机械的“做”而做,而不是为了“学”而做,课堂教学与实验教学互相脱钩,学生将软件建模的过程当成了UML 的画图过程,违背了”做中学”的思想[2],因此无法在实践中去领会教学内容,也无法更清晰更形象的体会知识点。
(3)课程的评价考核也与此门课程的教学目标相脱离,考核内容大多演化成机械的文字背诵,因在教学过程中项目实践引入较少,使得考核过程中对分析与设计环节的考查变成了形式上的空洞。
2 基于项目驱动的课程体系结构的改革2.1 课程实践体系结构的搭建本课程教学的关键在于以实践为导向,以项目为驱动,这也是该课程教学的中心环节[3],为此我们首先需要搭建能够承载本课程知识点的实践体系结构。
在搭建项目体系的过程中,我们利用学院现已结题的横纵向软件项目,对其中的面向对象分析与设计结果摘取其中要点与课程理论知识点对接,进一步在分析与设计的各个阶段,将项目的面向对象设计文档和课程的各个UML图形成对接,这样由点即线,形成了完备的课程实践体系结构,学生在这样的结构环境下实践能更准确更清晰的理解实践要点及理论要点,并重现了真实的分析与设计过程,达到了良好的教学效果。
《C#面向对象程序设计课程》教学改革探讨与实践摘要:该文结合实际教学的体会,对面向对象程序设计课程教学方法的改进和教学实践等方面进行了总结,对兄弟院校程序设计课程教学体系的设置和改革,提出了具体的参考建议。
关键词:面向对象项目教学教学实践This paper summarize the teaching method improvement and teaching practice Combining with the actual teaching experienc in the object-oriented program design course,to brother institutions program design course teaching system set up and reform put forward some suggestions.Keywords:Object—Oriented teaching of project teaching practice《C#面向对象程序设计》是目前高职院校计算机及其相关专业学生必修的专业基础课程之一,该课程的目的是使学生能掌握面向对象程序设计的核心思想和应用技能,使学生具备开发一般应用程序的能力。
我院自08年开设这门课程以来,经过老师的潜心研究与实践,逐步形成了一整套教学方法取得了较好的教学效果现总结如下。
1 教学体系的改革计算机课程全体同仁充分分析了面向过程与面向对象程序设计的差异,得出面向过程的程序设计整个编程思想是自底向上的模式,由预定的顺序来控制流程,把一个大的程序根据不同的功能划分成一个个小的模块,每一个模块由一个或几个函数来实现,注重的是功能模块及函数,处理的数据由函数控制,并且数据操作与数据分离操;面向对象程序设计的整个编程思想是自上向下的思维模式,由事件来控制流程,注重的是数据的使用,对数据的操作和数据封装在一起(类中),面向对象的编程思想更加接近现实的事物。
面向对象程序设计教学改革与探索摘要:针对面向对象程序设计课程教学中存在的问题,从课程设置、理论课教学、实践课改革等方面提出改革基本思路、原因和改革方法。
关键词:面向对象程序设计;教学改革;Java1 教学中存在的问题笔者根据多年的教学经验,总结出面向对象程序设计课程教学中主要存在以下问题。
(1)学生熟悉了c语言为代表的过程化程序设计思想,难以转变为面向对象程序设计的思想。
在第1学期,学生学习了c语言,第2学期学习数据结构时,也大量采用c语言进行编程,学生已经熟悉了过程化程序设计的思想,因此,当接触到面向对象编程语言时,难以接受面向对象的思想和方法。
部分学生在学习了一学期后,仍然会写出“方法名(对象名)”这样的语句,并且不习惯于“对象名.方法名”这样的调用方式。
(2)理论课所讲实例间关联性小,实验课中验证型实验过多,且验证内容单一,前后实验没有关联和连续性,严重地影响了学生自主学习的兴趣和对知识点的统一性认识。
现有的实验依赖课后的上机习题。
这些习题通常只针对本章的某个语法或知识点进行设计,前后章节的上机习题没有关联,学生不能通过这些上机习题对面向对象程序设计思想从整体上进行认识。
即便全部上机习题做完,也都是一些非常小的“玩具”程序,不能对学生进行综合型实验训练。
(3)计算机软件水平考试中面向对象程序设计题目做的不好,严重影响该专业认证考试的通过率。
软件水平考试是计算机的专业认证考试,能在很大程度上体现所培养学生综合掌握计算机各方面知识的水平。
该考试的证书是用人单位挑选计算机专业学生的重要指标。
经过多年参加计算机软件水平考试云南省考区软件设计师试题的阅卷,我们发现软件设计师试题中面向对象程序设计题目的得分情况不好,多数学生的得分低于总分的1/3。
所以,教学中加强对软件水平考试中面向对象程序设计的训练是非常必要的。
因此,对面向对象程序设计课程进行教学改革,提高学生面向对象程序设计的能力势在必行。
2 教学改革的措施和方法2.1 课程设置的调整在2009年教学计划修订中,面向对象程序设计被提前安排在第3学期开设,以Java语言为例进行讲解和实验,有3个学分,理论讲授36课时,实验36课时,与之前的18课时实验课相比,加大了实验的比例。
课程调整的主要原因如下。
(1)以Java为代表的面向对象程序设计语言应用非常广泛,是计算机专业学生必须掌握的技能,提早讲授会让学生有更多的时间去熟悉。
(2)Java语言可以作为其他专业课的实验工具,表1为Java在各门课程实验中的应用,其中的某些知识点可以采用Java方便地进行实验。
(3)在专业课的安排上,保证每学期至少有一门课程与程序设计紧密相关,使程序设计贯穿本专业4年的学习过程。
教学计划修改后,实验中需要进行编程的课程见表2。
可以看出,面向对象程序设计提前到第3学期,用Java语言为例讲解,对后续课程的学习非常有利。
2.2 理论课教学改革在用Java讲授面向对象程序设计的知识时,传统的讲解方法是先讲Java语言的历史、基本语法,然后再讲解面向对象的理论知识、类、对象、封装、继承、多态等概念,这也是课本常规的编写顺序,但是对于很多学校来说,学生学习的第一门编程语言是C语言,已经习惯了把程序分成多个函数的思想。
在讲解了Java语言的历史、基本语法之后,学生在接触到类时,仍然习惯于过程化的程序设计思维。
由于课堂讲解的例子都很简单,这些例子采用c语言也可以很方便地实现,而采用Java语言实现时,反而显得代码更多、语法更复杂,这就令学生怀疑采用面向对象的方法会令简单的问题复杂化。
事实上,面向对象程序设计课程的目的是在学生已有过程化程序设计思想的基础上,让学生的思维向面向对象程序设计思想上转变。
我们可以调整部分教学内容的顺序,以达到更好的效果。
1)Java和C语言基本语法的不同之处。
由于Java和c的基本语法大部分相似,学生有c语言的基础,因此教学过程中只需要说明两者的不同之处。
基本语法中,Java和c的不同之处主要有两点。
(1)基本数据类型:char类型,c语言中是1个字节,采用ASCII编码,而Java语言采用Unicode编码,长度是2个字节;布尔类型,C语言中用0表示false,非0表示true,而Java语言提供的boolean是一种基本数据类型,只有false 和true两种取值。
(2)数组类型:在c语言中,数据类型直接声明后就可以使用,如“int a[10]”,而在Java中语言,声明后还要创建才能使用,如“int a;a=new int”,或者声明和创建连在一起写为“int a[]=qtew int[10]”。
2)讲解几个Java系统类,让学生体会面向对象编程的好处。
Java的系统类库很多,可以挑选几个让学生熟悉,编程实现一些小程序,体会面向对象的魅力,让学生习惯“对象名.方法名”这样的调用方式。
(1)String类:编程中用的比较多的运算是字符串的操作,在c语言中很多操作要自己编写代码实现。
而在Java中,字符串的定位、比较、连接、查找、求长度、替换、拆分、去空格等多种操作只要简单地用“字符串名称,方法名(参数)”的调用方式就可以完成,完全不用了解这些功能到底是怎样实现的,只需知道怎样调用、参数需要什么,就可以轻松使用。
(2)Frame类或JFrame类:现在的程序基本上都是窗口形式的可视化用户界面,学生在学习c语言以后,一直很好奇可视化用户界面是怎样实现的,可是在C语言中学生没有办法实现。
在Java中,给学生简单讲解Frame类或JFrame 类的基本方法,学生就能用“JFrame myWindow=new JFrame();”这样一条简单的语句创建一个窗口进行显示,然后可以用“myWindow.setTitle(“我的窗体”);设置窗口标题,用“myWindow.setSize(800,600);”设置窗体大小为800×600点,还可以改变窗口背景颜色、添加标签等。
这些操作都只需要简单的几行语句,不需要了解Frame类或JFrame类是怎么实现的,就能实现一个可视化窗口,学生就会觉得以Java为代表的面向对象编程语言很简洁、方便。
讲解时,可以顺便讲解如何使用“import”导入包。
3)面向对象的知识。
学生了解到所讲的几个Java系统类使用的便捷性、简易性后,就会有兴趣学习自己怎样定义需要的类。
讲解时,可以用前后有关联的例子进行举例,最常见的例子就是图形计算面积的例子。
例如,可以定义圆类Circle,它有1个公有成员变量radius,表示圆的半径,1个方法getArea(),求圆的面积。
这时,定义一个圆的对象c后,可通过“c.radius=10;”直接赋值,但是这样的方式可以给radius一个负数,这显然不符合圆的定义。
这时,我们可以引导学生把radius设置为私有类型,不允许直接修改,并增加方法setRadius()设置半径。
该方法可以先判断半径值,如果给定半径是负数,则把radius设为0。
如果学习了异常处理后,这里可以修改为半径小于0就抛出一个异常,这样就可以保证radius 得到一个合理的值,保证程序的正确性和合法性,通过这个例子可以引出封装性的概念。
由于每个圆在定义后,都需要用setRadiusf()设置半径,很不方便,因此可以引出构造方法的概念。
有了构造方法,可以方便地在定义对象时进行初始化。
随后,为了记录生成了几个圆对象,可以引出静态变量。
在讲解继承性时,可以引入圆柱体类Cylinder,因为圆柱体的底面是一个圆,可以在圆的基础上,增加圆柱体高度height,计算圆柱体体积时可以使用圆的getArea()方法得到底面积,然后再乘以height,这样可以引导出继承性的概念。
当然这个例子最好用类的组合来实现,在讲解类的组合时可以用继承实现的方式进行比较。
在讲解多态性时,可以引入其他图形,如三角形、矩形,将它们求面积的方法名称统一为getArea(),引出抽象类的概念。
定义抽象类Graphics,在Graphics中定义抽象方法getArea(),可以讲解方法覆盖的概念。
在子类中,同样也需要初始化对象的构造方法,这时可以引出子类的构造方法的写法,讲解this和super关键字。
这样,就可以通过图形计算面积的例子引出很多重要概念,并且通过这个例子,可以看出这些主要概念运用的意义和之间的联系。
如果后面讲解图形用户界面,可以要求学生在这些基础上,设计一个求各种图形面积的图形界面程序。
2.3 实践教学改革在理论课进行改革的同时,对实践教学的改革更为重要。
面向对象程序设计课程知识点多、应用广泛,因此我们可以建立多层次实践教学体系。
(1)课堂内实验。
该类实验主要验证各个知识点。
设计实验内容时,我们尽量做到前后实验有关联,后面的实验是对前面实验的完善,让学生最终能得到一个实用的小系统。
在实验中,可以精选一些往年计算机软件水平考试中的软件设计师的程序设计试题让学生实现,要求所有学生都必须完成,让学生提前进入软件水平考试的实战。
(2)课程设计。
设计一些规模稍大、有难度、有工作量的题目,这些题目是知识的综合运用,让3-5个学生组队完成,并在最后花部分时间给每个小组进行讲解,综合评分。
(3)各类程序设计竞赛、本科科研和全国计算机软件水平考试。
要求学生在学习该课程中和学完该类课程后,参加每年两次的全国计算机软件水平考试中的程序员和软件设计师的考试。
可对部分学习能力强的学生进行相关培训,鼓励他们参加ACM国际大学生程序设计竞赛、百度之星程序设计竞赛、TopCoder 程序设计竞赛、甲骨文ThinkQuest程序设计竞赛等;鼓励部分有创新思维的学生,让他们选定指导教师,参加校级、省级、国家级本科科研项目。
经过以上多个层次的实践教学,学生的面向对象程序设计能力会有较大提高。
参加程序设计竞赛、本科科研和计算机软件水平考试,对学生能力的锻炼、更好的就业都有很大的好处。
3 结语面向对象程序设计是计算机专业的基础课,对其他课程的学习和实验教学有较大的帮助。
由于面向对象程序设计是当今程序设计的主流,而程序设计能力是计算机专业学生能力的最大体现,所以该门课程至关重要。
对该门课程进行教学改革,从而提高学生的面向对象程序设计能力也非常重要。