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

5
15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Parametros opcionales y uso de self http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1008Parametros%20opcionales%20y%20uso%20de%20self.php 1/5 PASCAL CON FREE PASCAL 10. Introducción a la programación orientada a objetos I. 10.8. Parametros opcionales y uso de self. 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. Los parámetros opcionales, son una característica que también se puede usar con los procedimientos y funciones, siempre y cuando se incluya la directiva {$mode objfpc}. Los parámetros opcionales en este capítulo se explicarán con métodos. Los parámetros opcionales nos permiten crear métodos en donde a un parámetro se le puede dar un valor predeterminado, para después usar el método con o sin el parámetro, ya que este parámetro es opcional. Para colocar un parámetro opcional este se debe colocar al final de la lista de parámetros, y colocar un valor después de la definición del tipo de dato con el símbolo igual. Ejemplo: TClase=Class Procedure MetodoA(var a:integer, b:integer=5) End; Los parámetros opcionales no pueden ser parámetros por referencia (var), En este ejemplo el métodoA, se puede usar del siguiente modo: Objeto.MetodoA(b); ó Objeto.MetodoA(b,7) Cuando se usan métodos con más de un parámetro opcional, no se pueden saltar algunos parámetros. Es decir si se define el siguiente método: TClase=Class Procedure Metodo(var a:integer; B:integer=1; c:char='x') End; Lo siguiente generará un error de compilación: Objeto.Metodo(b,,'f'); Cuando se usen parámetros opcionales con métodos sobrecargados es importante no hacer métodos ambiguos, por ejemplo considera la siguiente definición de métodos: TClase=Class procedure Metodo(a:real; B:integer = 0); procedure Metodo(a:real); End; El compilador compilará la clase y también permitirá la creación del objeto, pero cuando se intente usar el método: Objeto.Metodo(5) El compilador avisará de la inusual situación, para que se hagan los cambios pertinentes. Los parámetros opcionales se limitan a los tipos de datos Números Enteros, Booleanos, Caracteres, Reales, y el tipo de dato LENGUAJES DE PROGRAMACIÓN Trabaja en Sagarpa Accede a sus ofertas de empleo. Checa las vacantes y postúlate.

description

,m ,m ,m

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 __ Parametros Opcionales y Uso de Self

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Parametros opcionales y uso de self

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­08­Parametros%20opcionales%20y%20uso%20de%20self.php 1/5

PASCAL CON FREE PASCAL

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

10.8. Parametros opcionales y uso de self. 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.

Los parámetros opcionales, son una característica que también se puede usar con los procedimientos y funciones, siempre ycuando se incluya la directiva $mode objfpc.Los parámetros opcionales en este capítulo se explicarán con métodos. Los parámetros opcionales nos permiten crear métodosen donde a un parámetro se le puede dar un valor predeterminado, para después usar el método con o sin el parámetro, ya queeste parámetro es opcional. Para colocar un parámetro opcional este se debe colocar al final de la lista de parámetros, y colocarun valor después de la definición del tipo de dato con el símbolo igual. Ejemplo:

TClase=Class Procedure MetodoA(var a:integer, b:integer=5)End;

Los parámetros opcionales no pueden ser parámetros por referencia (var), En este ejemplo el métodoA, se puede usar delsiguiente modo:

Objeto.MetodoA(b); ó

Objeto.MetodoA(b,7) Cuando se usan métodos con más de un parámetro opcional, no se pueden saltar algunos parámetros. Es decir si se define elsiguiente método:

TClase=Class Procedure Metodo(var a:integer; B:integer=1; c:char='x')End;

Lo siguiente generará un error de compilación:

Objeto.Metodo(b,,'f'); Cuando se usen parámetros opcionales con métodos sobrecargados es importante no hacer métodos ambiguos, por ejemploconsidera la siguiente definición de métodos:

TClase=Class procedure Metodo(a:real; B:integer = 0); procedure Metodo(a:real);End;

El compilador compilará la clase y también permitirá la creación del objeto, pero cuando se intente usar el método:

Objeto.Metodo(5) El compilador avisará de la inusual situación, para que se hagan los cambios pertinentes.Los parámetros opcionales se limitan a los tipos de datos Números Enteros, Booleanos, Caracteres, Reales, y el tipo de dato

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 __ Parametros Opcionales y Uso de Self

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Parametros opcionales y uso de self

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­08­Parametros%20opcionales%20y%20uso%20de%20self.php 2/5

string. Los registros, Conjuntos, Enumerados, Subrangos, arreglos estáticos no están permitidos. En el caso de los punteros elúnico valor predeterminado que es posible asignar es nil.En el caso de los tipos de datos Pchar, PwideChar, AnsiString y UnicodeString estos se comportan como el tipo de dato string.En el caso de un arreglo dinámico, este debe definirse como un tipo de dato y usarlo como parámetro, pero sólo se le puedeasignar como valor predeterminado nil, ya que se le considera como un puntero. Ejemplo:

