为了账号安全,请及时绑定邮箱和手机立即绑定

抽象与信息隐藏与封装

抽象与信息隐藏与封装

炎炎设计 2019-07-26 14:13:47
抽象与信息隐藏与封装你能告诉我抽象化和信息隐藏在软件开发方面?我很困惑。抽象隐藏细节实现,信息隐藏抽象事物的全部细节。
查看完整描述

3 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞


去源头!Grady Booch说(在面向对象的分析和设计中,第49页,第二版):

抽象和封装是互补的概念:抽象集中于对象的可观察行为。封装集中于导致此行为的实现.。封装通常是通过信息隐藏来实现的,而信息隐藏是隐藏对象的所有秘密的过程,而这些秘密与对象的本质特性无关。

换句话说:抽象=外部对象;封装(通过信息隐藏实现)=对象内部,

示例:在.NET Framework中,System.Text.StringBuilder类提供对字符串缓冲区的抽象。此缓冲区抽象允许您使用缓冲区而不考虑其实现。因此,您可以将字符串附加到缓冲区,而不必考虑StringBuilder内部跟踪指向缓冲区的指针,并在缓冲区满时管理内存(通过信息隐藏进行封装)。

RP




查看完整回答
反对 回复 2019-07-27
?
HUX布斯

TA贡献1876条经验 获得超6个赞

“任择议定书”用他发现的几处引文更新了他的问题,即爱德华·V·贝拉德(Edward V.Berard)题为“抽象、封装和信息隐藏”的文章..我正在重新发布一个略为扩展和重新格式化的OP更新版本,因为它本身应该是一个答案。

(所有引文摘自上述文章。)

抽象:

“关于抽象的一个困惑之处在于它既作为一个过程又作为一个实体使用。抽象作为一个过程,表示对一个项目或一组项目的基本细节的提取,而忽略了不必要的细节。抽象作为一个实体,表示一个实际项目的模型、视图或其他集中的表示形式。”

信息隐藏:

“它的界面或定义是为了尽可能少地揭示其内部运作情况。”-[Parnas,1972 b]

“抽象可以[…]作为一种识别哪些信息应该隐藏的技术。”

当人们不能区分信息的隐藏和用来帮助识别要隐藏的信息的技术(例如抽象)时,就会产生混淆。

封装:

“它[…]是指围绕一些事物集合建造一个胶囊,在这种情况下是一个概念上的障碍。”-[Wirfs-BRock等人,1990年]

作为一个过程,封装是指将一个或多个项目封装在[…]容器中的行为。封装作为一个实体,是指包含(包含、封装)一个或多个项目的包或外壳。

“如果封装是‘与信息隐藏相同的事情’,那么人们可能会提出这样的论点:‘所有封装的东西都是隐藏的。’这显然是不正确的。”

结论:

“抽象、信息隐藏和封装是非常不同但关系密切的概念。人们可以说,抽象是一种技术,可以帮助我们识别哪些特定的信息应该可见,哪些信息应该隐藏。然后,封装是一种将信息包装起来的技术,以隐藏应该隐藏的信息,并使意图可见的信息可见。”




查看完整回答
反对 回复 2019-07-27
?
慕容3067478

TA贡献1773条经验 获得超3个赞

Abstraction是通过在基本功能之上提供一个层来隐藏实现细节。

Information Hiding隐藏受该实现影响的数据。使用privatepublic就在这下面。例如,隐藏类的变量。

Encapsulation只是将所有类似的数据和函数放入一个组,例如Class在方案编制方面;Packet在关系网里。

通过使用类,我们实现了所有三个概念-AbstractionInformation HidingEncapsulation




查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 556 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信