Tarea Número 1: Diferentes Implementaciones de Conjuntos


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 necesarios (sets.h, sets.cpp posiblemente) 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 correctamente?

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.