# data[].attributes.headline
Abstracción y ocultamiento de información

# data[].attributes.subject
Abstracción y ocultamiento de información

# data[].attributes.body
Vinculado al concepto de separar las propiedades de un objeto a través de una operación mental

# data[].attributes.body
La abstracción no es más que extraer solo información relevante de vastos datos, mientras que la ocultación de datos es un proceso en el que los datos se esconden. El propósito de la abstracción es reducir o disminuir la complejidad del programa, mientras que el propósito de ocultar datos es lograr la propiedad de encapsulación.

# data[].attributes.body
En programación, una abstracción es una manera de reducir la complejidad y permitir un diseño e implementación más eficientes en sistemas de software complejos. Oculta la dificultad técnica de los sistemas detrás de APIs más simples.

# data[].attributes.body
La abstracción permite estudiar complejos sistemas usando un método jerárquico en sucesivos niveles de detalle. Así, un sistema se puede descomponer en distintos módulos. Dado que nuestra intención es manejar en un instante el menor número de características , cada módulo debería exportar la menor cantidad de información siempre que con ello permita al resto de los módulos realizar su labor de forma sencilla y correcta.

# data[].attributes.headline
Importancia en la Ingeniería de Software

# data[].attributes.subject
Importancia en la Ingeniería de Software

# data[].attributes.body
La abstracción y el ocultamiento de informacion son dos conceptos fundamentales en la ingeniería de software. El tener la capacidad de representar un sistema complejo de manera simplificada permite a los desarrolladores centrarse en aspectos más importantes del sistema y asi evitar complejidad. Por otro lado, el ocultamiento de información es la práctica de ocultar los detalles de implementación de un sistema, lo que permite cambiar la implementación sin afectar a otros componentes del sistema.

Aplicar estos dos conceptos nos permitirá crear sistemas complejos que sean fáciles de entender y mantener.

# data[].attributes.body
Encapsulamiento:

Técnica: Agrupa los datos y los métodos que operan sobre esos datos en una unidad única llamada clase. Los detalles internos de la clase están ocultos al mundo exterior.

Beneficios: Mejora la modularidad y facilita el mantenimiento y la evolución del código.

# data[].attributes.body
Principio de Mínimo Conocimiento (Law of Demeter):

Guía: Un objeto debe tener conocimiento limitado sobre otros objetos; solo debería interactuar directamente con sus amigos más cercanos.

Beneficios: Reduce las dependencias y acoplamientos, promoviendo la ocultación de información.

# data[].attributes.body
Abstracción por Capas:

Heurística: Divide tu sistema en capas con interfaces bien definidas. Cada capa representa un nivel de abstracción y solo interactúa con las capas adyacentes.

Beneficios: Facilita la comprensión y mantenimiento al proporcionar una jerarquía clara.

# data[].attributes.body
Complejidad en la depuración: Ocultar información sin ser necesario y abusar de la abstracción dificulta la identificación y corrección de errores.

Desempeño: Capas extra de abstracción pueden afectar el rendimiento de la aplicación, generando posible sobrecarga.

Dificultad para entender el código existente: La abstracción excesiva dificulta la comprensión, especialmente para nuevos desarrolladores.

Costo de mantenimiento: El ocultamiento de información puede aumentar los costos a largo plazo al hacer que las actualizaciones sean más complicadas.

Dificultad en la colaboración: Un alto nivel de abstracción complica la colaboración, ya que cada miembro del equipo puede interpretar las abstracciones de manera diferente.

# data[].attributes.body
Seguridad: El ocultamiento de información puede mejorar la seguridad de un sistema al limitar el acceso a los datos sensibles.

Flexibilidad: El ocultamiento de información y la abstracción, ambos usados correctamente, pueden permitir cambios en la implementación de un sistema sin afectar a otros componentes del mismo.

Mantenibilidad: El ocultamiento de información, al igual que la abstracción, puede facilitar la identificación y corrección de errores en un sistema.

