91学术服务平台

您好,欢迎来到91学术官网!业务合作:91xueshu@sina.com,站长邮箱:91xszz@sina.com

发布论文

论文咨询

面向对象教学中多态性概念的应用价值

  2021-05-15    78  上传者:管理员

摘要:多态性是面向对象程序设计的四大特征之一,是课程教学的重点和难点。对多态性概念内涵进行深刻辨析,有助于更好地理解面向对象中功能多样化的实现机制。本文从多态性概念中消息的理解出发,通过实例说明了消息和函数参数、数据的不同,指出多态性描述中的消息是指函数调用、而非通常所理解的函数参数、返回值等信息载体,从而更为科学地理解多态性的内在含义和多态的实现原理,为教学质量和学习效果的提高奠定重要的基础。

  • 关键词:
  • 多态性
  • 概念辨析
  • 继承
  • 课程教学
  • 面向对象
  • 加入收藏

1、引言


由于面向对象课程的方法论和抽象性特点,课程教学往往以阐述面向对象程序设计的基本思想和实现机制为中心,以培养和提高学生使用面向对象方法分析和求解问题的能力为目标,并未着重强调程序语法和编程技术的掌握,因而课程知识点的学习往往较为枯燥和难懂。其中,多态性是面向对象的四大特征之一,是面向对象课程教学的重点。由于多态性概念表述的多样化特点,因而往往也是课程教学的难点之一。

文献中已有大量关于多态性的研究。典型工作如刘变莲通过例子对抽象的静态和动态多态概念进行探讨[1];周建儒对单继承情况下C++和Java编程语言的动态绑定机制进行讨论[2];赵学武对多态性的概念、分类和应用条件进行阐述[3],并举例对多态性的应用进行分析;周佳明等对多态性在面向对象程序设计过程中的作用进行论述[4];李涛等将模板案例应用于多态性与虚函数的教学过程中[5],对学生深入理解面向对象多态性思想的模式进行探索。对多种形式描述的多态性概念进行对比学习与准确辨析,是深刻理解多态性相关知识点的必要基础。然而相关工作报道较少,因而本文通过概念理解和实例说明进行讨论。


2、多态性概念辨析


2.1 多态性定义

在不同程序语言、不同作者编著的书籍中,给出了很多多态性概念的描述,最常见的有两种:

第一种:多态是指“一个接口,多种形态(实现)”。

第二种:多态是指对象根据所接受的消息而做出动作,同样的消息为不同的对象接受时可导致完全不同的行为。该现象称为“多态性”。

2.2 多态的实现

多态的实现主要包括函数重载和函数重写(覆盖)两种方式,如图1所示。

函数重载通过形参列表区分程序所要调用的各个函数,从而实现编译时的多态,即静态多态。而函数重写(或覆盖)产生与继承结构,无法从形参列表区分程序所要调用的函数,只能在程序运行时通过判断对象的类型来确定所调用的函数,即运行时(动态)多态。

2.3 概念辨析

在第一种表述中,鉴于程序设计中的接口泛指函数,因而多态较为容易地可以理解为:用一个相同的函数名称定义许多不同的函数。这些函数可以有多种不同的形态(即不同的实现),具体表现为同名函数可以有不同的参数列表,也可以有相同的参数列表(需要通过继承结构实现),从而实现相同或相似的功能。

相对于多态性的第一种描述方式,第二种描述方式在概念理解上较为困难。其中,对于“消息”,很多教材中很少进行阐述或说明,更未讲深和讲透,从而加大了准确理解多态性概念的难度。

以图2所示的动物继承结构为例。每种动物(Animal)都有其运动的方式,表示在运动的函数run(…)中,参数time意味着让该动物运动多少时间。

当发送命令或消息给不同的动物时,例如:“运动30秒(time=30)”,不同的动物有不同的行为,鸟是飞翔、老虎是奔跑、青蛙是跳跃,这点不难理解。然而,以图3所示的青蛙为例,让青蛙跳跃30秒时,发送给青蛙的消息是为“30秒?”,而青蛙返回的信息是否非“跳跃?”

鉴于维基百科对计算机科学中“消息”的两种释义,一种是由电脑系统本身发送而属于其人类用户之间的消息;另一种是为特定目的在不同计算机程序之间或一支程序的不同组件之间互相发送的消息[6]。

而在通信领域,消息是指通信系统传输的对象,是信息的载体。它通过语言、文字、图像和数据等不同形式具体描述。

另一方面,人们常识中所理解的消息,往往就是程序设计中描述信息的函数参数,包括函数执行时的形\实参和函数返回值。

