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".{--------------------------} { 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