AnteriorPosterior

Tema 16g. Programación orientada a objetos (7)

  Curso: Curso de Pascal, por Nacho Cabanes

Curso de Pascal. Tema 16.7: Programación Orientada a Objetos (7).

Pero ¿qué ocurre si nuestra clase (objeto) tiene métodos virtuales? Entonces recordemos que era necesario un método constructor, que se ejecute antes que ningún otro.  En nuestro caso es evidente que nos conviene que el constructor sea el "init".

El programa queda ahora

 {--------------------------} 
 {  Ejemplo en Pascal:      } 
 {                          } 
 {    Objetos y punteros-2  } 
 {    OBJETOP2.PAS          } 
 {                          } 
 {  Este fuente procede de  } 
 {  CUPAS, curso de Pascal  } 
 {  por Nacho Cabanes       } 
 {                          } 
 {  Comprobado con:         } 
 {    - Free Pascal 2.2.0w  }
 {    - Turbo Pascal 7.0    } 
 {--------------------------}
 program ObjetosConPunteros2;
 uses crt;                            { Usaremos "GotoXY" y TextAttr }
 type                                { Aquí definimos nuestro objeto } 
   titulo = object 
     texto: ^string;                     { El texto que se escribirá }
     x,y : byte;                                   { En qué posición } 
     color: byte;                                  { El color, claro } 
     constructor init(TextoInicial: string);              { Inicializa } 
     procedure FijaCoords(nuevoX, nuevoY: byte);          { Pues eso } 
     procedure FijaTexto(mensaje: string);                    { Idem } 
     procedure FijaColores(pluma,fondo: byte);           { y lo otro } 
     procedure Escribe; virtual;                 { Lo escribe, claro } 
     procedure done;                                { Libera memoria } 
   end;
 { --- Desarrollo del objeto Titulo --- }
 constructor titulo.init(TextoInicial: string); 
 begin 
   new(texto);                         { Reservamos memoria } 
   texto^ := TextoInicial;             { Damos valor al texto } 
   x :=1 ; y := 1;                     { Coordenadas por defecto } 
   color := 7;                         { Gris sobre negro } 
 end; 
 
{ [...] }
{ (El resto no cambia). }
 

Tampoco hay problemas, ¿no?  Pues ahora vamos a rizar el rizo, y vamos a hacer que el propio objeto a su vez sea un puntero.  No voy a repetir el motivo por el que nos puede interesar, y voy a centrarme en los cambios.
 

Actualizado el: 08-07-2012 14:19

AnteriorPosterior