Tutorial para crear_clases_genericas

Preview:

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).