数据抽象和信息隐藏有什么区别吗?在查看了此链接中的所有答案之后,我感到更加困惑。
Abstraction VS Information Hiding VS Encapsulation
找不到任何区别。仅仅是我们可以将一个(信息隐藏)称为目标,将另一个(抽象)称为流程?但这对我来说不是令人满意的区别。此外,我知道封装是实现抽象过程的技术,我在这里吗?请解释确切的区别。
最佳答案
信息隐藏是设计者专门决定限制对实现细节的访问时。这是比面向对象设计要古老的原理,但经常被使用。
一个简单的示例是在C中定义常量,例如#define NAME_SIZE 15
常量的代码(客户端)不需要知道其值,并且如果您(设计者)以后决定更改其值,也不会感到麻烦。他们不应该对实际上是15的事实做出假设,因为您可能会决定更改它。
抽象是在处理集合时,例如,汽车是对诸如底盘,马达,车轮等细节的抽象。抽象使我们能够以更简单的方式思考复杂的事物。
封装是我们决定组成抽象的元素的详细程度的方式。好的封装会隐藏信息,以限制细节。例如,我的汽车实际上包含了所有部件,但仅向我(驾驶员)提供了适合我需求的界面,而没有更多。我可以控制门,锁, window ,灯,号角,天窗,运动方向,加速,减速等。即使我可能很好奇地操纵所有这些东西的“操作方式”的细节,但封装可以防止我从看到更多。
如果我的汽车的实现发生变化(我从内燃机改为电动汽车或混合动力汽车),因为作为驾驶员,我只知道有限的界面,因此无需更改驾驶方式。抽象使我只知道自己在驾驶汽车,而不是几百种金属,橡胶等。
信息隐藏不属于汽车的一个例子可能是choke valve。我的 parent 告诉我,那些人过去常常在自己驾驶的汽车中工作……这是内燃机的细节,在电动汽车中没有用。
关于oop - 信息隐藏和数据抽象方面的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7234490/