1.3.5 多态性(Polymorphism)
对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的动作,该现象称为多态性。在面向对象的软件技术中,多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。
例如,在两个类Male(男性)和Female(女性)都有一项属性为Friend。一个人的朋友必须属于类Male或Female,这是一个多态性的情况。因为,Friend指向两个类之一的实例。如果Tom的朋友或者是Mary或者是john,类Male就不知道Friend应该与哪个类关联。这里参照量Friend必须是多态的,多态意味着可以关联不同的实例,而实例可以属于不同的类。
多态性机制不仅增加了面向对象软件系统的灵活性,进一步减少了信息冗余,而且显著地提高了软件的可重用性和可扩充性。当扩充系统功能增加新的实体类型时,只需派生出与新实体类相应的新的子类,完全无需修改原有的程序代码,甚至不需要重新编译原有的程序。利用多态性,用户能够发送一般形式的消息,而将所有的实现细节都留给接受消息的对象。
【典型例题】
(1)下列选项中不属于结构化程序设计方法的是______。
A.逐步求精 B.自顶向下 C.模块化 D.可复用
参考答案:D。
解析:20世纪70年代以来,提出了许多软件设计方法,主要有(A)逐步求精:对复杂的问题,应设计一些子目标做过渡,逐步细化。(B)自顶向下:程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。(C)模块化:一个复杂问题,肯定是由若干简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。(D)可复用:是面向对象程序设计的一个优点。
(2)结构化程序设计主要强调的是______。
A.程序的规模 B.程序的易读性
C.程序的执行效率 D.程序的可移植性
参考答案:B。
解析:结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。
(3)对建立良好的程序设计风格,下面描述正确的是______。
A.程序应简单、清晰、可读性好
B.符号名的命名要符合语法
C.充分考虑程序的执行效率
D.程序的注释可有可无
参考答案:A。
解析:要形成良好的程序设计风格,主要应注重和考虑下述一些因素:符号名的命名应具有一定的实际含义,以便于对程序功能的理解;正确的注释能够帮助读者理解程序;程序编写应优先考虑清晰性,除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。
(4)下面对对象概念描述错误的是______。
A.任何对象都必须有继承性 B.对象是属性和方法的封装体
C.对象间的通信靠消息传递 D.操作是对象的动态性属性
参考答案:A。
解析:对象是由数据和允许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。
(5)在结构化方法中,软件功能分解属于下列软件开发中的______阶段。
A.详细设计 B.需求分析 C.总体设计 D.编程调试
参考答案:C。
解析:总体设计过程通常由两个主要阶段组成:系统设计,确定系统的具体实现方案;结构设计,确定软件结构。为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述,仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。
(6)在设计程序时,应采纳的原则之一是______。
A.程序结构应有助于读者理解 B.不限制GO TO语句的使用
C.减少或取消注解行 D.程序越短越好
参考答案:A。
解析:滥用GO TO语句将使程序流程无规律,可读性差;添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。
(7)在面向对象方法中,______描述的是具有相似属性与操作的一组对象。
参考答案:类。
解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,它描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。
(8)结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用GO TO语句。
参考答案:模块化。
解析:结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化和限制使用GO TO语句。
自顶向下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。
逐步求精:对复杂问题,应设计一些子目标做过渡,逐步细化。
模块化:一个复杂问题,肯定是由若干简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。
限制使用GO TO语句:GO TO语句能破坏程序的结构化设计,使代码难于测试,且包含大量GO TO的代码模块不易理解和阅读。它一直遭结构化程序设计思想所抛弃,强烈建议程序员不易使用它。
(9)与结构化需求分析方法相对应的是______方法。
参考答案:结构化设计。
解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可用方法,来设计系统的各个组成部分以及各个成分之间的内部联系的技术。也就是说,结构化设计是这样一个过程,它决定用哪些方法把哪些部分联系起来,才能解决好某个具体且有清楚定义的问题。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。