Upload
margaritapereira
View
121
Download
0
Embed Size (px)
DESCRIPTION
Tutorial para crear clases genéricas en C++
Citation preview
• La Generalización permite construir clases bases que sean generales y puedan ser utilizadas por otras clases derivadas que se construyan posteriormente.
• La idea es que las clases bases generales se programen una sola vez y sean tratadas como una librería genérica, para evitar la redundancia.
• Ejemplo: Estudiante, Profesor, Empleado,.. son todos PERSONAS por lo tanto comparten algunas características comunes.
• Según lo anterior, deberíamos crear una clase base llamada MPersona (.h y .cpp)
• Si hacemos otro proyecto que trata de empleados de una compañía. Qué hacemos? Creamos otra carpeta para ese proyecto y copiamos allí MPersona.h y MPersona.cpp
• Al hacerlo así no estamos usando la misma copia de la clase MPersona... La estamos duplicando....
• INCONVENIENTE: si modificamos una copia de MPersona, las otras no se están modificando!!! Entonces estamos creando inconsistencia.
Suponga ahora que haremos un proyecto que trata de Estudiantes y Profesores. Qué hacemos? Creamos la carpeta para el proyecto y copiamos allí MPersona.h y MPersona.cpp
• SOLUCIÓN: colocar las clases genéricas en una carpeta común a todos los proyectos...
• Cada proyecto (todos los que hagan referencia a la clase base), apuntarán a la misma carpeta de librerías, permitiendo hacer modificaciones centralizadas...
Cuando modifique alguna librería centralizada, todos los proyectos que las usan podrán acceder a tales cambios, pero se hará cada cambio SÓLO 1 VEZ !
Qué debemos hacer para trabajar en forma ordenada con los proyectos y las clases genéricas ?????
2) Crear una carpeta para el proyecto. En ella se grabarán todos los archivos relacionados con el proyecto, salvo aquellos que sean de las clases genéricas, los cuales se elaboraran una sola vez pero podrán ser utilizados por todos los proyectos que los requieran.
• Crear una carpeta en un sitio fijo dentro del disco destinada para guardar todos los archivos que se refieran a clases genéricas. Sugerencia: Colocar a esa carpeta el nombre LibsGenericas.
1) Dentro del LibsGenericas pudiesen estar las clases VGeneral, MPersona y MArticulo cada una con su archivo .h y .cpp
2) Ajustar el proyecto que estamos programando ¿Cómo?
Siga la secuencia de pasos que se presentan a continuación:
Coloca el cursor sobre tu Proyecto y haz clic sobre
el botón derecho del ratón.
Selecciona Properties se encuentra al final de esta
ventana
Selecciona propiedades y luego
haz clic sobre C/C++ General
Selecciona path and symbol
Luego selecciona GNU C++
Selecciona Add…
Selecciona File system…
Ubica la ruta donde se encuentra la carpeta LibsGenericas
Presiona Apply y luego OK
Presiona Yes
Coloca nuevamente el cursor sobre tu Proyecto, haz clic en el botón derecho del ratón y selecciona New
Selecciona Folder
Selecciona Advanced >>
Desmarca la primera opción y marca la tercera
Coloca la ruta donde se encuentra la carpeta de las LibsGenericas
La carpeta LibsGenericas debe aparecer en tu proyecto.
El ajuste debe hacerlo en cada proyecto que
programe
Cada nuevo cambio a una librería no afecta a los proyectos anteriores que las usan.
Si quiere “actualizar” los proyectos anteriores con los nuevos cambios, sólo debe “recompilar” cada proyecto que use la librería.
Cuando recompila, cada proyecto ya tiene acceso a los cambios incorporados a la clase base.
• En situaciones complejas, es posible que algún cambio en una librería pueda afectar a los proyectos preexistentes, pero incluso frente a esto existen mecanismos que facilitan la generalización, como por ejemplo la sobrecarga de métodos (tema que no abordaremos en esta asignatura).