encapsulation - example - polymorphism
Abstraction VS Information Ocultar EncapsulaciĆ³n VS (18)
Después de leer todas las respuestas anteriores, una por una, no puedo dejar de publicar eso
la abstracción implica la facilidad de definir objetos que representan "actores" abstractos que pueden realizar un trabajo, informar y cambiar su estado y "comunicarse" con otros objetos en el sistema.
La encapsulación es bastante clara desde arriba, sin embargo ->
El término encapsulación se refiere al ocultamiento de detalles de estado, pero extender el concepto de tipo de datos de los lenguajes de programación anteriores para asociar el comportamiento más fuertemente con los datos, y estandarizar la forma en que interactúan los diferentes tipos de datos, es el comienzo de la abstracción.
wiki referencia
¿Puede decirme 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 detallada y la información que oculta 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 obtener varias citas tomadas de there .
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 ocultamiento de información" . Estoy volviendo a publicar una versión ligeramente ampliada y reformateada de la actualización del PO, ya que debería ser una respuesta por derecho propio.
(Todas las citas se toman del artículo mencionado anteriormente).
Abstracción:
"Un punto de confusión con respecto a la abstracción es su uso como proceso y como entidad. La abstracción, como proceso, denota la extracción de los detalles esenciales sobre un elemento, o un grupo de elementos, mientras se ignoran los detalles inesenciales. Abstracción, como entidad, denota un modelo, una vista u otra representación enfocada para un elemento real ".
Ocultación de información:
"Su interfaz o definición fue elegida para revelar lo menos posible sobre su funcionamiento interno". - [Parnas, 1972b]
"La abstracción puede usarse [...] como una técnica para identificar qué información debe ocultarse".
"La confusión puede ocurrir cuando las personas no pueden distinguir entre el ocultamiento de la información y una técnica (por ejemplo, abstracción) que se utiliza para ayudar a identificar qué información debe ocultarse".
Encapsulación:
"Se refiere a construir una cápsula, en el caso de una barrera conceptual, alrededor de una colección de cosas". - [Wirfs-Brock y otros, 1990]
"Como proceso, encapsulación significa el acto de encerrar uno o más elementos dentro de un contenedor. [...] La encapsulación, como una entidad, se refiere a un paquete o un recinto que contiene (contiene, encierra) uno o más elementos".
"Si la encapsulación fuera ''lo mismo que la ocultación de información'', entonces uno podría argumentar que ''todo lo que estaba encapsulado también estaba oculto''. Esto obviamente no es cierto ".
Conclusión:
"La abstracción, la ocultación de información y la encapsulación son conceptos muy diferentes, pero muy relacionados. Se podría argumentar que la abstracción es una técnica que nos ayuda a identificar qué información específica debe ser visible y qué información debe ocultarse. La encapsulación es entonces la técnica para empaquetar la información de manera que se oculte lo que debe ocultarse y se haga visible lo que se pretende que sea visible ".
El significado de abstracción dado por el Oxford English Dictionary (OED) más cercano al significado pretendido 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''.
El ocultamiento de información es el principio de que los usuarios de un componente de software (como una clase) necesitan conocer solo 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 deberían ocultarse .
Entonces no es abstracción VERSUS ocultar información. Es información que oculta VIA abstracción.
Encapsulación: el enlace 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 desde el uso o desde la vista se llama abstracción. ex: int x; no sabemos cómo int funcionará internamente. pero sabemos que int funcionará eso es abstraccion
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 problemas de clústeres y fragmentación. (La abstracción normalmente aparece como clases o subrutinas).
El ocultamiento de información se trata de proteger sus abstracciones de usuarios malintencionados / incompetentes. Al restringir el control de algún estado (asignaciones de discos duros, por ejemplo) al desarrollador original, grandes cantidades de manejo de errores se vuelven redundantes. Si nadie más, además del 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 son private
palabras clave private
y protected
en los lenguajes OO).
La abstracción oculta detalles de la implementación tal como la pones.
Extraes algo hasta un punto lo suficientemente alto como para que solo tengas que hacer algo muy simple para realizar una acción.
La ocultación de información oculta detalles de implementación. La programación es difícil. Puede tener muchas cosas para manejar y manejar. Puede haber variables que quiera / necesite mantener muy cercanas. Ocultar información asegura que nadie accidentalmente rompe algo al usar una variable o método expuesto públicamente.
Estos 2 conceptos están estrechamente vinculados en la programación orientada a objetos.
Para abstraer algo, necesitamos ocultar el detalle o para ocultar el detalle de algo, necesitamos abstraerlo. Pero, ambos se pueden lograr mediante encapsulación.
Entonces, ocultar información es un objetivo, la abstracción es un proceso y la encapsulación es una técnica.
Por favor no complique conceptos simples.
Encapsulación : el empaquetado de datos y métodos en una sola unidad es 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 here
PD: También recuerdo la definición de un libro llamado C ++ por Sumita Arora que leemos en la clase 11;)
Solo agregue más detalles sobre InformationHiding , found Este enlace es realmente una buena fuente con ejemplos
InformationHiding es la idea de que una decisión de diseño debe ocultarse del resto del sistema para evitar el acoplamiento involuntario. InformationHiding es un principio de diseño. InformationHiding debe informar la forma en que encapsula las cosas, pero , por supuesto, no tiene por qué ser así .
La encapsulación es una característica del lenguaje de programación.
Ve a la fuente! Grady Booch dice (en Object Oriented Analysis and Design, página 49, segunda edición):
La abstracción y la encapsulación son conceptos complementarios: 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 ... la encapsulación se logra a menudo mediante el ocultamiento de información, que es el proceso de ocultar todos los secretos del objeto que no contribuyen a sus características esenciales.
En otras palabras: abstracción = el objeto externamente; encapsulación (lograda a través del ocultamiento de información) = el objeto internamente,
Ejemplo: en .NET Framework, la clase System.Text.StringBuilder
proporciona una abstracción sobre un buffer 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ómo el StringBuilder
realiza un seguimiento interno de cosas tales como el puntero al búfer y la administración de la memoria cuando el búfer se llena (lo cual ocurre con la encapsulación ocultando información).
rp
Ver la publicación de Joel sobre la ley de las abstracciones con fugas
Básicamente, el resumen le da la libertad de pensar en conceptos de nivel superior. Una analogía que no es de programación es que la mayoría de nosotros no sabemos de dónde viene nuestra comida, o cómo se produce, pero el hecho de que nosotros (por lo general) no tengamos que preocuparnos nos libera para hacer otras cosas, como programación.
En cuanto a la ocultación de información, estoy de acuerdo con jamting.
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 claro que la abstracción y la encapsulación son manzanas y naranjas, no se pueden comparar porque se requieren ambas.
La encapsulación es la forma en que se crea el objeto, y la abstracción es cómo se ve el objeto en el mundo exterior.
Abstraction
oculta los detalles de implementación al proporcionar una capa sobre la funcionalidad básica.
Information Hiding
oculta los datos que se ven afectados por esa implementación. El uso de private
y public
viene bajo esto. Por ejemplo, ocultando las variables de las clases.
Encapsulation
simplemente agrupa todos los datos y funciones similares en un grupo, p Class
Ej. Class
en programación; Packet
en redes.
Mediante el uso de Clases, implementamos los tres conceptos: Abstraction
, Information Hiding
y Encapsulation
Abstracción: la abstracción es el concepto / técnica utilizada para identificar lo que debería ser la vista externa de un objeto. Haciendo que solo la interfaz requerida esté disponible.
Ocultar información: es complementario a la abstracción, ya que a través de la ocultación de la información se logra la abstracción. Ocultando todo lo demás excepto la vista externa.
Encapsulación: es el enlace de datos y funciones relacionadas en una unidad. Facilita la abstracción y la ocultación de información. Permitir que funciones como el acceso de miembro se apliquen en la unidad para lograr ocultación de abstracción e información
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 encerrar 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.
Abstracción
La abstracción es un acto de representar los detalles del essentail sin incluir los detalles del fondo. Una clase abstracta solo tiene firmas de método y la implementación de clase puede tener su propia implementación, de esta manera los detalles complejos estarán ocultos para el usuario. La abstracción se centra en la vista exterior. En otras palabras, Abstracción es la separación de las interfaces de la implementación real.
Encapsulación
La encapsulación explica el enlace de los miembros y métodos de datos en una sola unidad. La ocultación de la 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 los miembros de la clase se hacen privadas para que no se pueda acceder directamente al mundo exterior. La encapsulación se enfoca en la vista interna. En otras palabras, la encapsulación es una técnica utilizada para proteger la información en un objeto del otro objeto.
Abstracción simplemente significa la técnica en la que solo los detalles esenciales del software se hacen visibles para el usuario para ayudar al usuario a usar u operar con software, por lo que los detalles de implementación de ese software no se muestran (se vuelven 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 detalles del programa) se hizo visible y algunos no visibles para el usuario, por lo que la encapsulación se logra ocultando 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.
Encapsulación: datos de enlace y los métodos que actúan sobre él. esto permite ocultar datos de todos los demás métodos en otras clases. ejemplo: clase MyList
que puede agregar un elemento, eliminar un elemento y eliminar todos los elementos que los métodos add
, remove
y removeAll
actúan en la lista (una matriz privada) a la 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, y así sucesivamente. Además, cómo se implementan los métodos está oculto desde el exterior.