2012-01-06 85 views
3

面向对象的概念:encapsulation,data abstractiondata hiding是3个不同的概念,但彼此非常相关。所以我很难通过阅读互联网上的信息来理解概念。一个地方的信息与互联网另一个地方的信息相矛盾。有人能指导我一个教程,它清楚地解释了三个概念,并提出了三者之间的区别。封装,数据抽象和数据隐藏的精确解释

回答

3

首先,不要太雄心勃勃,因为你说这3个概念是相关的(特别是前两个),并且可以在很多情况下用于彼此。正确使用它们比完成最终定义要重要得多。

数据隐藏”就是要在客户和实施的一部分之间架起一道墙。模块的某些对象可以在模块内部,对用户不可见。因此,这是一种避免依赖的方法。如果我不知道一件事情是如何实现的,它的实现可能会改变。

数据抽象”在相同的抽象下重组不同类型的数据。它接近议定书的想法。您不知道该对象是如何实现的,但您知道它遵循一个众所周知的协议,即一组适用于不同类型数据的方法。在python中,文件类对象就是一个很好的例子。在Java中,使用接口。这很好,因为你学习的次数减少了,也因为你可以在抽象层次上检查一些属性,也就是说,在这种抽象下重组的所有类型的数据。

封装”是关于围绕对象简化其使用情况的壳。它与代码库中的对象可以重新分层次越来越低的想法相关联。一个图层中的一个对象只会调用他下面的图层。例如,如果要在屏幕上绘制一条线,线条obkect可能只封装一个openGL上下文,像素抽屉和其他东西。这些较低级别的对象由行对象封装。请注意,封装可以同时应用于同一个对象,因为它同时是不同层的一部分,并不好,但有时不可避免。例如,python中的文件类对象具有高级/封装方法(打开,关闭,读取)和低级别(seek)。

就是这样。很明显,每一个的定义可能更广泛,但是这些使得这三个概念更加不同。

0

将数据和函数封装成一个单元(称为 类)称为封装。数据封装是一个类别中最引人注目的特征。 外部世界不可访问数据,只有包装在类中的那些函数才能访问它。这些功能提供对象数据和程序之间的接口 。这种由程序直接访问的数据的绝缘被称为数据隐藏 或信息隐藏。 抽象是指代表基本特征 而不包括背景细节或解释的行为。 类使用抽象的概念,并被定义为抽象属性(如大小,重量和成本)的列表 ,以及用于对这些属性进行操作的函数 。它们封装了要创建的对象的所有基本属性。 属性有时称为数据成员,因为它们拥有 信息。对这些数据进行操作的功能是有时称为方法或成员函数的 。由于这些类使用数据抽象的概念,它们是 ,称为抽象数据类型(ADT