Universidad de Costa Rica
|
|
1) [25 pts]
Ocultamiento y encapsulamiento
En su artículo sobre la interfaz OBDC, Beyer presenta un
truco para lograr el ocultamiento en el lenguaje C.
1.a) [15 pts] Explique, usando el truco de Beyer,
cómo implementar el tipo abstracto de datos
TMatriz
en C. Defina, sin escribir la
implementación, un par de métodos en su
discusión. Incluya en su respuesta tanto el contenido del
(los) archivo(s) de encabezado (.h
), como los de
implementación (.c
). Además, incluya un
pequeño módulo, usamatriz.c
, que use su
tipo TMatriz
.
1.b) [10 pts] Discuta si el truco de Beyer se puede usar en C++ o en Pascal (escoga sólo uno de los dos). Sustente su respuesta con un ejemplo de cómo hacerlo.
[Bey98] | Beyer, Malcom:
Encapsulating the ODBC API,
C/C++ User's Journal,
Vol.16, No.7,
pp [19, 20, 24, 26, 28, 30, 32, 34, 35],
Julio 1998.
|
2) [25 pts] Excepciones
+---+-------+ +->| n | sp |--+ | +---+-------+ | | | | | | +-------+ | +----| @sp |<---+ +-------+ |
TYPE TSelfPoint = OBJECT n : INTEGER; { Rep } pBlock : ^^TSelfPoint; { Rep } ... CONSTRUCTOR Init; DESTRUCTOR Done; ... END; { TSelfPoint } PROCEDURE Recursivo( n: INTEGER ); |
2.a) [0 pts] Defina el tipo TSelfPoint
, que
tiene la particularidad de que cada instancia incluye en su
Rep un puntero
(pBlock
) a un bloque de memoria en el que está
almacenado un
puntero que apunta
de vuelta a la instancia, como se muestra en el diagrama. Use su
lenguaje predilecto.
2.b) [10 pts] Implemente el procedimiento
Recursivo(n)
. Inclúyale un manejador de
excepciones. Puede usar la biblioteca de exepciones descrita en:
[DiM94] | Di Mare, Adolfo:
Manejo de excepciones en Turbo Pascal,
Reporte Técnico ECCI9410
(Revisión 4),
Proyecto 32689019,,
Escuela de Ciencias de la Computación e
Informática
(ECCI),
Universidad de Costa Rica
(UCR),
1994.
http://www.di-mare.com/adolfo/adt/except.htm
|
2.c) [15 pts] Use el procedimiento
Recursivo(n)
para mostrar por qué, cuando
ocurre una excepción, es necesario invocar los destructores
de los objetos. No está de más que en su respuesta
incluya un diagrama simple de la pila de ejecución del
programa.
3) [25 pts]
Uso de bibliotecas para acceso a archivos
ODBC representa una forma de accesar repositorios de datos desde
un programa, pero hay otras formas de hacer eso mismo.
3.a) [15 pts] Exponga una forma diferente a ODBC para accesar la memoria secundaria usada por un programa. No olvide escribir un poco de código para dar soporte a su respuesta.
3.b) [10 pts] Compare su respuesta a la pregunta anterior con la forma ODBC de hacer las cosas. Explique cuándo debe usarse una en lugar de la otra, y defina las ventajas y desventajas de cada una de ellas.
4) [25 pts] Abstracción y modularización
4.a) [15 pts] Defina los siguientes términos:
4.b) [10 pts] Escoja uno de los lenguajes Pascal, C o C++ y defina, en ese contexto, qué es un módulo. Describa un problema, o restricción, que comporta el uso de módulos en el lenguaje que Usted ha elegido.
Adolfo Di Mare <adolfo@di-mare.com>.
|