我是OO概念的新手。我找到了一些地方,
封装是对客户端隐藏对象并通过方法调用它们。
MSDN说,
封装意味着一组相关的属性、方法和其他成员被视为单个单元或对象。
我假设第一个表达式解释了封装的用法,而第二个表达式定义了封装。即使在它更具体到Java之前,这个问题也被提出过,我更愿意看到这个概念在progress 4GL中的使用示例。我最近了解了Progress 4GL的OO功能,下面是我发现的一个示例类。
CLASS [<package>.]<class-name>
[INHERITS <super-type-name> ]
[IMPLEMENTS <interface-type-name>
[,<interface-type-name>]…]
[ FINAL ]:
[ <data member> …]
[ <constructor> ]
[ <method> … ]
[ <destructor> ]
END [ CLASS ].
与Progress 4GL相关的示例将非常受欢迎,并且已经存在一些很好的答案,可以解释一般的封装。
封装是对客户端隐藏对象并通过方法调用它们
这并不是真正完整的封装定义。这只是应用它的一种方式。MSDN的定义更完整,尽管我认为它应该添加数据,并且对数据的操作被封装在类和命名空间等编程结构中。
我猜你没有明白,因为第一个定义可以从第二个更完整的定义推导出来。封装意味着将数据、属性、对数据的方法操作等打包起来,使得数据的内部对客户端隐藏,因此客户端只能通过暴露的接口对数据进行操作(这部分就是第一个定义所说的)。
MSDN定义更合适。前者更接近于抽象的定义。
然而,这些术语显然是相关的,因为当它们被封装时更容易抽象。