Type Tlista=array of integer; TClase=Class procedure Metodo(a:real; cad:ansistring='Hola';Lista:Tlista=nil); End;

Con respecto a los arreglos abiertos (open array), estos no se pueden usar como parámetros opcionales.En las clases que hemos estado desarrollando TComplejo y TReal, se tiene el método ObtCad, este tiene un parámetro, que nosindica la cantidad de decimales con el que nos debe mostrar el número, este parámetro puede ser un parámetro opcional, endonde el método se cambiaría por:

Function ObtCad(dec:integer=0):string; Este cambio se debe hacer en ambas clases TReal y TComplejo.Otro cambio que se puede hacer a la clase TComplejo, será sobrecargar el método cuadrado con uno sin parámetros, para ello sehará uso de la palabra reservada self. El nuevo método será:

Procedure TComplejo.Cuadrado;Begin Multiplicacion(self)End;

Este método sobrecarga al ya existente, y nos permite elevar al cuadrado el número actual colocado en el objeto, a diferencia delotro que eleva al cuadrado un número colocado en su parámetro.Para poder hacer este cambio, se hace uso de self, self es un parámetro oculto que es una referencia al objeto actual, todos losmétodos tienen este parámetro. Debido a que una clase puede ser instanciado por varios objetos, como por Ejemplo:

Var A,B,C : TComplejo Cuando se use el método cuadrado, self será reemplazado por A,B y C. cuando se ejecute el programa.A continuación, las clases TComplejo y TReal con los cambios indicados:

$codepage utf8$mode objfpcUNIT Complejos;INTERFACETYPE TComplejo = CLASS PRIVATE ParteReal,ParteImag:double; PUBLIC CONSTRUCTOR Crear(i:double); //Crea un imaginario puro CONSTRUCTOR Crear(r,i:double); FUNCTION ObtReal:double; FUNCTION ObtImag:double; PROCEDURE PonReal(n:double); PROCEDURE PonImag(n:double); FUNCTION ObtCad(dec:integer=0):string; FUNCTION PonCad(n:string):integer; PROCEDURE Adicion(n:TComplejo); PROCEDURE Multiplicacion(n:TComplejo);virtual; PROCEDURE Cuadrado(n:TComplejo); PROCEDURE Cuadrado; 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;

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;

Page 3: Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __ Parametros Opcionales y Uso de Self

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Parametros opcionales y uso de self

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­08­Parametros%20opcionales%20y%20uso%20de%20self.php 3/5

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

FUNCTION TComplejo.ObtCad(dec:integer=0):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 Writeln('Multiplicando con TComplejo'); PR:=(ObtReal*n.ObtReal)‐(ObtImag*n.ObtImag); PI:=(ObtReal*n.ObtImag)+(ObtImag*n.ObtReal); PonReal(PR); PonImag(PI) END;

PROCEDURE TComplejo.Cuadrado(n:Tcomplejo); BEGIN PonReal(n.obtReal);PonImag(n.ObtImag); Multiplicacion(n) END;

PROCEDURE TComplejo.Cuadrado; BEGIN Multiplicacion(self) END;END.

Page 4: Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __ Parametros Opcionales y Uso de Self

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Parametros opcionales y uso de self

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­08­Parametros%20opcionales%20y%20uso%20de%20self.php 4/5

Código fuente 24: Unidad Complejos con los métodos ObtCad con parametro opcional y el método Cuadrado con eluso de self.

$codepage utf8$mode objfpcUNIT Reales;INTERFACEUSES Complejos;TYPETReal = CLASS(TComplejo) CONSTRUCTOR Crear(r:double); FUNCTION ObtCad(dec:integer=0):string; PROCEDURE Multiplicacion(n:TComplejo);override; END;

IMPLEMENTATION CONSTRUCTOR TReal.Crear(r:double); BEGIN inherited Crear(r,0); END;

FUNCTION TReal.ObtCad(dec:integer=0):string; VAR p:string; BEGIN Str(ObtReal:0:dec,p); ObtCad := p END;

PROCEDURE TReal.Multiplicacion(n:TComplejo); BEGIN Writeln('Multiplicando con TReal'); PonReal(ObtReal*n.ObtReal) END;

END.

Código fuente 25: Unidad Reales con el método ObtCad con parametro opcional. Última revisión: 29/11/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

0Recomendar

Page 5: Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __ Parametros Opcionales y Uso de Self

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Parametros opcionales y uso de self

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­08­Parametros%20opcionales%20y%20uso%20de%20self.php 5/5

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.