Universidad de Costa Rica
|
|
En esta tarea su trabajo consiste en retomar la
implementación de las clases "list
" y
"poly
" que usted programó en las tareas
anteriores
(#4 y
#5), para implementarlas de nuevo pero
usando
plantillas.
El cambio fundamental que tiene que realizar es sustituir el
archivo de encabezado "elem.h"
por el argumento de
plantilla
"template class <E>
":
/* list.h © YOYO.viejo.com */ #ifndef list_h #define list_h #include "elem.h" class list { class node { node *next; elem_t v; // valor }; node * _last; // ... }; #endif // list_h |
/* list.h © YOYO.nuevo.com */ #ifndef list_h #define list_h // ELIMINADO: #include "elem.h" template <class E> class list{ class node { node *next; E v; // valor "<E>" }; node * _last; // ... }; #endif // list_h |
Cuando usa plantillas, el
programador
cliente debe
instanciarlas,
usando un tipo de datos en el argumento paramétrico
"<E>
". En la implementación del
polinomio "poly
" hay que usar la clase
"term
" de pares (coef, deg)
para almacenar en una lista los monomios que conforman el
polinomio:
/* elem.h © YOYO.viejo.com */ #ifndef elem_h #define elem_h class elem_t { // nombre feo unsigned deg; float coef; // ... }; #endif // elem_h |
Sobra elem.h
|
/* poly.h © YOYO.viejo.com */ #ifndef poly_h #define poly_h #include "elem.h" #include "list.h" class poly { list LC; // ... }; #endif // poly_h |
/* poly.h © YOYO.nuevo.com */ #ifndef poly_h #define poly_h #include "list.h" class poly { class term { unsigned deg; float coef; // ... }; list<term> LC; // Lista de "term" // ... }; #endif // poly_h |
Luego de imprimir la documentación de su programa, y
entregarla en clase, envíe su trabajo a los
asistentes del curso por correo electrónico. Para
esto, haga un archivo empacado
.zip
cuyo nombre sea su número de carnet. Incluya en ese archivo
lo siguiente:
Después de la fecha de entrega del programa, puede usted instalar en su cuenta personal su solución (no instale antes su solución en Internet, pues en ese caso sería usted culpable de facilitar la copia de su trabajo, y en consecuencia se haría acreedor a la sanción respectiva).
|
Adolfo Di Mare <adolfo@di-mare.com>.
|