11.05.2013 Views

La Cara Oculta de Delphi 6

La Cara Oculta de Delphi 6

La Cara Oculta de Delphi 6

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

40 <strong>La</strong> <strong>Cara</strong> <strong>Oculta</strong> <strong>de</strong> <strong>Delphi</strong> 6<br />

Si la asignación a := b es correcta, a es una variable <strong>de</strong>l tipo <strong>de</strong> interfaz X, y b es<br />

un puntero <strong>de</strong> interfaz <strong>de</strong> tipo Y, entonces la interfaz Y es igual a X, o es un <strong>de</strong>scendiente<br />

directo o indirecto <strong>de</strong> X.<br />

Tiempo <strong>de</strong> vida<br />

Antes <strong>de</strong> seguir con las reglas <strong>de</strong> compatibilidad <strong>de</strong> tipos, programemos un pequeño<br />

ejemplo, para mostrar un comportamiento <strong>de</strong> <strong>Delphi</strong> que pue<strong>de</strong> sorpren<strong>de</strong>r. Inicie<br />

una nueva aplicación, y añádale una unidad como la siguiente:<br />

unit Animales;<br />

interface<br />

type<br />

IAnimal = interface<br />

procedure Hablar;<br />

end;<br />

TVaca = class(TInterfacedObject, IAnimal)<br />

<strong>de</strong>structor Destroy; overri<strong>de</strong>;<br />

procedure Hablar;<br />

end;<br />

implementation<br />

uses Dialogs;<br />

<strong>de</strong>structor TVaca.Destroy;<br />

begin<br />

ShowMessage('¡Me han matado!');<br />

inherited Destroy;<br />

end;<br />

procedure TVaca.Hablar;<br />

begin<br />

ShowMessage('¡Muuu!');<br />

end;<br />

end.<br />

Luego, añada un botón en la ventana principal y programe su evento OnClick <strong>de</strong> la<br />

siguiente manera:<br />

procedure TwndPrincipal.Button1Click(Sen<strong>de</strong>r: TObject);<br />

var<br />

I: IAnimal;<br />

begin<br />

I := TVaca.Create;<br />

I.Hablar;<br />

end;<br />

No parece que sea muy complejo: la llamada al constructor <strong>de</strong> TVaca crea un objeto<br />

<strong>de</strong> esa clase y <strong>de</strong>vuelve una referencia al mismo. Como TVaca implementa la interfaz<br />

IAnimal, se pue<strong>de</strong> asignar esa referencia directamente en una variable <strong>de</strong> este último<br />

tipo. Finalmente, llamamos al método Hablar a través <strong>de</strong>l puntero a la interfaz. Nada

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!