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

6
15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Respuestas a las preguntas y ejercicios http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap1010R.php 1/6 PASCAL CON FREE PASCAL 10. Introducción a la programación orientada a objetos I. 10.10. Respuestas a las preguntas y ejercicios . 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. 1. ¿ Qué es la Programación Orientada a Objetos ? La programación Orientada a Objetos, es un paradigma de programación, basado en identificar los objetos y la acción reciproca entre los mismos, que se presentan en un determinado problema. 2. ¿ Qué es un Objeto ? Es cualquier cosa real o abstracta , del cual siempre tenemos una idea particular que nos permite definir su aspecto y comportamiento . 3. ¿ Qué es una clase ? Es un tipo de objeto o una categoría de objetos. 4. ¿ Al usar la directiva de compilación {$mode objfpc}, que cambio tiene sobre el tipo de dato integer ? Este aumenta de tamaño de 2 a 4 bytes. 5. ¿ Qué son los atributos de una clase ? Son los campos de una clase que definen el aspecto de un objeto. 6. ¿ Qué son los métodos ? Son las funciones y procedimientos que definen el comportamiento de un objeto. 7. ¿ Cuál es la función de un constructor y un destructor ? Los constructores son los métodos que se encargan de crear un objeto en el montículo, y los destructores son los métodos que se encargan de retirarlos del montículo. 8. ¿ Cuál es el constructor y destructor predeterminado de toda clase ? Create y Destroy. 9. ¿ Qué es el Polimorfismo por sobrecarga ? Es la característica en la cual un objeto puede tener distinto comportamiento dependiendo de cual método se sobrecargue. 10. ¿ Qué es la Herencia ? La herencia es una característica, que permite que una clase nueva se puede crear a partir de otra existente. 11. ¿ Qué es el polimorfismo por sobreescritura ? LENGUAJES DE PROGRAMACIÓN Trabajo: Arca Continental 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 __ Respuestas a Las Preguntas y Ejercicios

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Respuestas a las preguntas y ejercicios

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­10R.php 1/6

PASCAL CON FREE PASCAL

 

 

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

10.10. Respuestas a las preguntas y ejercicios. 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.

 1.

 

¿ Qué es la Programación Orientada a Objetos ? La programación Orientada a Objetos, es un paradigma de programación, basado en identificar los objetos y la acciónreciproca entre los mismos, que se presentan en un determinado problema. 

2.

 

¿ Qué es un Objeto ? Es cualquier cosa real o abstracta, del cual siempre tenemos una idea particular que nos permite definir su aspecto ycomportamiento. 

3. 

¿ Qué es una clase ? Es un tipo de objeto o una categoría de objetos. 

4. 

¿ Al usar la directiva de compilación {$mode objfpc}, que cambio tiene sobre el tipo de dato integer ? Este aumenta de tamaño de 2 a 4 bytes. 

5. 

¿ Qué son los atributos de una clase ? Son los campos de una clase que definen el aspecto de un objeto. 

6. 

¿ Qué son los métodos ? Son las funciones y procedimientos que definen el comportamiento de un objeto. 

7.

 

¿ Cuál es la función de un constructor y un destructor ? Los constructores son los métodos que se encargan de crear un objeto en el montículo, y los destructores son losmétodos que se encargan de retirarlos del montículo. 

8. 

¿ Cuál es el constructor y destructor predeterminado de toda clase ? Create y Destroy. 

9.

 

¿ Qué es el Polimorfismo por sobrecarga ? Es la característica en la cual un objeto puede tener distinto comportamiento dependiendo de cual método sesobrecargue. 

10. 

¿ Qué es la Herencia ? La herencia es una característica, que permite que una clase nueva se puede crear a partir de otra existente. 

11. ¿ Qué es el polimorfismo por sobre­escritura ?

 

   LENGUAJES DE PROGRAMACIÓN   

     

 

Trabajo: Arca ContinentalAccede 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 __ Respuestas a Las Preguntas y Ejercicios

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Respuestas a las preguntas y ejercicios

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­10R.php 2/6

   Es la característica en la cual un objeto puede tener distinto comportamiento cuando se sobre­escribe el método de laclase padre. 

12.

 

¿ Qué es el polimorfismo por sobre­escritura por enlace posterior ? Es la característica en la cual un objeto puede tener distinto comportamiento cuando se sobre­escribe el métodovirtual de la clase padre. 

