- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
你能告诉我软件开发中的抽象和信息隐藏有什么区别吗?
我很困惑。抽象隐藏了细节实现信息隐藏抽象了事物的全部细节。
更新:我找到了这三个概念的一个很好的答案。 See the separate answer below多次引用自 there .
最佳答案
去源头吧! Grady Booch 说(《面向对象的分析与设计》,第 49 页,第二版):
Abstraction and encapsulation are complementary concepts: abstraction focuses on the observable behavior of an object... encapsulation focuses upon the implementation that gives rise to this behavior... encapsulation is most often achieved through information hiding, which is the process of hiding all of the secrets of object that do not contribute to its essential characteristics.
换句话说:抽象=外部的对象;封装(通过信息隐藏实现)=对象内部,
示例:在 .NET Framework 中,System.Text.StringBuilder
类提供了对字符串缓冲区的抽象。这种缓冲区抽象允许您使用缓冲区而无需考虑其实现。因此,您可以将字符串附加到缓冲区,而无需考虑 StringBuilder
内部如何跟踪指向缓冲区的指针以及在缓冲区满时管理内存(这是通过封装来实现的)通过信息隐藏)。
rp
关于encapsulation - 抽象VS信息隐藏VS封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24626/
例如,我有一个基本上以这种方式工作的函数: function myfunc(data,type_of_analysis){ if type_of_analysis is "Smith-Jone
你能告诉我软件开发中的抽象和信息隐藏有什么区别吗? 我很困惑。抽象隐藏了细节实现信息隐藏抽象了事物的全部细节。 更新:我找到了这三个概念的一个很好的答案。 See the separate answe
如果类A和类B是组合关系,是不是意味着通过A得到的B的具体实例只能通过类A修改,不能破坏类A的数据封装?或者,组合是否仅意味着生命周期绑定(bind),而不是数据封装? class A { B
在使用 Web 组件的项目之后,我将回到 AngularJS。令我感到沮丧的是,我找不到合适的方法让指令将其 CSS 保持在内部(或封装)。 使用 web 组件我没有这个问题,因为已经有一个样式标签可
好吧,我正在使用这本书:Core Java Volume I--Fundamentals。 它定义封装如下: Encapsulation (sometimes called information h
好吧,我正在使用这本书:Core Java Volume I--Fundamentals。 它定义封装如下: Encapsulation (sometimes called information h
我已经阅读了整个 Swift book , 并观看了所有 WWDC videos (我衷心推荐所有这些)。我担心的一件事是数据封装。 考虑以下(完全人为的)示例: class Stack {
有一次我读到 MSDN article这鼓励了以下编程范式(它不是 100% 正确的......见编辑): public class MyClass { public void Method1
我有一个问题我已经苦苦思索了很长一段时间。我正在构建一个具有两个主要类的模板引擎 Template.php和 Tag.php , 有一堆扩展类,比如 Img.php和 String.php . 程序是
所以我在这里尝试做一些所有程序员有一天可能也必须做的事情。 我的代码中有所有这些嵌套宏,我想在每个 #endif 旁边添加注释,其中 #if 它关闭 - 如果还没有注释。正则表达式可以为我做到这一点吗
我在使用 不是封装类 的 SwingWorker 类传递信息、更新进度和指示“完成”时遇到问题。 我有一个简单的类来处理硬盘驱动器上的文件和目录。用户单击 Start 按钮并启动 SwingWorke
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Abstraction VS Information Hiding VS Encapsulation “抽象
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: Why use getters and setters? 为什么要使用 getter 和 setter? 最佳答案
我最近开始使用智能指针。如果我是正确的,则声明智能指针: shared_array a(new double[n]); 但是如果a被封装在一个类中怎么办呢?目前我正在做如下,但这看起来 super 丑
目前我有以下代码: import UIKit struct ToBeSearched { var value1 = "1" var value2 = "3" var value
我在准确表述它时遇到问题,所以我在标题中留下了更笼统的描述(如果您对问题有更准确的描述,请发表评论,我会编辑标题)。 问题: AudioStream 和VideoStream 两个类派生自基类Medi
Bob Martin 在这 video说“C 有完美的封装”。我不明白他为什么这么说......我知道我们可以在 .c 文件中分离实现并在 header .h 文件中声明接口(interface),但
以前我相当确定“封装字段”命令会变成如下所示: public int SomeNumber; 进入以下内容(我想要来自 VS 2015 的内容): private int someNumber; pu
在 Angular 中,默认模式是封装:ViewEncapsulation.Emulated 此模式通过使用 CSS 选择器启用样式封装。然而,'encapsulation: ViewEncapsul
正如四人帮在“Design Patterns”中所说:“it's often said that 'inheritance breaks encapsulation'”,在“面向对象编程语言中的封装和
我是一名优秀的程序员,十分优秀!