完全面向对象项目式《C++程序设计》课程改革与创新

2014-07-03 04:53李广松
电脑知识与技术 2014年12期
关键词:项目式程序设计课程改革

李广松

摘要:《C++程序设计》是计算机类专业的一门重要专业基础课。传统的教学内容中面向对象和面向过程分离,侧重于面向过程,传统的教学方法侧重于案例法,知识点分散。针对教学内容,提出“完全面向对象 (Absoluteness Object Oriented Programming,简称AOOP) C++”,将面向过程融入面向对象,针对教学方法,提出“完全项目式(Absoluteness Project,简称AP)C++”,将知识点融入到面向对象项目中。

关键词:完全面向对象;项目式;C++程序设计;课程改革

中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2014)12-2781-04

"C++ Program Design" Curriculum Reform and innovation of Absoluteness Object Oriented Programming and Absoluteness Project

LI Guang-song

(Department of Information Engineering, Guangdong Polytechnic, Foshan 528041, China)

Abstract: "C++ Program Design" is an important professional basic course of computer specialty. In the traditional teaching content, it is focusing on the process-oriented, and object-oriented is separated from process-oriented. In the traditional teaching methods, it is focusing on case law, and knowledge points are dispersion. According to the teaching content, it puts forward the "object oriented (Absoluteness Object Oriented Programming, referred to as AOOP) C++", and puts the process-oriented into object-oriented. According to the teaching method, it puts forward the "complete project (Absoluteness Project, referred to as AP) C++", and puts the knowledge points into the object-oriented projects.

Key words: absoluteness object oriented programming; absoluteness project; C++ Program Design; curriculum reform

根据计算机专业的人才培养方案,《C++程序设计》的培养目标是“认识面向对象设计的过程和特点,掌握面向对象的基础知识,具有面向对象程序的编写能力”。根据培养目标,在《C++程序设计》的教学的实施过程中,要求教学内容的选取和教学方法的选用,都必须针对面向对象的知识。由于C++和C语言的特殊性,C++是兼容C的,《C++程序设计》课程内容的前半部分是面向过程的,所以传统的教学内容选取是先讲面向过程的知识,再讲面向对象的三个特性(封装性、继承性和多态性),相应,传统的教学方法沿用《C语言程序设计》的案例教学法。对《C++程序设计》课程改革,存在选择教学内容和改革教学手段的[1],用任务驱动引入知识点的[2],但是都没有从根本上解决存在的问题。为此,必须找到一种适合课程特点和学生学习特点的切入点,改革课程思路理念与教学方法,使学生在课程内容的学习上侧重于面向对象,侧重于知识点的融合与应用。

针对改革课程内容,该文提出了提出“完全面向对象(AOOP) C++”,使C++教学从一开始就贯穿面向对象的概念,避免面向过程成为思维定势;针对改革教学方法,该文提出了 “完全项目式(AP)C++”,使C++的教学活动成为共同实施一个完整的项目而进行的教学活动,将课程的知识点融入项目中,避免教学知识点分散性和内容整体性的矛盾。

1 C++课程教学的现状和存在的问题

1.1 C++课程教学的现状

C++程序设计语言是由C程序设计语言发展而来,C语言内容比较全面,对算法的要求也比较高,使用C语言的程序设计思路是面向过程。“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。C++中算法大大削减,语法大大增加,使用C++语言的程序设计思路是面向对象。“面向对象”(Object Oriented,简称OO)是一种以事物为中心的编程思想,面向对象是当前编程的主流思想,在编程序的时候关心的是某一个事件。

C++程序设计教学内容应该是针对面向对象程序设计,由于C++语言的历史渊源,C++程序设计的教材和教学资料,包括清华大学谭浩强教授的《C++程序设计》教材[3],都是前半部分是面向过程,后半部分是面向对象,而且面向对象的知识只有三章,即:类的封装性、类的继承性、类的多态性。根据这样的教学内容安排,大部分教师采用了先讲面向过程的知识,再讲面向对象的知识,而且面向过程的教学占了大部分教学课时;对C++程序设计的教学方法,大部分老师采用了案例教学法,一个案例对应一个知识点,而每一个知识点只是针对一个特定的语法或结构,每一个这样的案例就是一个面向过程的思想,案例教学法本身没有问题,但是案例的设计没有体现面向对象的程序设计思想。endprint

1.2 C++课程教学存在的问题

经典的C++教学存在以下问题:

1) C++是从面向过程的C语言发展而来的,并非是面向过程的语言,面向过程和面向对象教学分离,不利学生掌握先进的面向对象程序设计思想。

2) 面向对象的C++语法较复杂,教学过程往往陷入语法教学,面向对象成了语法现象。只能削弱更为重要的面向对象程序设计应用的教学。

