信息隐藏和数据抽象的差异?

Ank*_*a_K 9 oop abstraction information-hiding

数据抽象和信息隐藏有什么区别吗?经过这个链接中的所有答案后,我更加困惑. 抽象VS信息隐藏VS封装 无法找到任何区别.是否只是我们可以将一个(信息隐藏)作为目标而另一个(抽象)作为一个过程?但这对我来说并不是令人满意的.此外,我得到封装是实现抽象过程的技术我在这里吗?请解释确切的区别.

Fuh*_*tor 6

信息隐藏是指设计者明确决定限制对实现细节的访问.这是一个比面向对象设计更古老的原则,但经常被使用.

一个简单的例子是在C中定义常量,例如,常量#define NAME_SIZE 15的代码(客户端)不需要知道它的值,如果你(设计者)决定稍后改变它的值,也不会有麻烦.他们不应该假设它真的是15,因为你可能决定改变它.

抽象是指你在处理聚合时,例如,汽车是机箱,电机,车轮等细节的抽象.抽象允许我们以更简单的方式思考复杂的事物.

封装是我们如何决定构成抽象的元素的详细程度.良好的封装应用信息隐藏,以强制执行细节限制.例如,我的Car实际上包含了所有部件,但它只向我(驱动程序)提供了一个适合我需要而不是更多的界面.我可以控制门,锁,窗,灯,喇叭,天窗,运动的方向,加速,减速等.即使我可能好奇操纵所有这些东西的"如何"的细节,封装可以防止我看到更多.

如果我的汽车的实施发生变化(我从内燃机变为电动或混合动力),因为我作为驾驶员只知道有限的接口,我不需要改变驾驶汽车的方式.抽象让我知道我正在开车,而不是数百件金属,橡胶等.

信息隐藏不是汽车的一部分的例子可能是阻塞阀.我的父母告诉我那些曾经在他们驾驶过的汽车上工作过的人......这是一种燃烧发动机细节,在电动汽车中没用.