分类筛选
分类筛选:

程序设计类有关开题报告范文 与培养软件工程思想的面向对象程序设计课程改革和实践类大学毕业论文范文

版权:原创标记原创 主题:程序设计范文 类别:本科论文 2024-04-07

《培养软件工程思想的面向对象程序设计课程改革和实践》

本文是程序设计类有关开题报告范文跟软件工程思想和课程改革和面向对象类自考开题报告范文。

0前?言

程序设计课程是软件工程专业低年级本科生的专业基础课程,传统的程序设计课程教学更多地关注底层程序结构的设计和实现,侧重于算法和数据结构的应用.学生学习时将重点放在各个知识点的语法学习和实践上.因此很多同学在上完程序设计课程之后,更多只是掌握了语法,而不能在实践项目中进行有效的应用.这样的程序设计课程与实际软件工程思想是完全脱节的.

面向对象的程序作为目前最主流的编程范型,其程序设计课程的教学更应该体现如何解决问题的工程化思想.课程教学重点不应该关注类、继承等语法结构的编写,而需要为学生建立面向对象的程序设计思想,更多地关注如何封装为类、如何应用多态建立稳定的系统结构等.通过这种在低年级程序设计课程中就逐步灌输软件工程化思想,从而为后续的软件工程相关课程奠定坚实的语言基础.

1课程内容设计

将程序设计课程的教学核心目标从让学生掌握一门编程语言,转变为培养学生利用程序设计语言解决实际工程问题的能力.为此,在课程内容设计时,面向对象的程序设计课程不再是简单地围绕语言自身的语法展开,而是以传授面向对象的编程思想为主线,通过系统地学习面向对象的编程思想,从而掌握面向对象软件工程理论和实践,这也为后续软件工程相关课程的教学奠定基础[1].经过多轮的课程调研和培养方案改革,最终制定的课程体系如图1所示.

作为一门面向对象程序设计课程,学生首先应该具备基本的程序设计知识.本门课程以C++作为授课语言,课程开设在本科一年级第二学期,学生在第一学期已经学习了C/C++结构化编程基础知识,因此本学期以C++作为面向对象的编程语言是非常适合的[2],不需要额外地补充结构化编程知识.课程开篇的“认识对象”并不讲授语言本身,而是介绍面向对象的编程思想,介绍什么是类、什么是对象,为什么要封装类等基本的面向对象思想.这样让学生从第一学期程序设计课程中转变过来,学生不再把这门课程作为结构化程序设计课程的延续,而是作为学习软件工程思想的开始.

后面的主体内容就是系统地介绍面向对象编程的各个核心概念,包括类的封装、继承、多态和异常处理等主线概念和C++编程实现;而模板的内容作为另一种封装方法,体现了泛型编程思想,可以根据学时的多少调整相应的内容.第8章以C++中流库的使用为背景,介绍如何高效地使用C++类库,从而极大地提高编程效率.第9章介绍一些图形化编程的思想和实践,对于C++而言,以QT或MFC图形框架为例进行简单的讲解.通过这些内容的教学,学生基本上掌握了编写一个软件系统所应具备的编程能力和技巧,能独立完成一个简单的业务系统.当然,我们根据课程学时的情况,调整课程内容,如果课时足够,模板、GUI编程内容可以适当增加,这些都是比较实用的编程技能.

2项目式实践体系设计

上机实践是程序设计课程最重要的环节,程序一定要在实践中掌握和应用.因此如何设计好实践内容是确保完成教学目标的重要保障.在确保覆盖课程知识点的同时如何充分体现工程化思想,让学生在实践中掌握面向对象编程思想,这是课程实践体系改革所关注的重点.

