Download - Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __ Sobrecarga de Métodos - Polimorfismo Por Sobrecarga

Transcript
Page 1: Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __ Sobrecarga de Métodos - Polimorfismo Por Sobrecarga

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Sobrecarga de métodos ­ Polimorfismo por sobrecarga

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­04­Sobrecarga%20de%20metodos­Polimorfismo%20por%20sobrecarga.php 1/3

PASCAL CON FREE PASCAL

 

 

  10. Introducción a la programación orientada a objetos I. 

10.4. Sobrecarga de métodos ­ Polimorfismo por sobrecarga. anterior :: indice :: siguiente 10.1. ¿Qué es la programación Orientada aObjetos?.10.2. Un programa de ejemplo.10.3. Constructores y Destructores.10.4. Sobrecarga de métodos ­ Polimorfismo porsobrecarga. 

 

10.5. Herencia ­ Polimorfismo por sobre­escritura­ Compatibilidad entre objetos.10.6. Encapsulación (Private, Strict private,Protected, Strict Protected, Public).10.7. Polimorfismo por sobre­escritura con enlaceposterior.

 

10.8. Parametros opcionales y uso de self.10.9. Preguntas y ejercicios.10.10. Respuesta a las preguntas y ejercicios.

 La sobrecarga de métodos es muy parecida a  la sobrecarga de  funciones,  tal como se explico en el capítulo 6.5  sobrecarga  defunciones y procedimientos, pero en este caso se usa con métodos y constructores, los destructores no se pueden sobrecargar yaque sólo debe haber uno por clase. Para sobrecargar métodos y constructores, estos sólo se deben diferenciar en  la cantidad deparámetros o en el uso de parámetros con tipos de datos diferentes y usar el mismo nombre. También se puede usar  la palabrareservada  overload,  pero  esto  no  es  necesario  y  sólo  se  mantiene  por  compatibilidad  con  delphi.  Gracias  a  la  sobrecarga  demétodos, una clase puede tener distinto comportamiento dependiendo de cual método sobrecargado se use, a esta característicase  le conoce como Polimorfismo por sobrecarga. La palabra Polimorfismo viene de  la capacidad que tiene una clase de cambiarsu  comportamiento.  En  el  caso  del  polimorfismo  por  sobrecarga,  el  cambio  del  comportamiento  de  una  clase  se  definesobrecargando los métodos necesarios para lograr el polimorfismo.El siguiente ejemplo es la unidad Complejos, al cual se le ha añadido un nuevo constructor Crear que sobrecarga el ya existente,este nuevo constructor permite crear un número imaginario puro, Ejemplo: 

{$codepage utf8}{$mode objfpc}UNIT Complejos;INTERFACE

TYPE  TComplejo = CLASS    ParteReal,ParteImag:double;    CONSTRUCTOR Crear(i:double); //sobrecargado, crea un imaginario puro    CONSTRUCTOR Crear(r,i:double); //sobrecargado    FUNCTION ObtReal:double;    FUNCTION ObtImag:double;    PROCEDURE PonReal(n:double);    PROCEDURE PonImag(n:double);    FUNCTION ObtCad(dec:integer):string;    FUNCTION PonCad(n:string):integer;    PROCEDURE Adicion(n:TComplejo);    PROCEDURE Multiplicacion(n:TComplejo);  END;

IMPLEMENTATION

    CONSTRUCTOR TComplejo.Crear(i:double);      BEGIN        ParteReal:=0;        ParteImag:=i      END;

    CONSTRUCTOR TComplejo.Crear(r,i:double);      BEGIN        ParteReal:=r;        ParteImag:=i;      END;

 

   LENGUAJES DE PROGRAMACIÓN   

     

 

Trabaja en SagarpaAccede a sus ofertas de empleo.Checa las vacantes y postúlate.