13. Termine de construir la clase TComplejo, y añada los métodos de las operaciones faltantes, sustracción, división ypotencia. Se recomienda usar la unidad math y para calcular la potencia de un número complejo, debe convertir elnúmero complejo a su representación polar

       

{$codepage utf8}{$mode objfpc}UNIT Complejos;INTERFACEUSES math;TYPE  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 Sustracion(n:TComplejo);    PROCEDURE Multiplicacion(n:TComplejo);virtual;    PROCEDURE Division(n:TComplejo);    PROCEDURE Cuadrado(n:TComplejo);    PROCEDURE Cuadrado;

    FUNCTION modulo:double;    FUNCTION argumento:double;

    PROCEDURE Potencia(n:integer);  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;

    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;

Page 3: Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __ Respuestas a Las Preguntas y Ejercicios

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Respuestas a las preguntas y ejercicios

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­10R.php 3/6

   

          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.Sustracion(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;

    PROCEDURE TComplejo.Division(n:TComplejo);      VAR aux:double;          PR,PI:double;      BEGIN       aux:=sqr(n.ObtReal)+sqr(n.ObtImag);       PR:=(((ObtReal*n.ObtReal)+(ObtImag*n.ObtImag))/aux);       PI:=(((ObtImag*n.ObtReal)‐(ObtReal*n.ObtImag))/aux);       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;

    FUNCTION TComplejo.modulo:double;     BEGIN      modulo:=sqrt(sqr(ParteReal)+sqr(ParteImag));     END;

 

Page 4: Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __ Respuestas a Las Preguntas y Ejercicios

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Respuestas a las preguntas y ejercicios

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­10R.php 4/6

    FUNCTION TComplejo.argumento:double;     BEGIN      argumento:=arctan2(ParteImag,ParteReal)     END;

    PROCEDURE TComplejo.Potencia(n:integer);     VAR rn:double;         PR:double;         PI:double;     BEGIN       rn:=modulo ** n;       PR:=rn*cos(argumento*n);       PI:=rn*sin(argumento*n);       ParteReal:=PR;       ParteImag:=PI     END;END.

    14.

 

Cree las siguientes clases:A) Una clase padre, al que se denominará TMatriz, que permite  implementar una matriz de mxn dimensiones, estaclase debe permitir  las siguientes operaciones adición, sustracción, multiplicación y multiplicación por un escalar deuna matriz.B) Un clase TMatrizCuadrada, que es una subclase de  la clase TMatriz, que tendrá  los métodos Determinante2x2 yDeterminante3x3, que permite calcular el determinante de una matriz de orden 2 y 3 dimensiones.

      A)

 

{$codepage utf8}{$mode objfpc}UNIT Matriz;INTERFACEUSES math;TYPE

  TMatriz=CLASS   PRIVATE    matriz:ARRAY OF ARRAY OF double;    filas,columnas:longint;   PUBLIC    CONSTRUCTOR Crear(m,n:longint);    FUNCTION ObtElemento(m,n:longint):double;    PROCEDURE PonerElemento(m,n:longint;k:double);    FUNCTION ObtFilas:longint;    FUNCTION ObtColumnas:longint;    PROCEDURE LLenar(m:ARRAY OF double);virtual;    PROCEDURE Mostrar(dec:byte=0);virtual;    PROCEDURE Adicion(n:TMatriz);    PROCEDURE Sustracion(n:TMatriz);    PROCEDURE Multiplicacion(n:TMatriz);    PROCEDURE Multiplicacion(k:double);  END;

IMPLEMENTATION

 CONSTRUCTOR TMatriz.Crear(m,n:longint);   BEGIN    filas:=m;    columnas:=n;    SetLength(matriz,m,n);  END;

 FUNCTION TMatriz.ObtElemento(m,n:longint):double;   BEGIN    ObtElemento:=matriz[m,n]   END;

 PROCEDURE TMatriz.PonerElemento(m,n:longint;k:double);   BEGIN     matriz[m,n]:=k   END;

 FUNCTION TMatriz.ObtFilas:longint;   BEGIN     ObtFilas:=filas   END;

 FUNCTION TMatriz.ObtColumnas:longint;   BEGIN    Obtcolumnas:=columnas   END;

 PROCEDURE TMatriz.LLenar(m:ARRAY OF double);  VAR i,j:longint;  BEGIN    FOR i:=0 TO filas‐1 DO     FOR j:=0 TO columnas‐1 DO       matriz[i,j]:=m[i*columnas+j]  END;

 PROCEDURE TMatriz.Mostrar(dec:byte=0);  VAR i,j:longint;  BEGIN

