11.07.2015 Views

Herencia (III) Herencia (III) Ejemplo de Herencia

Herencia (III) Herencia (III) Ejemplo de Herencia

Herencia (III) Herencia (III) Ejemplo de Herencia

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Herencia</strong> (<strong>III</strong>)<strong>Ejemplo</strong> <strong>de</strong> <strong>Herencia</strong>: implementación <strong>de</strong> los métodosClass Alumno : public Persona{private:int curso;public:Alumno(char * , int = 0, char *, char * , int );Alumno& operator=( Alumno &);~Alumno ();// Destructorint mcurso ();void mcurso (int );};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;}3<strong>Herencia</strong> (<strong>III</strong>)<strong>Ejemplo</strong> <strong>de</strong> <strong>Herencia</strong> : Implementación <strong>de</strong> los métodosClass Alumno : public Persona{private:int curso;public:Alumno(char * , int = 0, char *, char * , int );Alumno& operator=( Alumno &);~Alumno ();// Destructorint mcurso ();void mcurso (int );};int Alumno :: mcurso (){return curso;}void Alumno :: mcurso (int c){curso = c ;}4


<strong>Herencia</strong> (<strong>III</strong>)Re<strong>de</strong>finición <strong>de</strong> métodosTenemos <strong>de</strong>finido un método mostrar() para la clase Alumno, y seráéste el que se ejecute cuando se le pase el mensaje mostrar a un objeto<strong>de</strong> la clase Alumno.void Persona :: mostrar(){cout


<strong>Herencia</strong> (<strong>III</strong>)Prueba <strong>de</strong> la clase Alumno y Personavoid Persona :: mostrar(){cout


<strong>Herencia</strong> (<strong>III</strong>)Ejecución <strong>de</strong> los pasos <strong>de</strong> mensajes con <strong>Herencia</strong>void Persona :: mostrar(){cout


<strong>Herencia</strong> (<strong>III</strong>)Ejecución <strong>de</strong> los pasos <strong>de</strong> mensajes con <strong>Herencia</strong>void main(){Alumno alum (“77777R”, 20, “Ana” , “Ruiz”, 3 );alum . pasarCurso( ) ;}El método pasarCurso( ) NO está <strong>de</strong>finido en la clase Alumno, NI enla superclase Persona, por lo que se pue<strong>de</strong> <strong>de</strong>cir que el objeto alum noentien<strong>de</strong> el mensaje.El mensaje pasarCurso( ) no se pue<strong>de</strong> vincular con ningún método.Error <strong>de</strong> compilación (vinculación estática).15<strong>Herencia</strong> (<strong>III</strong>)Tipos <strong>de</strong> vinculaciónVinculación estática: se trata <strong>de</strong>l intento <strong>de</strong> vincular elmensaje con el método correspondiente en tiempo <strong>de</strong>compilación.(Si se produce error <strong>de</strong> vinculación, será en tiempo <strong>de</strong>compilación)Vinculación dinámica: la vinculación entre mensaje ymétodo se realiza en tiempo <strong>de</strong> ejecución.(Si se produce error <strong>de</strong> vinculación, será en tiempo <strong>de</strong>ejecución)16


<strong>Herencia</strong> (<strong>III</strong>)Problemas con la vinculaciónvoid Persona :: felizCumple(){edad ++ ;cout


<strong>Herencia</strong> (<strong>III</strong>)<strong>Ejemplo</strong>:class Figura{public:void dibujar(){ cout

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!