面向对象的概念:encapsulation
,data abstraction
和data hiding
是3个不同的概念,但彼此非常相关。所以我很难通过阅读互联网上的信息来理解概念。一个地方的信息与互联网另一个地方的信息相矛盾。有人能指导我一个教程,它清楚地解释了三个概念,并提出了三者之间的区别。封装,数据抽象和数据隐藏的精确解释
回答
首先,不要太雄心勃勃,因为你说这3个概念是相关的(特别是前两个),并且可以在很多情况下用于彼此。正确使用它们比完成最终定义要重要得多。
“数据隐藏”就是要在客户和实施的一部分之间架起一道墙。模块的某些对象可以在模块内部,对用户不可见。因此,这是一种避免依赖的方法。如果我不知道一件事情是如何实现的,它的实现可能会改变。
“数据抽象”在相同的抽象下重组不同类型的数据。它接近议定书的想法。您不知道该对象是如何实现的,但您知道它遵循一个众所周知的协议,即一组适用于不同类型数据的方法。在python中,文件类对象就是一个很好的例子。在Java中,使用接口。这很好,因为你学习的次数减少了,也因为你可以在抽象层次上检查一些属性,也就是说,在这种抽象下重组的所有类型的数据。
“封装”是关于围绕对象简化其使用情况的壳。它与代码库中的对象可以重新分层次越来越低的想法相关联。一个图层中的一个对象只会调用他下面的图层。例如,如果要在屏幕上绘制一条线,线条obkect可能只封装一个openGL上下文,像素抽屉和其他东西。这些较低级别的对象由行对象封装。请注意,封装可以同时应用于同一个对象,因为它同时是不同层的一部分,并不好,但有时不可避免。例如,python中的文件类对象具有高级/封装方法(打开,关闭,读取)和低级别(seek)。
就是这样。很明显,每一个的定义可能更广泛,但是这些使得这三个概念更加不同。
将数据和函数封装成一个单元(称为 类)称为封装。数据封装是一个类别中最引人注目的特征。 外部世界不可访问数据,只有包装在类中的那些函数才能访问它。这些功能提供对象数据和程序之间的接口 。这种由程序直接访问的数据的绝缘被称为数据隐藏 或信息隐藏。 抽象是指代表基本特征 而不包括背景细节或解释的行为。 类使用抽象的概念,并被定义为抽象属性(如大小,重量和成本)的列表 ,以及用于对这些属性进行操作的函数 。它们封装了要创建的对象的所有基本属性。 属性有时称为数据成员,因为它们拥有 信息。对这些数据进行操作的功能是有时称为方法或成员函数的 。由于这些类使用数据抽象的概念,它们是 ,称为抽象数据类型(ADT
- 1. 封装与数据隐藏
- 2. 数据隐藏,数据封装?实际应用
- 3. 信息隐藏和数据抽象的区别?
- 4. 数据库设计中的封装或抽象
- 5. 抽象或封装?
- 6. 封装,数据隐藏,制定者/在C干将++
- 7. 数据抽象
- 8. 如何解释数据库中数字的精度和比例?
- 9. OOP概念抽象和封装
- 10. 抽象和封装有什么区别?
- 11. 模拟数据包封装
- 12. 数据注解隐藏属性/字段
- 13. .NET:抽象掉数据源和DataContext的
- 14. Axis和AxisLabel下隐藏的数据点
- 15. 抽象和接口的解释
- 16. 如何解释象夫IRStatisticsImpl数据
- 17. 核心数据的隐藏错误:NSInvalidArgumentException,原因:referenceData64只为抽象类定义
- 18. 封装与抽象的区别
- 19. 春数据和休眠..抽象类库
- 20. 分层数据上下文和抽象
- 21. 数据库抽象和工厂方法
- 22. 抽象数据类型
- 23. 数据输入抽象层?
- 24. MySQL数据库抽象层?
- 25. 分析抽象数据
- 26. PDO数据库抽象
- 27. intro.js显示和隐藏数据提示
- 28. jQuery:分割和隐藏html数据
- 29. 什么是数据层的正确抽象数量?
- 30. FFmpeg的PHP的元数据封装