【问题标题】:Would it be possible to achieve Encapsulation in Progress 4GL? [duplicate]是否有可能实现 4GL 中的封装? [复制]
【发布时间】:2014-07-10 07:06:42
【问题描述】:

我是 OO 概念的菜鸟。我找到了一些地方,

封装就是对客户端隐藏对象,并通过方法调用它们。

MSDN 说,

封装意味着一组相关的属性、方法和其他成员被视为一个单一的单元或对象。

我假设第一个表达式解释了封装的用法,而后者定义了封装。 甚至在它更具体到 Java 之前,这也是一个问题,当谈到 Progess 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 相关的示例,并且已经存在一些很好的答案来解释封装。

【问题讨论】:

  • 你能告诉我们一些代码来重现这个问题吗?
  • 查看这篇文章:en.wikipedia.org/wiki/…
  • 阅读维基百科封装的历史重要性,如果你了解这个概念的起源可能更容易掌握。 en.wikipedia.org/wiki/…
  • 我希望看到一个特定于 Progress 4GL 的示例,这不再重复,如果您可以删除重复的标志 @crashmstr & buttiful buttefly、Servy、abatishchev、nvoigt,那就太好了跨度>

标签: encapsulation progress-4gl


【解决方案1】:

封装是对客户端隐藏对象并通过方法调用它们

这并不是封装的真正完整定义。这只是应用它的一种方式。 MSDN的定义比较完整,不过我觉得应该在class这样的编程结构中添加数据和对数据的操作封装 >命名空间

我猜你没明白,因为第一个定义可以从第二个更完整的定义推导出来。封装是指对数据的数据、属性、方法操作等进行封装,使数据的内部对客户端隐藏,因此客户端只通过暴露的接口对数据进行操作(这部分就是第一个定义所说的) )。

【讨论】:

    【解决方案2】:

    MSDN 的定义更合适。前者更接近于抽象的定义。

    但是,这些术语显然是相关的,因为将它们封装起来更容易抽象概念。

    【讨论】:

    • IMO 抽象并非完全如此。它更多的是删除特定元素并仅保留对象的有用/通用属性的概念。抽象一个对象并不意味着隐藏它。 (有争议)
    • 就像我说的,靠近一点。抽象是一个想法,但所描述的是该想法的一种实现(在许多通常更好的实现中)。
    猜你喜欢
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2021-04-08
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    相关资源
    最近更新 更多