当前所在位置: 首页 > 知识精选 > 正文

面向对象的特征是 面向对象特征提取包括哪些种类

2023-06-29 来源:互联网 【 字体:

面向对象的特征是 面向对象特征提取包括哪些种类 导读大家好,小宝来为大家解答以上问题。面向对象的特征是,面向对象的特征很多人还不知道,现在让我们一起来看看吧!面向对象编程语言(OOP)是

大家好,小宝来为大家解答以上问题。面向对象的特征是,面向对象的特征很多人还不知道,现在让我们一起来看看吧!

面向对象编程语言(OOP)是专门为面向对象概念而开发的,它可以方便地实现面向对象的封装、继承和多态等特性。

1.包装

封装是一种信息隐藏技术,即对象内部对用户隐藏,不能直接访问;用户只能看到对象封装接口上的信息,并通过其外部接口访问对象。封装的目的是将对象的用户与对象的设计者分开。用户只需要知道对象接收到的消息,而不需要知道对象内部实现的细节。当用户向对象发送消息时,对象将调用内部方法根据收到的消息进行响应。

在C语言中,对象的组成是由类来描述的。每个类的成员可以分为私有和公共类型,对象的私有部分不能被对象的外部直接访问。对象的封装可以提高模块间的独立性,使系统易于调试和维护。

假设应用系统中有两个模块:一个模块从计算机的串口接收数据并放入缓冲区;另一个是数据处理模块。数据处理模块可以直接访问缓冲器并从缓冲器中读取数据。此时,两个模块之间的相关性紧密,模块的独立性较差。如果接收数据的模块改变了缓冲区的管理方法,第二个模块必须做出相应的改变。如果数据处理模块对缓冲区操作错误,会影响数据接收模块,在调试程序时很难确定错误发生在哪个模块。实际上,数据处理模块并不需要缓冲区的管理信息,它只需要知道缓冲区中是否有数据,以及有什么样的数据。上述处理方式违背了软件工程中的信息隐藏原理,数据处理模块访问了不必要的信息。

将数据接收模块封装成一个对象,将缓冲区的管理信息作为其私有数据,可以避免上述问题。数据接收模块只需要提供一个接口从缓冲区中获取数据。数据处理模块只能访问接口,不能直接操作缓冲区。此时,提高了两个模块之间的独立性。如果需要改变缓冲区管理方式,只需要修改数据接收模块,数据处理模块不会受到影响,因为数据接收模块提供的对外接口没有改变。

2.遗产

人们在描述客观世界的事物时,往往采用分类的方法。类是有层次的,就是一个大类里的东西可能会分成几个小类,这些小类又可能会分成几个更小的类。

面向对象思想采用了事物分类的分层思想。当描述类时,一些类共享结构和行为的共同特征。比如老师和学生,有姓名,年龄,身高,体重等。在结构上,并且在行为(或操作)上有答身高、答体重等操作。把这些共性提取出来,形成一个单独的类——人,这个类描述了老师和学生之间的共性。一个类(人)的结构和行为特征可以被许多相关的类共享。比如,老师和学生继承了人的结构和行为特征。在C语言中,类继承是通过类派生机制实现的,一个类可以派生出一个新的类。这个类称为派生类的基类或父类,派生的新类称为基类的派生类或子类。派生类的对象具有基类对象的特征,同时又有自己独有的特点。一个教师类的对象和一个学生类的对象都具有人类类所描述的特征,同时又有自己独特的特征。

通过使用类之间的继承关系,可以简化对类的描述。在这一类中,人们描述的是老师和学生的共性,而学生和老师只需要描述各自的个性。使用继承机制可以提高软件代码的可重用性。当设计一个新的类时,你不必从头开始设计和编写所有的代码。您可以从具有相似特征的现有类中派生出一个类,继承原始类的一些特征,并添加您需要的新功能。这不同于面向过程的设计语言中的过程或功能。在面向过程的设计语言中,要使用一个具有相似功能的过程或函数,必须修改源代码以满足新系统的功能需求,而类派生机制可以在没有原类源代码的情况下派生出一个新类。

当使用类及其继承来描述系统时,由于类之间的继承关系,可能会形成层次化的类结构。当用类的层次结构来描述系统时,某些类之间的层次关系可以用多种方式实现。比如中学生类,可以直接从人类类派生,也可以从人类类的派生类学生类派生。

在设计类层次结构时,要注意建立的类层次结构是否容易理解、组织类结构的成本等问题。设计的类层次结构是否合理,往往取决于系统分析师的经验等因素。

3.多态性

多态性是面向对象系统的另一个重要特征。多态性意味着一个名词可以有多种含义。在C语言中,多态性主要表现在以下两个方面。

(1)超载

在C语言中,同一个函数名和运算符可以有多个含义不同的实现版本,编译器会根据函数调用的参数形式决定调用哪个实现版本。

(2)虚拟功能

c语言引入了虚函数机制,允许不同版本的函数成员应用在不同的类层次结构对象中。比如实现一个类形状,然后从这个类派生出一个画点的类点,一个画圆的类圆,一个画直线的类线。每种绘图方法都不同,但它们都有几个共同的操作——显示、擦除和移动图形。移动图形的操作是先擦除图形,再改变图形的位置参考点,然后在新的位置显示图形。移动图形的操作在类形中实现,每个图形的显示、擦除、改变基准点的操作在派生类中实现。如果程序中使用了图形对象的移动操作,编译器采用动态绑定的方法,根据图形对象是哪个类来决定调用哪个类来显示、擦除和改变参考点。这种多态性被称为运行时多态性。重载,另一方面,编译器可以在编译时确定使用哪个实现版本,这是静态的。

本文到此结束,希望对大家有所帮助。

相关标签: 特征