以往的程序设计课程大多是按照每个知识点设计专门的编程练习,这可以有效地确保知识点的覆盖,但面向对象的程序设计不仅仅是要掌握简单的一个知识点,比如让学生学会写一个类,并使用类的对象,这个单一的知识点很好掌握.但更重要的是要让学生理解为什么要封装成为一个类,封装这个类的好处是什么.封装为类的目的是为了以后更方便的使用,并为后续的继承和多态奠定基础.为了达到这个目标,就必须让学生在后续的实践中继续使用这个类,并基于这些类来搭建目标系统.因此整个实践体系应该建立在一个完整的项目基础之上,通过多次实践完成一个大项目;每次实践都是在上一次成果之上继续封装和扩展,最终形成一个有一定功能的软件项目.通过这样系统化的项目式实践,从而让学生充分理解软件工程思想,达成教学目标[3, 4].

整个课程上机实践过程由易到难,穿插在课程教学过程中,配合课程知识点,围绕一个完整的项目,设计了多个上机实践内容,并最终构建出目标项目.在这个过程中,每次实践都是以前一次实践内容为基础,让学生充分理解面向对象程序设计中的各类原理和机制的应用.具体的课程案例会根据使用情况定期进行更新.

以下以近几个学年实践课程使用的学生选课系统为例,说明具体的实践内容安排.这个项目本身背景与学生紧密相关,对于低年级本科生来说难度合适,也不需要太多的业务知识.图2给出了体现系统最终结构的类图(只包含了一些重要的属性和方法),图涉及的7个类,通过8次上机实验课程完成.具体的实践内容如下.

(1)运用类封装机制,设计并实现日期类(Date),包括判断闰年、求下一天等功能实现;

(2)使用类对象,封装新的学生类(Student),并复用日期类作为学生的生日(birthDate);

(3)封装课程类(Course),实现基本的学生选课功能,同时为已完成的三个类实现运算符重载;

(4)运用类的继承,为课程类添加必修课(Obligatory Course)和选修课(Elective Course)两个子类,实现学生选必修课和选修课的功能;

(5)运用多态机制,完成学生选课、登记课程成绩、查询课程成绩等功能;

(6)为选课系统添加异常处理机制(MyException);

(7)运用流技术,将学生选课信息、成绩信息等存储到文件;

(8)封装界面类(Console),实现基本的用户交互过程;可进一步结合图形界面技术,实现复杂的图形界面.

通过一个学期的课程学习和实践,每个学生都可以自主完成这样一个有一定规模的学生选课系统,这对学生来说就是软件开发的第一次实践经历.很多学生在大四的求职简历上写的自己完成的第一个软件项目就是本课程的实践内容,这也是对整个课程实践内容的认可.

3方案实施和效果分析

笔者自2004年开始,就为北京航空航天大学软件学院本科一年级学生讲授C++程序设计方面的课程,课程名称从最早的“C++程序设计”,到后来的“高级语言程序设计(2)”,再到目前正式命名的“面向对象的程序设计”;经过多年的课程建设,课程体系和内容不断改进和完善,并最终形成了现有的课程框架、主体内容和实践体系.在多年的教学实践中,课程内容和教学效果也得到了学生们的广泛认可.为了客观地评价目前课程改革的实际教学效果,自2014年开始,我们在每学期授课结束后均开展了完全匿名的教学效果问卷调查,整个问卷调查内容分为4个部分,共计14个问题,下面详细介绍2014—2016这3年的调查结果.

3.1面向对象概念的理解情况

首先是对面向对象概念的总体理解,包括两个问题,调查结果如表1所示.调查表涉及3年的数据,调查对象全部为上课的学生,其中2014年81人参与调查,2015年80人,2016年71人,3年总计232人参与调查(下同).表中详细给出了各个问题选项的人数和百分比,并计算了3年的总体百分比情况.

从表中可以看出,有将近一半(42.67%)的学生表示完全理解了面向对象的编程思想,基本理解的学生占53.88%.这表明通过课程学习,绝大部分学生(96.55%)都能够顺利掌握面向对象的编程思想.而在对面向对象封装、继承和多态这三个最核心概念的理解上,有一半的学生(52.59%)选择了封装,这是面向对象里最基础也是最重要的一个概念,学生的选择结果也符合预期.