3) C++程序设计里面的案例,单纯的针对某一个知识点,没有融入到面向对象的主体思想中,造成知识点掌握了,但是在面向对象中如何使用却成了难题。

4) 教学内容中面向过程与面向对象分离,面向过程一旦成为思维定势,很难再从根本上理解面向对象的设计理念。

2 传统OOP与AOOP教学内容设计

2.1 传统OOP与C++程序教学设计

传统C++教学是面向过程和面向对象混合在一起的,从图1可以看出,面向过程的八个子模块(数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O)的教学过程占了相当大一部分的教学课时,而这些都是为后面的面向对象教学打基础,当面向过程编程思想成为了学生思考的方式,又要转化为面向对象的思维模式,一般的学生很难适应,也就很难从根本上理解面向对象的本质,而面向对象思想才是学生毕业后从事工作所需要的。

2.2 AOOP与C++程序教学设计

针对传统教学设计的不足,该文提出“AOOP”教学设计体念。从图2可以看出,在完全面向对象C++设计中,把传统面向过程的八个子模块(数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O)的内容嵌入到面向对象的封装性模块当中,而这些模块内容在面向对象的继承性和多态性模块中又交叉使用,使学生刚开始就接触的是面向对象的知识,头脑中没有面向过程的思路,也就杜绝了面向过程思维对面向对象思维的影响。

3 传统案例教学与完全项目式教学设计

3.1 传统案例教学与C++程序教学设计

C++传统的案例教学法,如图3,存在不足之处,一是目标不明确,案例没有完全围绕面向对象展开,与《C++程序设计》的培养目标不符。二是案例对应的基础知识点分散,基本上一个案例对应一个知识点,缺少综合性。三是案例缺乏系统性和连贯性,课程前面案例里面的知识点,可能在课程最后的面向对象综合案例里才能用到。

从图3可以看出,数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O、封装性、继承性、多态性都要有相当的案例与之对应,才能完全覆盖其中包含的知识点,而这些案例之间又不存在内在联系,相互之间孤立分散,但是知识点之间又存在阶梯性递进的关系。在C++程序设计中使用案例教学法,很多学生即使学会了每一个案例,仍然会不知所措,经常会问“这个案例有什么用”。

3.2 AP与C++程序教学设计

针对传统案例教学设计的不足,该文提出完全项目式C++设计。完全项目式C++设计,是在实施C++教学中设计一个面向对象的教学项目,根据教学学时的多少,把这个教学项目划分成若干个子项目,每个子项目包含若干个知识点,面向对象子项目的需求决定这些知识点的嵌入与否。完全项目式C++设计以完整的项目为目标,目标明确,子项目功能紧凑,有助于提高学生的面向对象的分析研究能力和动手操作技能。

教学项目的设计,需要涵盖现有的教学内容,不能出现知识点的遗漏。对于遗漏的知识点,要变通的加入到教学项目中。教学项目细分为若干个子项目,如图4所示,教学项目是最终目标,子项目是一次或几次课程要完成的内容,每个子项目以任务单的形式派发给学生,这样可以做到学生每次课都目标明确,思路清晰。把类的封装性、继承性、多态性嵌入到子项目的规划和定义当中,数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O嵌入到任务单中去,既能完全覆盖知识点,知识点的学习之间又环环相扣。

4 基于AOOP和AP的《C++程序设计》课程体系整体设计

基于“学生成绩管理系统”,设计了基类、学生类设计、操作类设计和主程序四个子项目,每个子项目对应若干了教学任务,把课程知识点融入到每个任务中,如表1所示。

5 结束语

本文提出的AOOP与AP设计思想,应用在《C++程序设计》教学过程中可以使学生在完成教学项目的每个子项目中,掌握对应的知识点。通过AOOP可以提高学生对面向对象的理解和掌握,通过AP可以提高学生面向对象程序的编写能力,符合人才培养方案的培养目标,为就业、择业、创业的职业能力奠定良好的面向对象设计的基础。

参考文献:

[1] 王天顺,甄姬娜,王丽娟. C++程序设计教学改革探索与实践[J].电脑知识与技术,2012(12):2833-2834.

[2] 戎小群. 《C++程序设计》项目课程的设计与实施的研究初探[J].电脑知识与技术,2011(7):1843-1844.

[3] 谭浩强.C++程序设计[M].北京:清华大学出版社,2011.endprint

1.2 C++课程教学存在的问题

经典的C++教学存在以下问题:

1) C++是从面向过程的C语言发展而来的,并非是面向过程的语言,面向过程和面向对象教学分离,不利学生掌握先进的面向对象程序设计思想。

2) 面向对象的C++语法较复杂,教学过程往往陷入语法教学,面向对象成了语法现象。只能削弱更为重要的面向对象程序设计应用的教学。

