Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __...

3
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/Cap1004Sobrecarga%20de%20metodosPolimorfismo%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 a Objetos?. 10.2. Un programa de ejemplo. 10.3. Constructores y Destructores. 10.4. Sobrecarga de métodos Polimorfismo por sobrecarga. 10.5. Herencia Polimorfismo por sobreescritura Compatibilidad entre objetos. 10.6. Encapsulación (Private, Strict private, Protected, Strict Protected, Public). 10.7. Polimorfismo por sobreescritura con enlace posterior. 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 de funciones y procedimientos, pero en este caso se usa con métodos y constructores , los destructores no se pueden sobrecargar ya que sólo debe haber uno por clase. Para sobrecargar métodos y constructores, estos sólo se deben diferenciar en la cantidad de parámetros o en el uso de parámetros con tipos de datos diferentes y usar el mismo nombre . También se puede usar la palabra reservada overload, pero esto no es necesario y sólo se mantiene por compatibilidad con delphi. Gracias a la sobrecarga de métodos, una clase puede tener distinto comportamiento dependiendo de cual método sobrecargado se use, a esta característica se le conoce como Polimorfismo por sobrecarga. La palabra Polimorfismo viene de la capacidad que tiene una clase de cambiar su comportamiento. En el caso del polimorfismo por sobrecarga, el cambio del comportamiento de una clase se define sobrecargando 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 Sagarpa Accede a sus ofertas de empleo. Checa las vacantes y postúlate.

description

jb ,bm

Transcript of Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __...

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