Page 5: Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __ Respuestas a Las Preguntas y Ejercicios

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Respuestas a las preguntas y ejercicios

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­10R.php 5/6

 

    FOR i:=0 TO filas‐1 DO     BEGIN       FOR j:=0 TO columnas‐1 DO  write(matriz[i,j]:5:dec,'  ');       writeln;     END;  END;

 PROCEDURE TMatriz.Adicion(n:TMatriz);  VAR i,j:longint;  BEGIN    IF ((n.ObtFilas=filas) AND (n.ObtColumnas=columnas)) THEN      BEGIN       FOR i:=0 TO filas‐1 DO        FOR j:=0 TO columnas‐1 DO          matriz[i,j]:=matriz[i,j]+n.ObtElemento(i,j)      END  END;

 PROCEDURE TMatriz.Sustracion(n:TMatriz);  VAR i,j:longint;  BEGIN    IF ((n.ObtFilas=filas) AND (n.ObtColumnas=columnas)) THEN      BEGIN       FOR i:=0 TO filas‐1 DO        FOR j:=0 TO columnas‐1 DO          matriz[i,j]:=matriz[i,j]‐n.ObtElemento(i,j)      END  END;

 PROCEDURE TMatriz.Multiplicacion(n:TMatriz);  VAR i,j,k:longint;      aux:TMatriz;  BEGIN    IF (columnas=n.ObtFilas) THEN      BEGIN        aux:=TMatriz.Crear(filas,n.obtcolumnas);        FOR i:=0 TO filas‐1 DO         FOR j:=0 TO n.obtcolumnas‐1 DO           BEGIN             aux.PonerElemento(i,j,0);             FOR k:=0 TO columnas‐1 DO             aux.PonerElemento(i,j,aux.ObtElemento(i,j)+matriz[i,k]*n.ObtElemento(k,j))          END;        Setlength(matriz,filas,n.obtcolumnas);        filas:=filas;        columnas:=n.obtcolumnas;        matriz:=aux.matriz;      END;  END;

 PROCEDURE TMatriz.Multiplicacion(k:double);  VAR i,j:longint;  BEGIN    FOR i:=0 TO filas‐1 DO     FOR j:=0 TO columnas‐1 DO       matriz[i,j]:=k*matriz[i,j]  END;

END.

     B)

 

{$codepage utf8}{$mode objfpc}UNIT MatrizCuadrada;INTERFACEUSES math,Matriz;TYPE

  TMatrizCuadrada=CLASS(TMatriz)    CONSTRUCTOR Crear(m:longint);    FUNCTION Determinante2x2:double;    FUNCTION Determinante3x3:double;  END;

IMPLEMENTATION

 CONSTRUCTOR TMatrizCuadrada.Crear(m:longint);   BEGIN    inherited Crear(m,m)  END;

 FUNCTION TMatrizCuadrada.Determinante2x2:double;  BEGIN    Determinante2x2:=0;    IF (obtfilas=2) AND (Obtcolumnas=2) THEN     BEGIN       Determinante2x2:=(ObtElemento(0,0)*ObtElemento(1,1))       ‐ (ObtElemento(0,1)*ObtElemento(1,0))     END;  END;

 FUNCTION TMatrizCuadrada.Determinante3x3:double;

Page 6: Conoce300 __ Pascal Con Free Pascal __ Introducción a La Programación Orientada a Objetos I __ Respuestas a Las Preguntas y Ejercicios

15/10/2015 Conoce300 :: Pascal con Free Pascal :: Introducción a la programación orientada a objetos I :: Respuestas a las preguntas y ejercicios

http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap10­10R.php 6/6

  BEGIN    Determinante3x3:=0;    IF (obtfilas=3) AND (Obtcolumnas=3) THEN     BEGIN      Determinante3x3:=+(ObtElemento(0,0)*ObtElemento(1,1)*ObtElemento(2,2))                       +(ObtElemento(0,1)*ObtElemento(1,2)*ObtElemento(2,0))                       +(ObtElemento(0,2)*ObtElemento(1,0)*ObtElemento(2,1))

                       ‐(ObtElemento(0,2)*ObtElemento(1,1)*ObtElemento(2,0))                       ‐(ObtElemento(0,0)*ObtElemento(1,2)*ObtElemento(2,1))                       ‐(ObtElemento(0,1)*ObtElemento(1,0)*ObtElemento(2,2));     END  END;

END.

      

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