基于案例的教学模式在C++程序设计语言教学中的应用

2020-08-07 14:43张广梅朱红梅
现代计算机 2020年18期
关键词:面向对象程序设计对象

张广梅,朱红梅

(山东农业大学信息科学与工程学院,泰安271018)

0 引言

世界编程语言排行榜TIOBE[1]是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube 统计常用的程序设计语言的排名数据。根据TIOBE[2]公布的数据,C++程序设计语言多年来居于榜单的前三位。

C++程序设计语言是一种面向对象的程序设计语言。相对于结构化的程序设计语言C 语而言,C++程序设计语言具有较强的抽象性[3-4],语言的这一特性,导致学生在学习过程中存在着难以入门的情况。针对这一问题,在教学过程中,需要从面向对象程序分析方法的教学入手,强化面向对象程序设计的基本概念的介绍;在充分介绍面向对象程序设计方法特点的基础上,再用C++语法来解释面向对象程序设计中的基本概念,循序渐进,解决C++程序设计语言的入门问题。之后通过案例教学,加强学生对程序设计语言的语法规则的认识,最终使得学生掌握这门语言,达到能用熟练使用该语言进行编程的能力。为更好地向学生渗透面向对象的基本概念,使学生能更好的从结构化程序设计思想过渡到面向对象的程序设计思想,需要加强教学过程中教学案例的设计,通过这些案例,自然而然的将面向对象的各要素融入到课程教学中。下面从面向对象程序设计基本概念教学入手,对C++程序设计语言的教学案例的设计进行探讨。

1 基于面向对象技术的基本概念设计教学案例

传统的C++程序设计语言的教学方法是以语法介绍为主,教学内容的组织围绕着C++程序设计语言的语法特点展开教学内容。从以往的教学过程来看,这种教学模式没有突出面向对象分析的过程,脱离了面向对象方法的本质,学生不能对面向对象方法有着全面系统的认识,不能很好的完成教学目标。为提升教学效果,要摒弃传统的以语法为主的教学方法,强化教学案例的设计,从现实案例出发,以案例分析为主,在案例的分析中,逐渐渗透面向对象的基本概念。

面向对象的程序设计方法是当前的主流程序设计方法。面向对象程序设计方法的特点是从现实世界出发分析问题从而自然的解决问题。现实世界是由对象组成,因此面向对象程序设计的关键是完成对象的设计。在面向对象应用程序设计中,对象是通过类实例化得到的,由此,自然的引出面向对象程序设计中类的概念。

在面向对象的应用程序中,对象和类之间的关系是具体和抽象之间的关系。类型是对具有相同属性和行为的对象的抽象,对象是对类的实例化。因此,在面向对象应用程序开发中,首先要进行类的设计,有了类之后,再由类生成对象。因此在对类这一基本概念的教学案例设计中,可以从一个简单、直观的对象出发,通过对这一对象的分析,抽象出类的基本要素,完成类的设计。

为阐述类和对象的概念,可以从平面上的点这一对象着手,进行面向对象系统中基本概念的介绍。对于平面上的一个点,是通过其在坐标系中的位置体现出来的,即对于平面上的每个点而言,都有其相应的横坐标和纵坐标值,可以将这两个值定义为点对象的数据成员。基于这样的特点,完成如下类的设计(案例1)。案例1 Pont 类的设计

通过这一案例的设计,完成了类和对象的概念的介绍及类定义的相关C++语法的介绍,可以让学生对抽象的概念有更直观的认识,初步建立面向对象分析与设计的理念。

2 从简到繁,强化面向对象的基本概念

上一节中,通过Point 类的设计,直观的介绍了类和对象的基本概念。在现实世界中,对象之间存在着包含关系,即,一个对象可以由其他对象组成。例如,要刻画平面上的一条线段,只需要定义好线段的起点和终点,即可确定平面上的一条线段;要表示平面上的一个三角形,只要定义好平面上的三个顶点即可完成,即一个三角形是由三个点组成。基于现实世界的这种特点,在面向对象程序设计过程中,可以采用类的组合技术很好的将现实世界的这一特色体现出来。为使学生更好地理解面向对象技术的这一机制,在教学案例的设计中,可以在Point 类的基础上,设计一个三角形类,结合这一教学案例进行类的组合技术的介绍。