虽然,如此理解多态性概念中的“消息”没有本质的问题,也很符合常识。因为,不同的对象接受到相同的消息(形\实参相同),而不同对象的函数功能可能不同,因而可能导致完全不同的行为。然而,如若消息就是指函数参数(如图3例子中“30秒”、“跳跃”),则没有形参和返回值的函数,是不是就不发生消息的传递?是不是就实现不了多态呢?不同的函数参数(如time=30或time=100)被不同的对象接受,是不是就是指不同的消息、不是多态?答案显然是否定的。可见,多态性概念中的“消息”并非函数的形\实参和返回值。

2.4 消息的内涵

多态第二种描述中的消息,其实意指“函数的调用”,表述的是功能事件的发生。因而相同的消息即为“同名函数的调用”。那么,概念中所述的“根据所接受的消息而做出动作”,即为根据所接受的函数调用而接受动作;而“同样的消息为不同的对象接受时”,即为调用不同对象的同名函数。如此理解,则多态性的含义,就比较明了。

不管是静态多态,还是动态多态,都是要通过同名函数的调用。

静态多态是通过同名函数的不同形参列表区分所要调用的具体是哪个函数。

而动态多态是通过调用不同实体内的同名函数实现的。

消息是指函数调用,而同样的消息就是指同名函数的调用。以图2所示的动物继承结构为例,不同动物运动形式的多态性,并不在于函数参数传递的参数(time)值相同,而是指调用了相同的函数run(…)。


3、多态性的实现机制


在准确辨析多态性描述中“消息”的内涵后,有助于更好地理解面向对象中动态多态的思想和实现机制。

以图4为例,指针\引用p指向的是动物对象,在调用程序中调用函数run(…)时,多态的实现是因为p可指向父类动物Animal,或子类动物(Bird,Tiger,From),并调用其中的run(…)函数。同样的消息(同名函数调用)具体调用的是什么动物中的run(…),主要由指针\引用p实现的指向确定。当p指向谁,即调用谁的run(…)函数,因而实现了“同样的消息为不同的对象接受时可导致完全不同的行为”的多态性。

上述的消息内涵和多态实现机制,确保调用程序清晰明了地知道“可能具有的函数参数(如time=30),要发送到哪里”的同时,函数的返回值自然而然地返回给调用程序并保存在rs中,从而让程序的数据流转更加清晰明了。


4、结论


针对多态性概念的两种典型描述,通过实例的方式对概念中提及的术语“消息”进行研究,指出多态性描述中的消息是指函数调用、而非通常所理解的函数参数、返回值等信息载体,从而为人们更好地理解多态性的概念、思想和实现机制,为面向对象程序设计教学质量的提高和学习效果的提升,奠定了一定的理论基础。


参考文献:

[1]刘变莲.面向对象程序设计中多态性探讨.电脑知识与技术,2017,13(10):60-61,70

[2]周建儒.基于单继承的“动态多态性”的分析与应用.信息技术,2014(03):162-164

[3]赵学武.面向对象程序设计中的多态性.电脑知识与技术,2014,10(21):5036-5039

[4]周佳明,陈俊杰.面向对象程序设计中多态性探讨.数码世界,2020(01):63

[5]李涛,任廷艳,罗刚,等.模板方法模式在c++多态性教学中的运用.现代计算机,2019(33):69-72

[6]消息(维基百科).


文章出处:林甲祥,陈宏方,刘雄恩,王雪平.面向对象教学中多态性概念辨析[J].福建电脑,2021,37(05):75-77.

分享:

91学术论文范文

相关论文

推荐期刊

网友评论

加载更多

我要评论

学园

期刊名称:学园

期刊人气:1074

期刊详情

主管单位:云南出版集团有限责任公司

主办单位:云南出版传媒(集团)有限责任公司

出版地方:云南

专业分类:教育

国际刊号:1674-4810

国内刊号:53-1203/C

邮发代号:64-53

创刊时间:2008年

发行周期:旬刊

期刊开本:大16开

见刊时间:4-6个月

论文导航

查看更多

相关期刊

热门论文

【91学术】(www.91xueshu.com)属于综合性学术交流平台,信息来自源互联网共享,如有版权协议请告知删除,ICP备案:冀ICP备19018493号

400-069-1609

微信咨询

返回顶部

发布论文

上传文件

发布论文

上传文件

发布论文

您的论文已提交,我们会尽快联系您,请耐心等待!

知 道 了

登录

点击换一张
点击换一张
已经有账号?立即登录
已经有账号?立即登录

找回密码

找回密码

你的密码已发送到您的邮箱,请查看!

确 定