Page 2: Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __ Sobrecarga de Métodos - Polimorfismo Por Sobrecarga

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Sobrecarga de métodos ­ Polimorfismo por sobrecarga

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­04­Sobrecarga%20de%20metodos­Polimorfismo%20por%20sobrecarga.php 2/3

 

    FUNCTION TComplejo.ObtReal:double;      BEGIN        ObtReal:=ParteReal      END;

    FUNCTION TComplejo.ObtImag:double;      BEGIN        ObtImag:=ParteImag      END;

    PROCEDURE TComplejo.PonReal(n:double);      BEGIN        ParteReal:=n;      END;

    PROCEDURE TComplejo.PonImag(n:double);      BEGIN        ParteImag:=n      END;

    FUNCTION TComplejo.ObtCad(dec:integer):string;      VAR aux1,aux2,p:string;      BEGIN        p:='';          Str(ParteReal:0:dec,aux1);          Str(ParteImag:0:dec,aux2);        IF ParteImag>=0 THEN p:='+';          ObtCad := aux1 + p +  aux2 + 'i';      END;

      FUNCTION TComplejo.PonCad(n:string):integer;      VAR aux:string;          p,i,error:integer;          PR,PI:string;          encontro:boolean;      BEGIN       aux:=n;       ParteReal:=0;       ParteImag:=0;       error:=0;       IF (aux[length(aux)]='i') AND (NOT(aux[length(aux)‐1]IN['0'..'9']))          THEN aux:=Copy(aux,1,length(aux)‐1)+'1i';       IF aux[length(aux)]='i' THEN         BEGIN           delete(aux,length(aux),1);           IF aux[length(aux)] IN ['0'..'9']              THEN BEGIN                     i:=length(aux);                     encontro:=FALSE;                     p:=0;                     WHILE (NOT encontro) AND (i>1) DO                      BEGIN                       IF (aux[i]='+') OR (aux[i]='‐')                         THEN BEGIN                               encontro:=TRUE;                               p:=i                              END;                       i:=i‐1                      END;                     PR:=Copy(aux,1,p‐1);                     delete(aux,1,p‐1);                     PI:=aux;                     Val(PR,ParteReal,error);                     Val(PI,ParteImag,error);                     IF error<>0 THEN                       BEGIN                         ParteReal:=0;                         ParteImag:=0                       END                   END;         END       ELSE        BEGIN         Val(aux,ParteReal,error);        END;       PonCad:=error      END;

    PROCEDURE TComplejo.Adicion(n:TComplejo);      BEGIN        PonReal(ObtReal+n.ObtReal);        PonImag(ObtImag+n.ObtImag)      END;

    PROCEDURE TComplejo.Multiplicacion(n:TComplejo);      VAR PR,PI:double;      BEGIN       PR:=(ObtReal*n.ObtReal)‐(ObtImag*n.ObtImag);       PI:=(ObtReal*n.ObtImag)+(ObtImag*n.ObtReal);       PonReal(PR);         PonImag(PI)      END;

 

Page 3: Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __ Sobrecarga de Métodos - Polimorfismo Por Sobrecarga

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Sobrecarga de métodos ­ Polimorfismo por sobrecarga

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­04­Sobrecarga%20de%20metodos­Polimorfismo%20por%20sobrecarga.php 3/3

END.

  Código fuente 7: Unidad Complejos con el cosntructor Crear sobrecargado. El siguiente programa hace uso de la unidad Complejos con los constructores sobrecargados: 

 

{$codepage utf8}{$mode objfpc}USES Complejos;VAR A,B:TComplejo;

BEGIN   A:=TComplejo.Crear(10,4);   B:=TComplejo.Crear(1);   Writeln('A=',A.ObtCad(0));   Writeln('B=',B.ObtCad(0))END.

  Código fuente 8: Uso de la unidad complejos con los constructores sobrecargados. Última revisión: 16/06/2013. 

Tweet 0

 anterior :: indice :: siguiente

  

 

  SUGERENCIAS

 

 "Agradezco  que  se  tomen  su  tiempo,  para  escribirme  una  sugerencia.  Toda  sugerencia  que  meescriba me ayuda a mejorar los contenidos de la web acorde a sus necesidades. Las sugerencias, serecibirán  siempre  y  cuando  ingrese  al  menos  su  nombre  o  seudónimo  y  la  sugerencia.  Lassugerencias son de uso interno y no serán publicadas en la web Conoce3000" Nombre o seudónimo :

Correo Electrónico :

Sugerencias :

     Deseo recibir una copia del mensaje.    Enviar

      

  

PORTADA    |    LIBROS    |    APUNTES    |    ARTÍCULOS 

 

Todos los textos, imágenes y videos de Conoce3000 estan colocados bajo una licencia :Creative Commons Reconocimiento­NoComercial 3.0 Unported License.

 

0Recomendar