面向对象技术现在已经成为计算机科学与技术中的一个重要领域,并渗透到计算机学科的很多方向。面向对象的思想方法属于计算机专业学生必须学习掌握的核心课程内容。
由于技术发展日新月异,计算机专业教学特别是教材编写已经相对滞后,面向对象程序设计课程亦不例外。ACM和IEEE/CS把计算机学科的教学归为理论、抽象、设计三个层次过程。面向对象程序设计课程是一门理论与设计(工程实践)联系很强的一门课而且计算机产业界对象技术产品近几年如雨后春笋,越来越多的工程师加入到使用这些产品的行列,这迫切要求专业教学一定要与社会需要相结合。
目前,大多面向对象程序设计教材对面向对象的概念讲述比较多,或者对算法有比较多的阐述,理论性很好。对其中的基本概念是有必要讲解清楚,但是缺乏比较恰当的联系实际程序设计,很多学生学完后对这门课程的收获仅停留在一些教条或死记硬背的术语上,不能学以致用。
面向对象程序设计课程的教学目标应该定位于掌握应用面向对象做程序设计的概念、方法,并对当前广泛使用的面向对象程序设计语言及环境有初步了解,培养程序设计的实践能力。
教学内容的改革――
选定基本核心内容,融合新技术的思想
第一,面向对象语言的选择问题。
现在很多教材是以C++为语言工具来讲授的,但C++/C不是纯面向对象的语言,而是一种过程、对象混合型语言。学生一般开始学习程序设计接触的便是面向过程的程序语言,以带有面向过程成分的语言来讲述面向对象程序设计对学生的对象思维有影响。另外一方面,用ISO标准的C++来教学与产业界Windows平台近几年广泛使用的面向对象的MFC 有差距,而且现在windows平台上的开发也正从win32的MFC/VC++全面向.Net过渡(基于.Net平台上也有纯面向对象语言C#),其变化之大就跟当初从DOS转向windows平台;也曾经使用过VC ++来作为面向对象程序设计教学的语言工具,但学生往往被集成开发环境及庞大的MFC所迷惑,本课程的学习的重点得不到保障。
因此,纯面向对象特性的java语言来作为面向对象程序设计的教学语言是很好的选择,不但java语言能较好地体现面向对象的思维方式,而且产业界在高端计算方面java语言正在更多地夺取C++的阵地,成为主流。由于java语言应用广泛,本身涉及很多的技术知识,在面向对象程序设计课程的上机实验使用java时,需要预先给学生准备好java程序设计必备的程序设计环境安装配置基础知识的材料,不让语言本身的因素成为障碍,虽然对基础好的善于自学的学生不是问题。Java语言的集成开发环境选用Sun公司的跨平台的开发工具NetBean,在本课程的网页上给出调试程序的简单例子及步骤,从学生实验来看,大多数学生能较快地使用这个工具,比以前用MS VC++的班级的实验课效果大有改进,让学生把更多注意力放在程序设计方面。
第二,选择基本的教学内容,不求内容多,重点对这些核心内容教学。可以主要选择这些内容来讲:类和对象、方法、继承、接口、事件处理、多态性与抽象类、线程、程序和包。
第三,对象概念的图形表示法选用UML. 讲到有关概念需要用图形来表示时,用业界标准的统一建模语言来表达,不但能清晰地描述概念,而且能让学生对复杂系统建模有潜移默化的影响。 UML本身也是很庞大的,在这门课程里同样不能让UML成为学习概念的障碍,而是理解概念的更好的助手,所以当讲到相关概念要用图形来表示概念时才出现UML的表示法,要让学生知道UML是面向对象思维分析的工具。在这里不过多讲述UML,不会影响课程的教学效果。实际上,尽管UML内容繁杂,往往也是80%的场合只用到了20%的UML.我们在教学时只在本课程教学用的网页上给出一个精练的可视化的UML表示法,让学生需要使用时到上面自己查找图形表示法,而不另外用专门的学时讲授UML。
教学方法的改革――
重点突破,重视实践,引入实例分析
这些内容应该作为重点让学生掌握:类与对象、分类与继承、事件处理。对象技术在各个领域应用很多,其中的概念及方法是很多的,但应该使学生把最基本的东西多花时间去学习理解。
在讲述有关概念时,让学生明白为什么要提出使用该概念或方法是很重要的,使他们清楚在什么场合应用,有不少学生会被众多的概念所迷惑,因为他们本来就很少程序设计的经验。所以针对每部分内容, 都应该准备一些实例结合相关的概念来讲授。现在的面向对象程序开发环境大多有PME(Properties, Methods, Events)模型,有几章的内容都可以联系起来让学生看一些精选的内容。还有就是框架(基础类库)技术, 也应该作为实例结合相关内容进行讲述。
有一些由编程经验丰富的技术专家写出的技术丛书,里面有不少经典易懂的实例讲述,我们可以把平时在那些开发类的技术丛书中学习积累的例子引入来讲,当然科研工作中也可能积累一些对讲课很有益的东西可以转化到讲课当中。从一些开发经验丰富的著作中及自己的开发实践中提取的恰当例子,对学生的学习很有帮助,有助于他们“现场直播式”的较快理解有关概念,并有可能通过教师设计的实例亲自动手加以实践、实现,同时也可以增强了学生学习的兴趣、积极性。
为了让学生通过实践理解所学内容,除了提供实例分析外,还向他们提供规模难度不同的大作业题目让其选做, 学得好的、学得差根据自己的掌握程度在教师指导下选做大作业。这也是教学方法的一个改革实践。
结语
本文结合作者面向对象程序设计的教学经验和软件开发实践经验, 就面向对象程序设计课程的教学内容的选择、更新,理论与实践的结合等方面提出了一些观点及措施, 有些也是教学方法的改革尝试。在软件技术发展迅猛的时代,我们这方面的课程教学也应该相应有发展,也应有更多的教学、产业界人员、学生一起来促进教学效果的改进。
面向对象技术现在已经成为计算机科学与技术中的一个重要领域,并渗透到计算机学科的很多方向。面向对象的思想方法属于计算机专业学生必须学习掌握的核心课程内容。
由于技术发展日新月异,计算机专业教学特别是教材编写已经相对滞后,面向对象程序设计课程亦不例外。ACM和IEEE/CS把计算机学科的教学归为理论、抽象、设计三个层次过程。面向对象程序设计课程是一门理论与设计(工程实践)联系很强的一门课而且计算机产业界对象技术产品近几年如雨后春笋,越来越多的工程师加入到使用这些产品的行列,这迫切要求专业教学一定要与社会需要相结合。
目前,大多面向对象程序设计教材对面向对象的概念讲述比较多,或者对算法有比较多的阐述,理论性很好。对其中的基本概念是有必要讲解清楚,但是缺乏比较恰当的联系实际程序设计,很多学生学完后对这门课程的收获仅停留在一些教条或死记硬背的术语上,不能学以致用。
面向对象程序设计课程的教学目标应该定位于掌握应用面向对象做程序设计的概念、方法,并对当前广泛使用的面向对象程序设计语言及环境有初步了解,培养程序设计的实践能力。
教学内容的改革――
选定基本核心内容,融合新技术的思想
第一,面向对象语言的选择问题。
现在很多教材是以C++为语言工具来讲授的,但C++/C不是纯面向对象的语言,而是一种过程、对象混合型语言。学生一般开始学习程序设计接触的便是面向过程的程序语言,以带有面向过程成分的语言来讲述面向对象程序设计对学生的对象思维有影响。另外一方面,用ISO标准的C++来教学与产业界Windows平台近几年广泛使用的面向对象的MFC 有差距,而且现在windows平台上的开发也正从win32的MFC/VC++全面向.Net过渡(基于.Net平台上也有纯面向对象语言C#),其变化之大就跟当初从DOS转向windows平台;也曾经使用过VC ++来作为面向对象程序设计教学的语言工具,但学生往往被集成开发环境及庞大的MFC所迷惑,本课程的学习的重点得不到保障。
因此,纯面向对象特性的java语言来作为面向对象程序设计的教学语言是很好的选择,不但java语言能较好地体现面向对象的思维方式,而且产业界在高端计算方面java语言正在更多地夺取C++的阵地,成为主流。由于java语言应用广泛,本身涉及很多的技术知识,在面向对象程序设计课程的上机实验使用java时,需要预先给学生准备好java程序设计必备的程序设计环境安装配置基础知识的材料,不让语言本身的因素成为障碍,虽然对基础好的善于自学的学生不是问题。Java语言的集成开发环境选用Sun公司的跨平台的开发工具NetBean,在本课程的网页上给出调试程序的简单例子及步骤,从学生实验来看,大多数学生能较快地使用这个工具,比以前用MS VC++的班级的实验课效果大有改进,让学生把更多注意力放在程序设计方面。
第二,选择基本的教学内容,不求内容多,重点对这些核心内容教学。可以主要选择这些内容来讲:类和对象、方法、继承、接口、事件处理、多态性与抽象类、线程、程序和包。
第三,对象概念的图形表示法选用UML. 讲到有关概念需要用图形来表示时,用业界标准的统一建模语言来表达,不但能清晰地描述概念,而且能让学生对复杂系统建模有潜移默化的影响。 UML本身也是很庞大的,在这门课程里同样不能让UML成为学习概念的障碍,而是理解概念的更好的助手,所以当讲到相关概念要用图形来表示概念时才出现UML的表示法,要让学生知道UML是面向对象思维分析的工具。在这里不过多讲述UML,不会影响课程的教学效果。实际上,尽管UML内容繁杂,往往也是80%的场合只用到了20%的UML.我们在教学时只在本课程教学用的网页上给出一个精练的可视化的UML表示法,让学生需要使用时到上面自己查找图形表示法,而不另外用专门的学时讲授UML。
教学方法的改革――
重点突破,重视实践,引入实例分析
这些内容应该作为重点让学生掌握:类与对象、分类与继承、事件处理。对象技术在各个领域应用很多,其中的概念及方法是很多的,但应该使学生把最基本的东西多花时间去学习理解。
在讲述有关概念时,让学生明白为什么要提出使用该概念或方法是很重要的,使他们清楚在什么场合应用,有不少学生会被众多的概念所迷惑,因为他们本来就很少程序设计的经验。所以针对每部分内容, 都应该准备一些实例结合相关的概念来讲授。现在的面向对象程序开发环境大多有PME(Properties, Methods, Events)模型,有几章的内容都可以联系起来让学生看一些精选的内容。还有就是框架(基础类库)技术, 也应该作为实例结合相关内容进行讲述。
有一些由编程经验丰富的技术专家写出的技术丛书,里面有不少经典易懂的实例讲述,我们可以把平时在那些开发类的技术丛书中学习积累的例子引入来讲,当然科研工作中也可能积累一些对讲课很有益的东西可以转化到讲课当中。从一些开发经验丰富的著作中及自己的开发实践中提取的恰当例子,对学生的学习很有帮助,有助于他们“现场直播式”的较快理解有关概念,并有可能通过教师设计的实例亲自动手加以实践、实现,同时也可以增强了学生学习的兴趣、积极性。
为了让学生通过实践理解所学内容,除了提供实例分析外,还向他们提供规模难度不同的大作业题目让其选做, 学得好的、学得差根据自己的掌握程度在教师指导下选做大作业。这也是教学方法的一个改革实践。
结语
本文结合作者面向对象程序设计的教学经验和软件开发实践经验, 就面向对象程序设计课程的教学内容的选择、更新,理论与实践的结合等方面提出了一些观点及措施, 有些也是教学方法的改革尝试。在软件技术发展迅猛的时代,我们这方面的课程教学也应该相应有发展,也应有更多的教学、产业界人员、学生一起来促进教学效果的改进。