Tarea Número 2: Diferentes Implementaciones
de Conjuntos
Nota: En viar solución a cuenta elo326@elo.utfsm.cl
Esta fue una tarea en la que yo trabajé unos años atrás.
Espero que les resulte interesante y provechosa.
En esta tarea se explorará la inetracciones entre constructores,
operador asignación, destructores, y herencia.
Desarrolle cada uno de los siguientes pasos:
1) Baje los archivos de la tarea desde aqui
.
2) Los archivos sets.h, sets.cpp, and testsets.cpp conforman el primer programa.
Compílelo (Ej., g++ -g -o test1 sets.cpp testsets.cpp) y córralo.
Luego recompilelo con la variable de compilaci�n TREE. (Ej.,
g++ -g -o test2 -DTREE sets.cpp testsets.cpp) Corra esta versión.
3) ¿Por qué la versión TREE no funciona?
4) Modifique los archivos sets.h y sets.cpp de tal manera que la versión
TREE funciones correctamente.
5) El ofrecer diferentes implementaciones de una clase o tipo de dato abstracto
(ADT) es una situación común en bibliotecas. Una forma de hacerlo
es usar una clase base única para proveer la parte común de
la interface del ADT, y subclases en la que cada una se provee una diferente
estructura de dato para su implementación.
sets2.h y sets2.cpp muestran esta estrategia.
En teoría, uno puede escribir código ara manipular
el ADT y éste debería operar igualmente bien en todas las estructuras
de datos. testset2.cpp contiene ejemplos de tales códigos.
Trasfiera sus cambios del paso 4 en sets2.* Compile y corra
el programa basado en herencia.
6) ¿Por qué este nuevo programa no funciona corectamente?
7) Modifique testset2.cpp para que funcione correctamente.
------------------------
Ponga lo siguiente en su directorio a enviar con su solución:
1) Su modificada versión de sets.*, sets2.*, y testset*.cpp
No incluya ejecutables. No cambie los nombres de los archvios.
2) Un archivo RESPUESTAS.TXT con sus respuestas a la pregunta del
paso 3 y 6.
3) En esta tarea la calificación de sus respuestas corresponde
a la documentación. No entregue otro archivo de documentación
a parte del de respuestas.