3) C++程序设计里面的案例,单纯的针对某一个知识点,没有融入到面向对象的主体思想中,造成知识点掌握了,但是在面向对象中如何使用却成了难题。

4) 教学内容中面向过程与面向对象分离,面向过程一旦成为思维定势,很难再从根本上理解面向对象的设计理念。

2 传统OOP与AOOP教学内容设计

2.1 传统OOP与C++程序教学设计

传统C++教学是面向过程和面向对象混合在一起的,从图1可以看出,面向过程的八个子模块(数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O)的教学过程占了相当大一部分的教学课时,而这些都是为后面的面向对象教学打基础,当面向过程编程思想成为了学生思考的方式,又要转化为面向对象的思维模式,一般的学生很难适应,也就很难从根本上理解面向对象的本质,而面向对象思想才是学生毕业后从事工作所需要的。

2.2 AOOP与C++程序教学设计

针对传统教学设计的不足,该文提出“AOOP”教学设计体念。从图2可以看出,在完全面向对象C++设计中,把传统面向过程的八个子模块(数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O)的内容嵌入到面向对象的封装性模块当中,而这些模块内容在面向对象的继承性和多态性模块中又交叉使用,使学生刚开始就接触的是面向对象的知识,头脑中没有面向过程的思路,也就杜绝了面向过程思维对面向对象思维的影响。

3 传统案例教学与完全项目式教学设计

3.1 传统案例教学与C++程序教学设计

C++传统的案例教学法,如图3,存在不足之处,一是目标不明确,案例没有完全围绕面向对象展开,与《C++程序设计》的培养目标不符。二是案例对应的基础知识点分散,基本上一个案例对应一个知识点,缺少综合性。三是案例缺乏系统性和连贯性,课程前面案例里面的知识点,可能在课程最后的面向对象综合案例里才能用到。

从图3可以看出,数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O、封装性、继承性、多态性都要有相当的案例与之对应,才能完全覆盖其中包含的知识点,而这些案例之间又不存在内在联系,相互之间孤立分散,但是知识点之间又存在阶梯性递进的关系。在C++程序设计中使用案例教学法,很多学生即使学会了每一个案例,仍然会不知所措,经常会问“这个案例有什么用”。

3.2 AP与C++程序教学设计

针对传统案例教学设计的不足,该文提出完全项目式C++设计。完全项目式C++设计,是在实施C++教学中设计一个面向对象的教学项目,根据教学学时的多少,把这个教学项目划分成若干个子项目,每个子项目包含若干个知识点,面向对象子项目的需求决定这些知识点的嵌入与否。完全项目式C++设计以完整的项目为目标,目标明确,子项目功能紧凑,有助于提高学生的面向对象的分析研究能力和动手操作技能。

教学项目的设计,需要涵盖现有的教学内容,不能出现知识点的遗漏。对于遗漏的知识点,要变通的加入到教学项目中。教学项目细分为若干个子项目,如图4所示,教学项目是最终目标,子项目是一次或几次课程要完成的内容,每个子项目以任务单的形式派发给学生,这样可以做到学生每次课都目标明确,思路清晰。把类的封装性、继承性、多态性嵌入到子项目的规划和定义当中,数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O嵌入到任务单中去,既能完全覆盖知识点,知识点的学习之间又环环相扣。

4 基于AOOP和AP的《C++程序设计》课程体系整体设计

基于“学生成绩管理系统”,设计了基类、学生类设计、操作类设计和主程序四个子项目,每个子项目对应若干了教学任务,把课程知识点融入到每个任务中,如表1所示。

5 结束语

本文提出的AOOP与AP设计思想,应用在《C++程序设计》教学过程中可以使学生在完成教学项目的每个子项目中,掌握对应的知识点。通过AOOP可以提高学生对面向对象的理解和掌握,通过AP可以提高学生面向对象程序的编写能力,符合人才培养方案的培养目标,为就业、择业、创业的职业能力奠定良好的面向对象设计的基础。

参考文献:

[1] 王天顺,甄姬娜,王丽娟. C++程序设计教学改革探索与实践[J].电脑知识与技术,2012(12):2833-2834.

[2] 戎小群. 《C++程序设计》项目课程的设计与实施的研究初探[J].电脑知识与技术,2011(7):1843-1844.

[3] 谭浩强.C++程序设计[M].北京:清华大学出版社,2011.endprint

1.2 C++课程教学存在的问题

经典的C++教学存在以下问题:

1) C++是从面向过程的C语言发展而来的,并非是面向过程的语言,面向过程和面向对象教学分离,不利学生掌握先进的面向对象程序设计思想。

