Pregunta

¿Cuáles son los diferentes tipos de encapsulación?

Estoy en lo cierto al pensar esto básicamente se refiere a los conceptos centrales OO tales como la abstracción, polimorfismo y la herencia?

Mi comprensión de encapsulación es que es un método de ocultar datos / funcionalidad, pero nunca consideró polimorfismo o herencia una forma de encapsulación, aunque puedo ver cómo el polimorfismo podría considerarse encapsulación, ya que puede ocultar el tipo exacto de el objeto que está interactuando.

Así que, ¿diría que está sobre él, o me estoy perdiendo algunos conceptos fundamentales?

editar Me acabo de notar que alguien en los comentarios indican que podría referirse a métodos privadas / públicas, tal vez estoy pensando en la pregunta demasiado y esperando una respuesta más complicado de lo que realmente es?

¿Fue útil?

Solución

Usted está pensando demasiado, creo.

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

Extracto de este artículo

ocultación de información en ciencias de la computación es el principio de ocultación de las decisiones de diseño en un programa de ordenador que son más propensos a cambiar, protegiendo así a otras partes del programa de cambio si se cambia la decisión de diseño. La protección implica proporcionar una interfaz estable que protege al resto del programa de la aplicación (los detalles que son más propensos a cambiar).

Una forma común de encapsulación está utilizando propiedades para ocultar campos de datos privados. Una forma aún más común es el uso de OO para encapsular la complejidad del software en clases así divisoned con funciones y responsabilidades. Esta es una clave de Tennant OO, al pasar de un estilo de diseño monolítico de procedimiento a un estilo más estructurado que se esfuerza por ocultar toda la información irrelevante, excepto lo que se refiere a la tarea particular que estás trabajando.

Otros consejos

Es mi modo de ver y entender que el término encapsulación (a encapsular) es el arte / ciencia de capturar la esencia de algo con el objeto de visualización. De hecho, por definición - para encapsular es empaquetar algo o encerrarlo en otro recipiente. Por lo tanto el término encapsulación significaría tomar la esencia de lo que está tratando de lograr y envasarlo en una forma útil de modo que pueda ser reutilizado como sea necesario.

Así que para interpretar este, que significaría para empaquetar el material en una forma que lo haría más útil más adelante.

Así que en realidad ... interpretar esto como mejor le parezca. Lo veo como teniendo un montón de algoritmos y los servicios públicos y la creación de una estructura de clases que se pueden utilizar como una API en otros proyectos. Este código encapsulado podría ser heredada y / o ampliarse para que sea útil para los propósitos modificados sin cambiar la esencia subyacente de la API.

Por lo tanto, abstracción, polimorfismo y la herencia no son formas de encapsulación, pero las formas de extender y modificar el código encapsulado.

Las diferentes formas de encapsulación significarían los modificadores de propiedades, métodos, campos y clases - que es pública, privada, estática, virtual (en C #). Todo lo demás (es decir, sobrecargas, redefiniciones, sombras) es una modificación o una extensión de que la encapsulación.

Usted puede considerar el código modificado una encapsulación que luego podría ser heredada más / abstraída / extendido, pero el paquete que debe ser extendido es el producto encapsulado.

La encapsulación se define por la Organización Internacional de la Norma Internacional de Normalización:. "Tecnología de la información - Procesamiento distribuido abierto", ISO / IEC 10746, 1998

Se define en términos de las definiciones más primitivas:

Entidad:. Cualquier cosa concreta o abstracta de interés

Objeto: Un modelo de una entidad. Un objeto se caracteriza por su comportamiento y, dualmente, por su estado.

Comportamiento (de un objeto): Una colección de acciones con un conjunto de restricciones sobre cuando pueden ocurrir.

Interfaz: Una abstracción del comportamiento de un objeto que consiste en una subconjunto de las interacciones de ese objeto, junto con un conjunto de restricciones del momento en que se pueden producir.

La encapsulación: la propiedad de que la información contenida en un objeto es accesible sólo a través de interacciones en las interfaces soportadas por el objeto.

El ISO no define los diferentes tipos de encapsulación.

Otros mensajes han mencionado ocultación de información. La ISO no define la encapsulación explícitamente en términos de ocultación de la información, aunque sí parece implícita, ver "Los fundamentos de la teoría de encapsulación," http://www.edmundkirwan.com/pub/

Ed.

La encapsulación es más que una simple ocultación de información. Ese es un aspecto de la misma. Tiene que ver con la interfaz a un módulo. Una interfaz proporciona dos funciones muy importantes:. Encapsulación y abstracción

  

La abstracción es cuando un cliente de un módulo no necesita saber más de lo que está en la interfaz.

y

  

La encapsulación es cuando un cliente de un módulo no es capaz de saber más de lo que está en la interfaz.

(Ambas definiciones de Uso de UML por Perdita Stevens)

Desde la encapsulación se refiere simplemente a "ocultar información", entonces me imagino que muchas cosas pueden ser categorizadas como encapsulación. Sin embargo, tiendo a pensar en la encapsulación como "escondite aplicación", en otras palabras, es una herramienta que utilizo para crear el acoplamiento débil entre lo que escribo y el cliente nada de lo que he escrito.

Así que tiendo a creer, de manera pragmática, que la encapsulación es cualquier paradigma o mejores prácticas que me permite presentar una interfaz sólida limpia para cualquier cliente.

En general, el uso de la palabra es bastante cerca de lo que dice. Encapsular algo cuando lo contienen, y no dejar ninguna de las ofertas suelto. La mejor manera de pensar en ello es que usted está tomando algo y ponerlo en un recuadro negro en el que nadie puede ver los detalles más. El cuadro esconde todo, proporcionar alguna otra interfaz disociado en su lugar.

El ocultamiento de información es sólo un aspecto de la encapsulación, ya que junto con los datos también se puede ocultar cualquiera de los detalles del código en sí mismo. El propósito de encapsular una parte de su sistema es dibujar esa parte de la complejidad de distancia del conjunto, por lo que es más fácil de entender los detalles separados (en ambos lados). Más?

Paul.

"Definiciones candidatos para la encapsulación:

  • Físicamente agrupar las operaciones relacionadas entre sí o cosas.
  • portero de estado o datos.
  • Ocultación de aplicación. "

Procedente de: encapsulación Definición

Hay dos partes / maneras de lograr la encapsulación:

  •   

    En primer lugar, la encapsulación es una técnica que los paquetes de datos y los comportamientos relacionados en una sola unidad, es decir, la agrupación física de las operaciones (comportamientos)

por ejemplo: -.

class Person {
    String name;
    int age;

    void talk() {
    }

    void think() {
    }

    void work() {
    }

    void play() {
    }
}
  •   

    En segundo lugar, la encapsulación es una técnica para proteger los datos de un mal uso por el mundo exterior, que se conoce como ‘ocultación de información’ o ‘ocultación de datos’.

por ejemplo: -.

class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public String getAge() {
        return age;
    }
}

obtienen de: ¿Cuál es la encapsulación en Java - el qué, por qué y cómo , alerón autor cita la interfaz como un ejemplo, que no es cierto. Interfaz son para la abstracción

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top