Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CONTENIDOS 1. Completar el ejemplo de Herencia: Superclase Persona-Subclase Alumno 2. Redefinicin de mtodos. 3. Jerarqua de clases. 4. Ejecucin de los pasos de mensajes con Herencia. 5. Problemas con la vinculacin de mensajes. 6. Funciones virtuales. 7. Clases Abstractas.
Clase Persona
Clase Alumno
Alumno & Alumno :: operator = ( Alumno a) { Persona :: operator = (a); curso = a.curso; return *this; }
Alumno :: Alumno (char * n, int e, char * nom, char * ape , int c ) : Persona (n, e, nom, ape) { curso = c; }
Class Alumno : public Persona { private: int curso; public: Alumno(char * , int = 0, char *, char * , int ); Alumno& operator=( Alumno &); ~Alumno (); // Destructor int mcurso (); void mcurso (int ); };
Clase Persona
Clase Alumno
Heredado
class Persona { private: ... public: Persona(char * , int = 0, char *, char * ); . void mostrar() ; . };
void main() { Persona p1(89411N, 33, Luis, Fernan); Alumno alum (77777R, 20, Ana , Ruiz, 3 ); }
alum p1
89411N 33 edad nombre nif 77777R 20 Ana edad nombre nif
Luis
Fernan apellido
void main() { Persona p1(89411N, 33, Luis, Fernan); Alumno alum (77777R, 20, Ana , Ruiz, 3 ); p1.mostrar( ); alum .mostrar( ) ; }
p1
89411N 33 Luis edad nombre nif
alum
77777R 20 Ana edad nombre nif
Fernan apellido
Alumno
Secretarias
Profesor
Ingeniero
Tcnico
Asociado
Permanente
Diagrama UML
Doctor
Licenciado
10
Alumno
Secretarias
Profesor
Ingeniero
Tcnico
Asociado
Permanente
Doctor
Licenciado
Cada clase de la jerarqua, debe implementar todas las caractersticas que son comunes a todas sus subclases. Cada subclase debe contemplar nicamente las peculiaridades que la distinguen de su superclase.
11
FIN
Existe ??
NO
SI
SI
ERROR !!
12
void main() { Alumno alum (77777R, 20, Ana , Ruiz, 3 ); alum . mostrar( ) ; }
El mtodo mostrar( ) est definido en la clase Alumno, por lo que se ejecuta dicho mtodo.
El mtodo pasarCurso( ) NO est definido en la clase Alumno, NI en la superclase Persona, por lo que se puede decir que el objeto alum no entiende el mensaje. El mensaje pasarCurso( ) no se puede vincular con ningn mtodo. Error de compilacin (vinculacin esttica).
15
Herencia (III) Tipos de vinculacin Vinculacin esttica: se trata del intento de vincular el mensaje con el mtodo correspondiente en tiempo de compilacin. (Si se produce error de vinculacin, ser en tiempo de compilacin) Vinculacin dinmica: la vinculacin entre mensaje y mtodo se realiza en tiempo de ejecucin. (Si se produce error de vinculacin, ser en tiempo de ejecucin)
16
void main() { Alumno alum (77777R, 20, Ana , Ruiz, 3 ); alum . felizCumple( ) ; }
FELICIDADES !!!
Los mtodos virtuales se encuentran en las superclases. Si la clase Alumno no tiene subclases, no es necesario que el mtodo mostrar() sea virtual.
Elipse
Paralelogramo
Circulo
Rectngulo Cuadrado
Romboide Rombo
19
20
class Cuadrado : public Rectangulo { public: float area (); float perimetro(); { return base*4; } };
Figura
Elipse
Rectngulo
Romboide
Circulo
Cuadrado
Rombo
21
class Cuadrado : public Rectangulo { public: float area (); float perimetro(); { return base*4; } };
22