3.2核心知识点掌握情况

问卷调查的第2部分是针对面向对象各个具体知识点的调查,包括6个问题,调查结果如表2所示.包括封装、继承、多态、模板和异常处理5个核心知识点,以及对“封装”这个最基础知识点的进一步调查问题.

从表2中可以看出,超过90%的学生至少基本理解了各个知识点(不理解比例少于10%).而相对来说,模板这个知识点掌握程度不是很好,有13.79%的学生表示没有理解C++中的模板,这也是在预料之中,由于课时紧张,模板只有3个学时,而且没有安排单独的实践学时,在课程教学大纲设计时,此部分内容只作为介绍性的章节,不作深入要求.

3.3上机实践方式和效果

第3部分是针对上机实践方式和效果的调查,包括3个问题,从实践难度、递增式实践方式和教学效果这3个方面展开.调查结果如表3所示.

从表3中可以看出,首先从难度上来说学生们普遍认可题目的难度,实践题目设计符合当前的学生水平.而对于这种递增式实践方式,得到了绝大部分学生(96.55%)的认可.从实践效果来说,在全部调查对象中,只有1个学生不认可这种递增式的项目实践方式有助于加深理解面向对象编程思想,近90%的学生认为有很大的帮助.

3.4程序设计语言应用情况

最后一部分是针对C++语言和其他语言应用情况调查,这部分是延伸的调查,主要是了解学生对于编程语言的学习情况和后续计划,对后续的课程改革有借鉴意义.调查结果如表4所示.需要注意的是,最后两个问题是多选题,给学生提供了多个选项,学生可以根据自己的情况选择多项,表4中只给出了学生选择最多的4个语言的情况.

从表4中可以看出,大部分学生(78.45%)还是比较认可C++语言,并表示会继续学习和使用该语言;而对于其他语言,被学生广泛认可的语言包括Ja、C#、Python和JaScript,其中Ja语言是认可度最高的,这也符合目前编程语言的实际使用情况.

3.5文字意见和建议

除了标准的问卷调查内容外,部分学生在问卷的最后对课程的教学效果给出了高度评价,一些比较有针对性的评价如下:①OOP的好用之处、具体的设计,还是得通过一段时间的编程才能感受到,在我们都这么菜的情况下,老师的教学实在是相当棒了!②这门课让我对C++从上学期的排斥渐渐对它感兴趣,喜欢上了编程.③课讲授得很好,让我对面向对象编程有了一个较好的理解,对于我学习Ja非常有帮助.

当然,也有个别学生提出了一些改进的建议,这些都为以后的课程内容改革提供了思路:①希望加强设计的程序丰富度,提高各种功能种类,或者提供其他工程的设计思路作为额外作业.②可以设计一项大作业,期末提交,代替笔试的最后一道题,我认为这样更有利于大家从整体上对程序的设计和编写有一个好的思考和理解.

4结?语

程序设计语言是软件工程师必备的基本技能,只有有效地掌握编程技能和所体现的编程思维,才能更好地理解软件工程.为此,抛弃传统低年级程序设计课程侧重于语法教学,而将重点转向传授和灌输面向对象编程思想,让学生尽早接触和理解软件工程,在大一就能够通过一门程序设计课程完成一个相对完整的项目实践,从而为学生以后的软件工程专业课程学习和实践奠定了坚实的基础.

教学效果的好坏,最直接的评价来自于学生的认可,通过多轮的匿名问卷调查收集到学生真实的评价信息,评价结果有效地说明课程改革方案和实践体系得到了学生普遍认可,达到了预期的效果.

程序设计论文参考资料:

毕业论文设计

毕业设计日志

毕业设计

设计投稿

机械设计和制造期刊

毕业设计说明书

上文汇总,该文是适合不知如何写软件工程思想和课程改革和面向对象方面的程序设计专业大学硕士和本科毕业论文以及关于程序设计论文开题报告范文和相关职称论文写作参考文献资料。

和你相关的