Enciclopedia de Conocimientos Fundamentales
UNAM ˜ SIGLO XXI


regreso








5.4.3 Abstracción en programación

En la programación se utilizan dos tipos esenciales de abstracción: de control o de datos. La primera es la abstracción de acciones, mientras que la de datos se refiere a estructuras de datos, es decir, al modo en que éstos se organizan en la memoria de la computadora, la manera en que se relacionan y los mecanismos que se usarán para acceder a ellos.

Por ejemplo, la abstracción de control en el contexto de programación estructurada es el uso de subprogramas y flujos de control con formatos específicos. La abstracción de datos permite manejar detalles de éstos de manera significativa, y esto es la motivación principal detrás de los tipos de datos.

La computación ofrece independencia del mundo concreto; mientras el hardware implementa un modelo de computación que es intercambiable con otros, el software está estructurado en arquitecturas que permiten crear sistemas enormes concentrándose en unos cuantos asuntos a la vez. Estas arquitecturas utilizan diversos tipos de abstracción.

Una forma central de abstracción en computación es la del lenguaje: nuevos lenguajes son desarrollados para expresar aspectos específicos de un sistema —por ejemplo, lenguajes de modelado para apoyar la planeación. Los lenguajes de programación pueden ser procesados con una computadora. Algunas características de los lenguajes de programación permiten al programador crear nuevas abstracciones, que incluyen subrutinas, módulos y los componentes de software.

A principios del decenio de los ochenta del siglo pasado comenzó a cobrar relevancia un nuevo estilo de programación, rodeado de toda una serie de conceptos que le daban coherencia: la programación orientada a objetos. En este paradigma (marco conceptual) el software se modela mediante abstracciones, los objetos del mundo real involucrados en el problema que se pretende resolver con el programa. Las cualidades que se consideran relevantes de los objetos reales son mapeadas entonces en una serie de atributos de los objetos que "habitan" en el mundo abstracto del programa. En un programa de manejo del personal de una empresa, por ejemplo, una entidad de tipo persona poseería probablemente características como éstas: nombre, cargo, departamento al que pertenece en la empresa, monto de salario mensual que percibe, etc. En un programa de manejo de datos de un censo de población, en cambio, una persona podría poseer atributos como: edad, número de hijos, tipo de casa que habita, ingreso medio mensual, sexo, lugar de nacimiento; en un programa de estudio de variación genética podría poseer atributos como: color de ojos o de piel, tipo sanguíneo. En fin, los atributos del objeto en un programa pretenden representar las características que poseen los objetos reales que modelan y que influyen determinantemente en el problema que se pretende resolver.

Esta manera de concebir la programación, aunada a la tecnología, ha dado lugar a un desarrollo sustancial de lo que se puede hacer con los programas. En la década de los setenta hubiera sido impensable tener aplicaciones como las que conocemos hoy en día, y el desarrollo de aplicaciones con una fracción de la complejidad que poseen las actuales hubiera requerido muchos años más de diseño y programación de lo que requieren hoy.

Una de las ventajas evidentes de la abstracción usada en la programación orientada a objetos es que el hecho de abstraer procesos o comportamientos comunes a una colección de objetos diferentes da lugar a programar esas cosas comunes como parte de una plataforma sobre la que se montan luego todos los elementos que las comparten. Este concepto, que los ingenieros de software llaman reusabilidad de código, es impensable sin la abstracción que permite identificar lo común. El resultado obvio es que los programadores desarrollan cada vez menos cosas redundantes y, en la medida de lo posible, reutilizan códigos que ya han sido probados exhaustivamente en el pasado, lo que reduce los errores potenciales inherentes a rehacer las cosas una y otra vez con pequeñas variantes. En síntesis, se desarrollan sistemas de software en menor tiempo y con mejores garantías de calidad y confiabilidad.


Inicio de página