stringtranslate.com

Tipo de datos opaco

En informática , un tipo de datos opaco es un tipo de datos cuya estructura de datos concreta no está definida en una interfaz . Esto impone la ocultación de la información , ya que sus valores solo se pueden manipular llamando a subrutinas que tienen acceso a la información faltante. La representación concreta del tipo se oculta a sus usuarios y la implementación visible está incompleta. Un tipo de datos cuya representación es visible se denomina transparente . [1] Los tipos de datos opacos se utilizan con frecuencia para implementar tipos de datos abstractos .

Ejemplos típicos de tipos de datos opacos incluyen los controladores de recursos proporcionados por un sistema operativo al software de aplicación . Por ejemplo, el estándar POSIX para subprocesos define una interfaz de programación de aplicaciones basada en una serie de tipos opacos que representan subprocesos o primitivos de sincronización como mutexes o variables de condición . [2]

Un puntero opaco es un caso especial de un tipo de datos opaco, un tipo de datos que se declara como un puntero a un registro o estructura de datos de algún tipo de datos no especificado. Por ejemplo, la biblioteca estándar que forma parte de la especificación del lenguaje de programación C proporciona funciones para la entrada y salida de archivos que devuelven o toman valores de tipo "puntero a " que representan secuencias de archivos (consulte Entrada/salida de archivos de C ), pero no se especifica la implementación concreta del tipo . [3]FILEFILE

Usos en varios idiomas

Algunos lenguajes, como C , permiten la declaración de registros opacos (structs), cuyo tamaño y campos están ocultos al cliente. Lo único que el cliente puede hacer con un objeto de este tipo es tomar su dirección de memoria , para producir un puntero opaco .

Si la información proporcionada por la interfaz es suficiente para determinar el tamaño del tipo, los clientes pueden declarar variables , campos y matrices de ese tipo, asignarles valores y, posiblemente, compararlos para determinar si son iguales. Este suele ser el caso de los punteros opacos.

En algunos lenguajes, como Java , el único tipo opaco que se proporciona es el puntero opaco. De hecho, en Java (y en varios otros lenguajes) los registros siempre se manejan a través de punteros.

Algunos lenguajes permiten tipos parcialmente opacos, por ejemplo, un registro que tiene algunos campos públicos , conocidos y accesibles para todos los clientes, y algunos campos ocultos que no se revelan en la interfaz. Estos tipos juegan un papel fundamental en la programación orientada a objetos .

La información que falta en la interfaz puede ser declarada en su implementación o en otra interfaz "solo para amigos". Esta segunda opción permite que la información oculta sea compartida por dos o más módulos.

Véase también

Referencias

  1. ^ Friedman, Daniel P. ; Wand, Mitchell ; Haynes, Christopher T. (2001). Fundamentos de lenguajes de programación (2.ª ed.). MIT Press. pág. 42. ISBN 978-0-262-06217-6.
  2. ^ Butenhof, David R. (1997). Programación con subprocesos POSIX . Addison-Wesley. pág. 31. ISBN. 978-0-201-63392-4.
  3. ^ Kernighan, Brian W. ; Ritchie, Dennis M. (1988). El lenguaje de programación C (2.ª ed.). Prentice Hall. ISBN 0-13-110362-8.