2) 面向对象的C++语法较复杂,教学过程往往陷入语法教学,面向对象成了语法现象。只能削弱更为重要的面向对象程序设计应用的教学。

3) C++程序设计里面的案例,单纯的针对某一个知识点,没有融入到面向对象的主体思想中,造成知识点掌握了,但是在面向对象中如何使用却成了难题。

4) 教学内容中面向过程与面向对象分离,面向过程一旦成为思维定势,很难再从根本上理解面向对象的设计理念。

2 传统OOP与AOOP教学内容设计

2.1 传统OOP与C++程序教学设计

传统C++教学是面向过程和面向对象混合在一起的,从图1可以看出,面向过程的八个子模块(数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O)的教学过程占了相当大一部分的教学课时,而这些都是为后面的面向对象教学打基础,当面向过程编程思想成为了学生思考的方式,又要转化为面向对象的思维模式,一般的学生很难适应,也就很难从根本上理解面向对象的本质,而面向对象思想才是学生毕业后从事工作所需要的。

2.2 AOOP与C++程序教学设计

针对传统教学设计的不足,该文提出“AOOP”教学设计体念。从图2可以看出,在完全面向对象C++设计中,把传统面向过程的八个子模块(数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O)的内容嵌入到面向对象的封装性模块当中,而这些模块内容在面向对象的继承性和多态性模块中又交叉使用,使学生刚开始就接触的是面向对象的知识,头脑中没有面向过程的思路,也就杜绝了面向过程思维对面向对象思维的影响。

3 传统案例教学与完全项目式教学设计

3.1 传统案例教学与C++程序教学设计

C++传统的案例教学法,如图3,存在不足之处,一是目标不明确,案例没有完全围绕面向对象展开,与《C++程序设计》的培养目标不符。二是案例对应的基础知识点分散,基本上一个案例对应一个知识点,缺少综合性。三是案例缺乏系统性和连贯性,课程前面案例里面的知识点,可能在课程最后的面向对象综合案例里才能用到。

从图3可以看出,数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O、封装性、继承性、多态性都要有相当的案例与之对应,才能完全覆盖其中包含的知识点,而这些案例之间又不存在内在联系,相互之间孤立分散,但是知识点之间又存在阶梯性递进的关系。在C++程序设计中使用案例教学法,很多学生即使学会了每一个案例,仍然会不知所措,经常会问“这个案例有什么用”。

3.2 AP与C++程序教学设计

针对传统案例教学设计的不足,该文提出完全项目式C++设计。完全项目式C++设计,是在实施C++教学中设计一个面向对象的教学项目,根据教学学时的多少,把这个教学项目划分成若干个子项目,每个子项目包含若干个知识点,面向对象子项目的需求决定这些知识点的嵌入与否。完全项目式C++设计以完整的项目为目标,目标明确,子项目功能紧凑,有助于提高学生的面向对象的分析研究能力和动手操作技能。

教学项目的设计,需要涵盖现有的教学内容,不能出现知识点的遗漏。对于遗漏的知识点,要变通的加入到教学项目中。教学项目细分为若干个子项目,如图4所示,教学项目是最终目标,子项目是一次或几次课程要完成的内容,每个子项目以任务单的形式派发给学生,这样可以做到学生每次课都目标明确,思路清晰。把类的封装性、继承性、多态性嵌入到子项目的规划和定义当中,数据类型、表达式、控制结构、函数、数组、指针、构造数据类型、I/O嵌入到任务单中去,既能完全覆盖知识点,知识点的学习之间又环环相扣。

4 基于AOOP和AP的《C++程序设计》课程体系整体设计

基于“学生成绩管理系统”,设计了基类、学生类设计、操作类设计和主程序四个子项目,每个子项目对应若干了教学任务,把课程知识点融入到每个任务中,如表1所示。

5 结束语

本文提出的AOOP与AP设计思想,应用在《C++程序设计》教学过程中可以使学生在完成教学项目的每个子项目中,掌握对应的知识点。通过AOOP可以提高学生对面向对象的理解和掌握,通过AP可以提高学生面向对象程序的编写能力,符合人才培养方案的培养目标,为就业、择业、创业的职业能力奠定良好的面向对象设计的基础。

参考文献:

[1] 王天顺,甄姬娜,王丽娟. C++程序设计教学改革探索与实践[J].电脑知识与技术,2012(12):2833-2834.

[2] 戎小群. 《C++程序设计》项目课程的设计与实施的研究初探[J].电脑知识与技术,2011(7):1843-1844.

[3] 谭浩强.C++程序设计[M].北京:清华大学出版社,2011.endprint

猜你喜欢
项目式程序设计课程改革
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
“双创”形势下高职财务管理课程改革探索
PLC梯形图程序设计技巧及应用