Práctica 3. - Web del Profesor

Anuncio
Práctica III
Objetivos Generales.
•
Tipos de Datos Abstractos.
Funciones Virtuales.
Clases paramétricas (templates),
Implantación del TDA cadena.
•
Implantación del TDA pila paramétrica.
•
•
•
Objetivos Especificos.
•
Implantar sendas clases a partir de los tipo de dato abstracto cadena
y pila.
•
La clase pila debe ser implantada como clase paramétrica.
Desarrollo de la Práctica.
•
Un tipo de datos abstracto implantado en C++ consiste básicamente
de una interfaz con funciones virtuales puras. Esto indica que en las
siguientes clases, el tipo de dato abstracto debe ser refinado.
1) Implantación de la Clase Cadena.
class CadenaBase {
protected:
char * strCnt;
int size;
public: CadenaBase(char * _str, int _sz)
{
strCnt = new char[_sz];
for (int i=0; i<_sz; i++)
strCnt[i] = _str[i];
}
// Estas serán las funciones a implantar:
virtual CadenaBase& subcadena(int inicio, int cuenta) = 0;
virtual void operator += (CadenaBase &) = 0;
~CadenaBase (){ delete [] strCnt; }
};
2) Implantación de la Clase Pila paramétrica.
Una clase paramétrica es una clase en donde al menos uno de los tipos
de datos llega a estar definidos solo en tiempo de compilación. Por ello,
las clases paramétricas no son parte de las bibliotecas de funciones.
Estas clases están definidas en los archivos cabecera y serán incluidos
cada vez que vayan a ser utilizados.
La interfaz de la clase paramétrica pila será:
template <class TipoElemento>
class PilaBase {
T * ptrCnt;
int size;
public:
PilaBase(int size)
{ ptrCnt = new T[size]; }
virtual void push (T &) = 0;
virtual T pop() = 0;
~PilaBase()
{ delete [] ptrCnt; }
};
Descargar