根据几何学的原理,不再一条直线上的三个顶点可以确定一个三角形,对于要设计的三角形类而言,该类包含三个数据成员,分别表示三角形的三个顶点。对三角形这一对象而言,基本的操作的计算周长和面积,因此可以将这种操作封装成类的成员函数。基于上述分析,设计如下的三角形类(案例2)。

案例2 Triangle 类的设计

在这一教学案例的设计中,一方面,进一步强化了面向对象分析的基本方法,同时,在类中进行了对象成员的封装,将现实世界中对象的构造的这一特点出来,结合着具体的实例,将面向对象分析与设计方法更直观地传达给学生,使抽象的概念更容易被理解和接受。

3 从易到难,在教学案例中融入更多面向对象要素

C++程序设计语言的核心是进行类的设计中相关语法要素的介绍。对于初次接触C++语言的学生而言,准确的理解和运用每一个语法要素都是一个不小的挑战。在C++语言中,非常重要的一个内容是运算符的重载机制。通过运算符的重载,可以采用常规的运算符完成自定义数据类型的一些操作。

对第二节案例中提到的三角形对象而言,在三角形对象的使用过程中,可以对两个三角形对象的面积大小进行比较。在通常进行的比较操作中,普遍采用关系运算符完成比较操作。但对于自定义类型而言,要使得基于这些类型的对象完成比较操作,必须进行运算符的重载。以此为实例,自然而然的引出运算符重载的概念,使得抽象的概念变的更直观,更容易被理解和接受。

在引入运算符重载概念的基础上,对初学者而言,接下来的难点在于函数接口的设计。根据运算符的重载要求,在进行运算重载的过程中,不能改变运算符的语义。由于关系运算符是一个二元运算符,运算结果是布尔值,因此,可以借助于关系运算的这一语义特点确定重载函数的接口。

对于大部分运算符而言,可以以成员函数或友元函数两种方式进行重载。这两种重载方式的区别在于形参个数的不同。在以成员函数重载的过程中,只需要一个形式参数(调用该函数的对象作为运算符的第一个操作数,形参作为运算符的第二操作数);在以友元函数重载的过程中需设置两个形参(第一个形参作为运算符的第一个操作数,第二个形参作为运算符的第二个操作数)。结合C++的语法特点,可以设计如下的案例。

案例3 支持运算符重载的Triangle 类的设计

在上面的实例中,分别采用了成员函数和友元函数的形式分别对大于运算符和大于等于运算符进行了重载。通过这个案例,将运算符重载这一抽象的概念以更直观的方式进行介绍,进一步强化学生对抽象数据类型的认识。

4 结语

上面三节通过三个案例的设计,采用由浅入深,由简到繁的方式,逐步地将面向对象中的基本知识以及相关的语法特点进行了介绍。相比较单纯的介绍语法特点而言,通过这些案例的设计,可以很好地将抽象的语法特点通过日常生活中所接触的直观的实例进行展示,可以使学生更容易得理解和掌握面向对象程序设计中各种抽象的概念。

面向对象程序设计中除了涉及到类和对象、类的组合、运算符的重载等知识点,还包括继承和派生、虚函数和多态的抽象且复杂的概念,在相关知识的接受过程中,可以参考前面几节中关于教学案例的设计理念,将抽象的知识通过直观的实例进行阐述,可以更好地丰富教学内容,提高课堂教学的效果。

猜你喜欢
面向对象程序设计对象
GEE平台下利用物候特征进行面向对象的水稻种植分布提取
基于深度学习与融合地形特征的黄土陷穴面向对象提取方法
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
晒晒全国优秀县委书记拟推荐对象
医学专业“Python程序设计”课程教学改革总结与思考
攻略对象的心思好难猜
图说车事
基于Web的科研项目管理系统的设计与实现