¿Me puede decir cuál es la diferencia entre la abstracción y la ocultación de información en el desarrollo de software?
Estoy confundido. La abstracción oculta la implementación de detalles y la información oculta los resúmenes de detalles completos de algo.
Actualización: encontré una buena respuesta para estos tres conceptos. Vea la respuesta separada a continuación para varias citas tomadas de allí .
Respuestas:
Ir a la fuente! Grady Booch dice (en Análisis y Diseño Orientado a Objetos, página 49, segunda edición):
En otras palabras: abstracción = el objeto externamente; encapsulación (lograda mediante la ocultación de información) = el objeto internamente,
Ejemplo: en .NET Framework, la
System.Text.StringBuilder
clase proporciona una abstracción sobre un búfer de cadena. Esta abstracción de búfer le permite trabajar con el búfer sin tener en cuenta su implementación. Por lo tanto, puede agregar cadenas al búfer sin tener en cuenta cómoStringBuilder
interno realiza un seguimiento de cosas como el puntero al búfer y la administración de memoria cuando el búfer se llena (lo que hace con la encapsulación a través de la ocultación de información).rp
fuente
El OP actualizó su pregunta con varias citas que había encontrado, concretamente en un artículo de Edward V. Berard titulado "Abstracción, encapsulación y ocultación de información". . Estoy volviendo a publicar una versión ligeramente ampliada y reformateada de la actualización del OP, ya que debería ser una respuesta por derecho propio.
(Todas las citas están tomadas del artículo mencionado anteriormente).
Abstracción:
Ocultación de información:
Encapsulación:
Conclusión:
fuente
Information Hiding
(o oculta la implementación), mientras que un genéricoclass
logra la encapsulación y la abstracción se logra a través delprivate
accesoAbstraction
está ocultando los detalles de implementación al proporcionar una capa sobre la funcionalidad básica.Information Hiding
está ocultando los datos que están siendo afectados por esa implementación. Uso deprivate
ypublic
viene debajo de esto. Por ejemplo, ocultar las variables de las clases.Encapsulation
es simplemente poner todos los datos y funciones similares en un grupo, por ejemplo,Class
en programación;Packet
en redes.Mediante el uso de clases, implementamos los tres conceptos
Abstraction
,Information Hiding
yEncapsulation
fuente
Por favor no compliques conceptos simples.
Encapsulación : la recopilación de datos y métodos en una sola unidad es la encapsulación (por ejemplo, clase)
Abstracción : es un acto de representar solo las cosas esenciales sin incluir detalles de fondo. (por ejemplo, interfaz)
PARA EJEMPLOS Y MÁS INFORMACIÓN GOTO:
http://thecodekey.com/C_VB_Codes/Encapsulation.aspx
http://thecodekey.com/C_VB_Codes/Abstraction.aspx
Definiciones aprobadas aquí
PD: También recuerdo la definición de un libro llamado C ++ de Sumita Arora que leemos en la clase 11;)
fuente
El significado de abstracción dado por el Oxford English Dictionary (OED) más cercano al significado que se pretende aquí es 'El acto de separar en el pensamiento'. Una mejor definición podría ser 'Representar las características esenciales de algo sin incluir antecedentes o detalles no esenciales'.
La ocultación de información es el principio de que los usuarios de un componente de software (como una clase) solo necesitan conocer los detalles esenciales de cómo inicializar y acceder al componente, y no necesitan conocer los detalles de la implementación.
Editar : me parece que la abstracción es el proceso de decidir qué partes de la implementación deben ocultarse .
Entonces no es abstracción VERSUS ocultación de información. Es información que oculta VIA abstracción.
fuente
Abstracción
La abstracción es un acto de representar detalles esenciales sin incluir los detalles de fondo. Una clase abstracta solo tiene firmas de método y la clase de implementación puede tener su propia implementación, de esta manera los detalles complejos se ocultarán al usuario. La abstracción se centra en la vista exterior. En otras palabras, la abstracción es la separación de las interfaces de la implementación real.
Encapsulamiento
La encapsulación explica la vinculación de los miembros y métodos de datos en una sola unidad. La ocultación de información es el objetivo principal de la encapsulación. La encapsulación se logra mediante el uso de especificadores de acceso como privado, público, protegido. Las variables de miembro de clase se hacen privadas para que no puedan ser accesibles directamente al mundo exterior. La encapsulación se centra en la vista interior. En otras palabras, la encapsulación es una técnica utilizada para proteger la información en un objeto del otro objeto.
fuente
La abstracción está ocultando detalles de la implementación tal como la pones.
Abstrae algo a un punto lo suficientemente alto como para que solo tenga que hacer algo muy simple para realizar una acción.
Ocultar información es ocultar detalles de implementación. La programación es difícil. Puede tener muchas cosas con las que lidiar y manejar. Puede haber variables que desee / necesite tener muy en cuenta. Ocultar información asegura que nadie rompa accidentalmente algo mediante el uso de una variable o método que usted expuso públicamente.
Estos 2 conceptos están muy unidos en la programación orientada a objetos.
fuente
Abstracción : es el proceso de identificar las características esenciales de un objeto sin incluir los detalles irrelevantes y tediosos.
Encapsulación : es el proceso de incluir datos y funciones que manipulan estos datos en una sola unidad.
La abstracción y la encapsulación son conceptos relacionados pero complementarios.
La abstracción es el proceso. La encapsulación es el mecanismo por el cual se implementa la abstracción.
La abstracción se centra en el comportamiento observable de un objeto. La encapsulación se centra en la implementación que da lugar a este comportamiento.
Ocultar información : es el proceso de ocultar los detalles de implementación de un objeto. Es el resultado de la encapsulación.
fuente
Encapsulación: la unión de los miembros de datos y las funciones de los miembros se denomina encapsulación. La encapsulación se realiza a través de la clase. abstracción: ocultar los detalles de implementación del uso del formulario o de la vista se llama abstracción. ej .: int x; no sabemos cómo funcionará int internamente. pero sabemos que int funcionará. Eso es abstracción.
fuente
Abstracción: La abstracción es el concepto / técnica utilizada para identificar lo que debería ser la vista externa de un objeto. Hacer que solo esté disponible la interfaz requerida.
Ocultación de información: es complementaria a la abstracción, ya que a través de la ocultación de información se logra la abstracción. Ocultando todo lo demás excepto la vista externa.
Encapsulación: es un enlace de datos y funciones relacionadas en una unidad. Facilita la abstracción y el ocultamiento de información. Permitir que características como el acceso de miembros se apliquen en la unidad para lograr la abstracción y el ocultamiento de información
fuente
Ver la publicación de Joel sobre la Ley de las abstracciones permeables
JoelOnsoftware
Básicamente, el resumen te da la libertad de pensar en conceptos de nivel superior. Una analogía no programada es que la mayoría de nosotros no sabemos de dónde proviene nuestra comida o cómo se produce, pero el hecho de que (generalmente) no tengamos que preocuparnos por eso nos libera para hacer otras cosas, como programación.
En cuanto a la ocultación de información, estoy de acuerdo con la interferencia.
fuente
En muy corto
Encapsulación : - Ocultar información
Abstracción : - Implementación oculta
Abstraction
te permite concentrartewhat the object does
mientras que Encapsulación significahow an object works
fuente
La abstracción le permite tratar un proceso complejo como un proceso simple. Por ejemplo, la abstracción estándar de "archivo" trata los archivos como una matriz contigua de bytes. El usuario / desarrollador ni siquiera tiene que pensar en cuestiones de clústeres y fragmentación. (La abstracción normalmente aparece como clases o subrutinas).
La ocultación de información se trata de proteger sus abstracciones de usuarios maliciosos / incompetentes. Al restringir el control de algún estado (asignaciones de disco duro, por ejemplo) al desarrollador original, grandes cantidades de manejo de errores se vuelven redundantes. Si nadie más que el controlador del sistema de archivos puede escribir en el disco duro, entonces el controlador del sistema de archivos sabe exactamente qué se ha escrito en el disco duro y dónde. (La manifestación habitual de este concepto es
private
yprotected
palabras clave en los idiomas OO).fuente
Para abstraer algo, necesitamos ocultar el detalle u ocultar el detalle de algo, necesitamos abstraerlo. Pero, ambos pueden lograrse mediante encapsulación.
Entonces, la ocultación de información es un objetivo, la abstracción es un proceso y la encapsulación es una técnica.
fuente
La abstracción simplemente significa la técnica en la que solo los detalles esenciales del software se hacen visibles para el usuario para ayudarlo a usar u operar con el software, por lo tanto, los detalles de implementación de ese software no se muestran (se hacen invisibles). La encapsulación es la técnica que tiene un paquete que contiene uno o más elementos y, por lo tanto, parte de la información (particularmente los detalles del programa) se hizo visible y otra no visible para el usuario, por lo que la encapsulación se logra a través de la ocultación de la información. En resumen. La abstracción es para el comportamiento observable (externamente) y la encapsulación es para la invisibilidad (internamente), pero estos dos son realmente complementarios.
fuente
Simplemente agregue más detalles sobre InformationHiding , encontrado Este enlace es una fuente realmente buena con ejemplos
fuente
Tanto la abstracción como la encapsulación son dos de los cuatro conceptos básicos de OOP que le permiten modelar cosas del mundo real en objetos para que pueda implementarlas en su programa y código. Muchos principiantes se confunden entre abstracción y encapsulación porque ambos se ven muy similares. Si le preguntas a alguien qué es Abstracción, él te dirá que es un concepto de OOP que se enfoca en información relevante al ocultar detalles innecesarios, y cuando preguntas sobre Encapsulación, muchos te dirán que es otro concepto de OOP que oculta datos del mundo exterior. Las definiciones no son incorrectas, ya que tanto la abstracción como la encapsulación ocultan algo, pero la diferencia clave está en la intención.
La abstracción oculta la complejidad al darle una imagen más abstracta, una especie de vista de 10,000 pies, mientras que la Encapsulación oculta el trabajo interno para que pueda cambiarlo más tarde. En otras palabras, Abstracción oculta detalles a nivel de diseño, mientras que Encapsulación oculta detalles a nivel de implementación.
fuente
Después de leer todas las respuestas anteriores una por una, no puedo evitar publicar eso
Sin embargo, la encapsulación es bastante clara desde arriba ->
wiki de referencia
fuente
Yo también estaba muy confundido acerca de los dos conceptos de abstracción y encapsulación. Pero cuando vi el artículo de abstracción en myjavatrainer.com, se me hizo evidente que la abstracción y la encapsulación son manzanas y naranjas, realmente no se pueden comparar porque ambas son necesarias.
La encapsulación es cómo se crea el objeto, y la abstracción es cómo se ve el objeto en el mundo exterior.
fuente
Encapsulación: datos vinculantes y los métodos que actúan sobre ellos. Esto permite ocultar datos de todos los demás métodos en otras clases. ejemplo:
MyList
clase que puede agregar un elemento y eliminar un elemento, y eliminar todos los elementos del métodosadd
,remove
yremoveAll
acto en la lista (una matriz privada) que no se puede acceder directamente desde el exterior.Abstracción: está ocultando el comportamiento y los datos no relevantes. La forma en que se almacenan, agregan o eliminan los elementos está oculta (abstraída). Mis datos pueden mantenerse en una matriz simple, ArrayList, LinkedList, etc. Además, la forma en que se implementan los métodos está oculta desde el exterior.
fuente
Encapsulación: imponiendo el acceso a los datos internos de manera controlada o evitando el acceso directo a los miembros.
Abstracción: ocultar los detalles de implementación de ciertos métodos se conoce como abstracción
Comprendamos con la ayuda de un ejemplo: -
ahora para abstracción, defina un método al que solo se pueda acceder y el usuario no sepa cuál es el cuerpo del método y cómo funciona. Consideremos el ejemplo anterior, podemos definir un área de método que calcule el área del rectángulo.
Ahora, cada vez que un usuario utiliza el método anterior, obtendrá el área, no de la forma en que se calcula. Podemos considerar un ejemplo del método println () solo sabemos que se usa para imprimir y no sabemos cómo imprime los datos. He escrito un blog en detalle. Puedes ver el siguiente enlace para obtener más información sobre abstracción y encapsulación.
fuente
Vale la pena señalar que estos términos tienen definiciones IEEE estandarizadas, que se pueden buscar en https://pascal.computer.org/ .
abstracción
ocultación de información
encapsulamiento
fuente