# data[].attributes.body
Acevedo Muñoz, S. E. (2008). Desarrollo de Capas de Abstracción para Mejorar la Eficiencia en la Construcción de Aplicaciones Web J2EE. Chile. Recuperado el 14 de noviembre de 2023

Capdevilla, A. (s.f.). Encapsulamiento en programación. Recuperado el 14 de noviembre de 2023, de Encapsulamiento en programación: https://albertcapdevila.net/encapsulamiento-programacion/

Gardey, A., & Pérez Porto, J. (15 de Diciembre de 2021). Definición de abstracción. Recuperado el 13 de Noviembre de 2023, de Definición De: https://definicion.de/abstraccion/

Garrido, A. (27 de abril de 2018). Abstracción en Programación. Recuperado el 13 de noviembre de 2023, de La web del programador.

Hernández, V. (3 de Marzo de 2017). Coding or not. Recuperado el 13 de noviembre de 2023, de POO: abstracción y encapsulamiento: https://codingornot.com/02-poo-abstraccion-y-encapsulamiento

Lozano, J. A. (2020). Abstracción y encapsulamiento. Unidades de Apoyo para el Aprendizaje. CUAIEED/Facultad de Ingeniería-UNAM. Recuperado el 14 de noviembre de 2023 : https://uapa.cuaieed.unam.mx/sites/default/files/minisite/static/60ca9387-f41f-4a12-aec9-bb4705651e87/UAPA-abstraccion-encapsulamiento/index.html

MDN contributors. (18 de julio de 2023). Mozilla. Recuperado el 13 de noviembre de 2023, de Mozilla: Abstracción: https://developer.mozilla.org/es/docs/Glossary/Abstraction

Navarro Pliego, E. (1995). Programación orientada a objetos con C++. En E. Navarro Pliego. CDMX, México: UNAM. Recuperado el 13 de noviembre de 2023

Otero, J. (s.f.). Opinion Duel. Recuperado el 13 de Noviembre de 2023, de Opinion Duel: https://opinionduel.com/informatica/diferencia-entre-abstraccion-y-ocultacion-de-datos/

# data[].attributes.attachment_link.provider_name
Unidades de Apoyo para el Aprendizaje - CUAIEED - UNAM

# data[].attributes.attachment_link.readable_text
Coordinación de Universidad Abierta, Innovación Educativa y Educación a Distancia de la UNAM. ©Todos los derechos reservados 2022. Hecho en México. Este sitio puede ser reproducido con fines no lucrativos, siempre y cuando no se mutile, se cite la fuente completa y su dirección electrónica, de otra forma, se requiere permiso previo por escrito de la Institución.

Al navegar en este sitio, encontrará contenidos diseñados por académicos de la UNAM, denominados Recursos Educativos Abiertos (REA), disponibles para todo el público en forma gratuita. Los contenidos de cada REA son responsabilidad exclusiva de sus autores, y de las entidades académicas a las que están adscritos quienes los desarrollan. Asimismo, los REA no tienen impedimento en materia de propiedad intelectual; ni contienen información que por su naturaleza pueda considerarse confidencial y reservada.

Los REA podrán ser utilizados sin fines de lucro, citando invariablemente la fuente y sin alterar la obra, respetando los términos institucionales de uso y los derechos de propiedad intelectual de terceros. Si desea más información, escriba a proyectos@cuaieed.unam.mx

Abstracción y Encapsulamiento por Jorge Alberto Solano Gálvez, Rocío Azucena Sánchez Olguín se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

# data[].attributes.attachment_link.authors[].name
Jorge Alberto Solano Gálvez, Rocío Azucena Sánchez Olguín

# data[].attributes.attachment_link.description
Aplicar la abstracción en el diseño de clases que integran una solución, utilizando el encapsulamiento para proteger la información y ocultar la implementación.