软考程序员知识点面向对象方法之基本概念

程序员 责任编辑:小狐狸 2016-10-20

添加老师微信

备考咨询

加我微信

摘要:下面希赛小编为大家整理的软考程序员知识点面向对象方法之基本概念,希望能帮助学友们。

       

       >>>>>>立即点击了解程序员考试培训视频

       >>>>>>立即点击了解程序员考试教材

       >>>>>>立即点击了解程序员在线模拟考试


       下面希赛小编为大家整理的软考程序员知识点面向对象方法之基本概念,希望能帮助学友们。具体内容如下:


       面向对象方法

       面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。

       基本概念

       用计算机解决问题需要用程序设计语言对问题加以描述并求解(即编程),实质上,软件是问题求解的一种表述形式。显然,假如软件能直接表现人求解问题的思维路径(即求解问题的方法),那么软件不仅容易被人理解,而且易于维护和修改,从而会保证软件的可靠性和可维护性,并能提高公共问题域中的软件模块和模块重用的可靠性。面向对象的方法恰好可以使得程序设计按照人们通常的思维方式来建立问题域的模型,设计出尽可能自然地表现求解方法的软件。

       面向对象的基本概念

      对象

       对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。在对内的操作通常称为方法。一个对象请求另一对象为其服务的方式是通过发送消息。

       类

       类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同行为和属性。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。

       消息

       消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。

       继承

       继承性(Inheritance)是指,在某种情况下,一个类会有“子类”。子类比原本的类(称为父类)要更加具体化。例如,“狗”这个类可能会有它的子类“牧羊犬”和“吉娃娃犬”。在这种情况下,“莱丝”可能就是牧羊犬的一个实例。子类会继承父类的属性和行为,并且也可包含它们自己的。我们假设“狗”这个类有一个方法(行为)叫做“吠叫()”和一个属性叫做“毛皮颜色”。它的子类(前例中的牧羊犬和吉娃娃犬)会继承这些成员。这意味着程序员只需要将相同的代码写一次。

       在伪代码中我们可以这样写:

       类牧羊犬:继承狗定义莱丝是牧羊犬莱丝.吠叫()/*注意这里调用的是狗这个类的吠叫方法。*/

       回到前面的例子,“牧羊犬”这个类可以继承“毛皮颜色”这个属性,并指定其为棕白色。而“吉娃娃犬”则可以继承“吠叫()”这个方法,并指定它的音调高于平常。子类也可以加入新的成员,例如,“吉娃娃犬”这个类可以加入一个方法叫做“颤抖()”。设若用“牧羊犬”这个类定义了一个实例“莱丝”,那么莱丝就不会颤抖,因为这个方法是属于吉娃娃犬的,而非牧羊犬。事实上,我们可以把继承理解为“是”或“属于”。莱丝“是”牧羊犬,牧羊犬“属于”狗类。因此,莱丝既得到了牧羊犬的属性,又继承了狗的属性。我们来看伪代码:

       类吉娃娃犬:继承狗开始公有成员:颤抖()结束类牧羊犬:继承狗定义莱丝是牧羊犬莱丝.颤抖()/*错误:颤抖是吉娃娃犬的成员方法。*/

       当一个类从多个父类继承时,我们称之为“多重继承”。如一只狗既是吉娃娃犬又是牧羊犬(虽然事实上并不合逻辑)。多重继承并不总是被支持的,因为它很难理解,又很难被好好使用。

       封装性

       具备封装性(Encapsulation)的面向对象程序设计隐藏了某一方法的具体执行步骤,取而代之的是通过消息传递机制传送消息给它。因此,举例来说,“狗”这个类有“吠叫()”的方法,这一方法定义了狗具体该通过什么方法吠叫。但是,莱丝的朋友并不知道它到底是如何吠叫的。

       从实例来看:

       /*一个面向过程的程序会这样写:*/定义莱丝莱丝.设置音调(5)莱丝.吸气()莱丝.吐气()/*而当狗的吠叫被封装到类中,任何人都可以简单地使用:*/定义莱丝是狗莱丝.吠叫()

       封装是通过限制只有特定类的对象可以访问这一特定类的成员,而它们通常利用接口实现消息的传入传出。举个例子,接口能确保幼犬这一特征只能被赋予狗这一类。通常来说,成员会依它们的访问权限被分为3种:公有成员、私有成员以及保护成员。有些语言更进一步:Java可以限制同一包内不同类的访问;C#和VB.NET保留了为类的成员聚集准备的关键字:internal(C#)和Friend(VB.NET);Eiffel语言则可以让用户指定哪个类可以访问所有成员。

       多态

       多态(Polymorphism)是指由继承而产生的相关的不同的类,其对象对同一消息会做出不同的响应。例如,狗和鸡都有“叫()”这一方法,但是调用狗的“叫()”,狗会吠叫;调用鸡的“叫()”,鸡则会啼叫。我们将它体现在伪代码上:

       类狗

3155.tmp.jpg

       结束定义莱丝是狗定义鲁斯特是鸡莱丝.叫()鲁斯特.叫()

       这样,虽然同样是做出叫这一种行为,但莱丝和鲁斯特具体做出的表现方式将大不相同。多态性的概念可以用在运算符重载上,本文不再赘述。

       抽象性

       抽象(Abstraction)是简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义,并且可以在最恰当的继承级别解释问题。举例说明,莱丝在大多数时候都被当作一条狗,但是如果想要让它做牧羊犬做的事,你完全可以调用牧羊犬的方法。如果狗这个类还有动物的父类,那么你完全可以视莱丝为一个动物。


       返回目录:软考程序员知识点面向对象方法汇总


    希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库软考历年真题)、软考培训教材软考视频教程,多样的培训方式包括在线辅导面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取

!
咨询在线老师!