Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __...
description
Transcript of Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __...
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 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 sobreescritura Compatibilidad entre objetos.10.6. Encapsulación (Private, Strict private,Protected, Strict Protected, Public).10.7. Polimorfismo por sobreescritura 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.
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 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;
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 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 ReconocimientoNoComercial 3.0 Unported License.
0Recomendar