![]() |
Bienvenido a mis Tutorías
©
en la UNED
Tipos de Datos Módula-2 (Programación I) |
![]() |
DEFINITION MODULE Opacas; TYPE Opaca1; .... END Opacas. IMPLEMENTATION MODULE Opacas; TYPE .... Opaca1=POINTER TO AlgunTipo; .... END Opacas.De acuerdo con el libro básico de la asignatura, algunos compiladores sólo admiten que las variables opacas sean punteros. Su utilidad es ocultar el tipo que tiene la variable, y entonces sólo se pueden usar las funciones que ofrece el módulo correpondiente para operar con ellas. Tomemos el ejemplo anterior, en el que AlgunTipo es un registro con dos campos (Campo1, Campo2). Si se declara una variable de tipo Opaca1 (opaca:Opaca1), no se puede hacer: opaca^.Campo1, pues al ser opaca no se puede acceder a su tipo.
... TYPE TipoNoAnonimo=ARRAY [0..10] OF CHAR; VAR VarNoAnonima:TipoNoAnonimo; VarAnonima:ARRAY [0..10] OF CHAR;Las variables anónimas son aquellas que son de un tipo no simple, ARRAY, RECORD,... pero que se declaran indicando el tipo en el mismo momento de la declaración, y no declarando un tipo y después declarando la variable de ese tipo.
Frente a estos datos están las estructuras no acotadas, como las secuencias que se basan en punteros o los ficheros externos.
DEFINITION MODULE Fechas; TYPE Fecha=RECORD dia,mes,anyo:INTEGER; END; PROCEDURE SumaFechas(fecha1,fecha2:Fecha;VAR sumafecha:Fecha); (* Otras funciones que nos permiten operaciones con Fecha *)
DEFINITION MODULE Autor; PROCEDURE Leer; PROCEDURE Escribir; END Autor. IMPLEMENTATION MODULE Autor; VAR autor: ARRAY [0..20] OF CHAR; .... END Autor. MODULE Principal; IMPORT Autor; BEGIN Autor.Leer; Autor.Escribir; END Principal.Este esquema constituye una capsula que protege al dato, sólo se puede acceder a él usando las operaciones predefinidas y ninguna otra. Es importante observar que las operaciones que manejan el dato encapsulado no lo mencionan como argumento. Esta ténica es fácil de aplicar cuando queremos hacerlo con una sola variable. |
No dudes en escribir si tienes alguna pregunta sobre estos ejemplos
![]() abello ![]() |