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 obliga a ocultar la información , ya que sus valores solo pueden manipularse llamando a subrutinas que tienen acceso a la información faltante. La representación concreta del tipo está oculta a sus usuarios y la implementación visible es incompleta. Un tipo de datos cuya representación es visible se llama transparente . [1] Los tipos de datos opacos se utilizan con frecuencia para implementar tipos de datos abstractos .
Los ejemplos típicos de tipos de datos opacos incluyen identificadores 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 varios tipos opacos que representan subprocesos o primitivas de sincronización como mutex 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 FILE
" que representan flujos de archivos (ver entrada / salida de archivos C ), pero el FILE
no se especifica la implementación concreta del tipo . [3]
Usos en varios idiomas
Algunos lenguajes, como C , permiten la declaración de registros opacos (estructuras), cuyo tamaño y campos quedan ocultos al cliente. Lo único que puede hacer el cliente 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, asignar sus valores y posiblemente compararlos por igualdad. Este suele ser el caso de los punteros opacos.
En algunos lenguajes, como Java , el único tipo de tipo opaco proporcionado es el puntero opaco. De hecho, en Java (y en varios otros lenguajes) los registros siempre se manejan mediante 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 declararse 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.
Ver también
Referencias
- ^ Friedman, Daniel P .; Varita, Mitchell ; Haynes, Christopher T. (2001). Fundamentos de los lenguajes de programación (2ª ed.). Prensa del MIT. pag. 42. ISBN 978-0-262-06217-6.
- ^ Butenhof, David R. (1997). Programación con hilos POSIX . Addison-Wesley. pag. 31. ISBN 978-0-201-63392-4.
- ^ Kernighan, Brian W .; Ritchie, Dennis M. (1988). El lenguaje de programación C (2ª ed.). Prentice Hall. ISBN 0-13-110362-8.