|
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 |