Bueno, tal y como dije antes, tengo un verdadero problema con este programa y es que fui al examen de Junio sin saber lo que hacía en realidad y lo peor... cayó en el examen jejeje.
El problema es que no entiendo bien la Programación Orientada a Objetos y, a parte, este programa no me ayuda porque no me compila bien. El error está en la llamada a "Jugador1.Init(x);" desde el "Constructor Jugador2.Init". Ahí me da un error y por eso jamás he entendido la OOP. Luego, el profesor dijo que con esto sabríamos y controlaríamos mas o menos todo. Y para controlarlo mejor, que pongamos 'virtual' en los procedimientos, etc... pero jamás he podido porque no me compila.
El caso es que en el examen cayó el mismo código asi que, en teoría debería compilar. Me podéis ayudar??? Gracias!
El código:
program OOP;
type
Jugador1 = object
private
x_ : integer;
public
constructor Init(x : integer);
destructor Done;
procedure Visualizar;
end;
Jugador2 = object
private
y_ : integer;
public
constructor Init(x, y : integer);
destructor Done;
procedure Visualizar;
end;
{ ------------------------------- }
Constructor Jugador1.Init(x : integer);
begin
x_ := x;
writeln('Hola JUGADOR 1');
end;
{ ------------------------------- }
Destructor Jugador1.Done;
begin
write('Adios JUGADOR 1');
end;
{ ------------------------------- }
procedure Jugador1.Visualizar;
begin
write('Tipo Jugador1: ', x_);
end;
{ ------------------------------- }
Constructor Jugador2.Init(x, y : integer);
begin
Jugador1.Init(x);
y_ := y;
writeln('Hola JUGADOR 2');
end;
{ ------------------------------- }
Destructor Jugador2.Done;
begin
write('Adios JUGADOR 2');
Jugador1.Done;
end;
{ ------------------------------- }
procedure Jugador2.Visualizar;
begin
write('Tipo Jugador2: ', x_, y_);
end;
{ ------------------------------- }
var
a: ^Jugador2;
b: ^Jugador1;
c: array[1..2] of ^Jugador1;
begin
new(a, Init(1,2));
new(b, Init(100));
c[1] := a;
c[2] := b;
c[1]^.Visualizar;
c[2]^.Visualizar;
dispose(c[1], Done);
dispose(c[2], Done);
end.