代码之家  ›  专栏  ›  技术社区  ›  RSlaughter

封装的不同类型是什么?

  •  5
  • RSlaughter  · 技术社区  · 17 年前

    封装的不同类型是什么?

    那么,你会这么说,还是我遗漏了一些核心概念?

    编辑

    7 回复  |  直到 13 年前
        1
  •  3
  •   Andreas Grech    17 年前

    我想你想得太多了。

    http://en.wikipedia.org/wiki/Information_hiding

    本文节选 :

    计算机科学中的信息隐藏是在计算机程序中隐藏最有可能更改的设计决策的原理,从而在设计决策更改时保护程序的其他部分不受更改。保护包括提供一个稳定的接口,该接口保护程序的其余部分不受实现的影响(最有可能更改的细节)。

    封装的一种常见形式是使用属性隐藏私有数据字段。一种更常见的形式是使用OO将软件的复杂性封装到具有角色和职责的划分良好的类中。这是OO的一个关键特性,因为它从单一的过程设计风格转变为更加结构化的风格,力求隐藏除与您所从事的特定任务相关的信息之外的所有无关信息。

        2
  •  1
  •   BenAlabaster    17 年前

    我的观点和理解是,术语封装(tocapsulate)是为了展示而捕捉事物本质的艺术/科学。事实上,根据定义,封装就是将某物打包或封装在另一个容器中。因此,“封装”一词的意思是将您试图实现的内容的精华以一种有用的形式封装起来,以便在必要时可以重用。

    所以要解释这一点,就意味着将材料包装成一种形式,使其在以后更有用。

    因此,抽象、多态和继承不是封装的形式,而是扩展和修改封装代码的形式。

    您可以将修改后的代码视为封装,然后可以进一步继承/抽象/扩展,但 需要扩展的是封装产品。

        3
  •  1
  •   Ed Ed    17 年前

    封装由国际标准化组织的国际标准定义:“信息技术开放分布式处理”,ISO/IEC 107461998。

    它是根据更原始的定义定义的:

    实体:任何具体或抽象的感兴趣的事物。

    二是由其状态决定。

    (对象的)行为:具有一组约束的动作集合

    接口:对象行为的抽象,由 它们可能发生的时间。

    封装:对象中包含的信息的属性 对象

    其他帖子也提到了信息隐藏。ISO没有从信息隐藏的角度明确定义封装,尽管它似乎是隐式的,请参见第页的“封装理论基础” http://www.edmundkirwan.com/pub/

    预计起飞时间。

        4
  •  1
  •   Rob Bednark Bohdan    13 年前

    抽象是指模块的客户端不需要知道接口中的内容。

    和

    (两个定义均来自 使用UML (佩迪塔·史蒂文斯)

        5
  •  0
  •   Andrew Hare    17 年前

    因为封装只是指“信息隐藏”,所以我可以想象很多事情都可以归类为封装。然而,我倾向于认为封装是“实现隐藏”,换句话说,它是我用来在我写的任何东西和我写的任何客户端之间创建松散耦合的工具。

    所以我倾向于相信,实际上,封装是任何范例或最佳实践,它允许我向任何客户机提供干净、可靠的接口。

        6
  •  0
  •   Paul W Homer    17 年前

    一般来说,这个词的用法与它所说的非常接近。当你包含某个东西时,你会将它封装起来,并且不要让任何交易散失。最好的思考方式是,你拿着一些东西,把它放进一个黑匣子里,在那里没有人能再看到细节。该框隐藏了所有内容,在其位置提供了一些其他未关联的接口。

    信息隐藏只是封装的一个方面,因为除了数据之外,您还可以隐藏代码本身的任何细节。封装系统的一部分的目的是将复杂性从整体中分离出来,从而更容易理解单独的细节(两侧)。 More?

    保罗。

        7
  •  0
  •   Abhijeet Riccardo Caroli    10 年前

    “封装的候选定义:

    • 将相关的操作或事物物理地组合在一起。
    • 状态或数据的看门人。
    • 隐藏实现。”

    来源: Encapsulation Definition

    实现封装有两个部分/方法:

    例如:-

    class Person {
        String name;
        int age;
    
        void talk() {
        }
    
        void think() {
        }
    
        void work() {
        }
    
        void play() {
        }
    }
    
    • 第二,封装是一种保护数据不被外界滥用的技术,称为信息隐藏或数据隐藏。

    例如:-

    class Person {
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
    
        public String getAge() {
            return age;
        }
    }
    

    来源: What is Encapsulation in Java - the WHAT, WHY and HOW 剧透作者以界面为例,这是不正确的。接口用于抽象