11.05.2013 Views

Guia Trabajos Practicos - Departamento de Computación ...

Guia Trabajos Practicos - Departamento de Computación ...

Guia Trabajos Practicos - Departamento de Computación ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Programación Orientada a Objetos Facultad <strong>de</strong> Ciencias Exactas - UBA<br />

^ super basicNew<br />

initialize;<br />

yourself<br />

Debe re<strong>de</strong>finirse el método <strong>de</strong> instancia initialize en cada clase para inicializar las variables <strong>de</strong> instancia<br />

<strong>de</strong>l objeto:<br />

initialize<br />

super initialize. “inicializa las variables heredadas”<br />

“inicializo las variables que yo <strong>de</strong>fino”<br />

…<br />

Hay muchas formas <strong>de</strong> hacer esto mal. Quizás el error más común es olvidar el ^:<br />

new<br />

super new<br />

initialize;<br />

yourself<br />

El resultado es que se retorna una clase cuando lo que se quiere es una instancia <strong>de</strong> la misma.<br />

Otro error es olvidar la inicialización <strong>de</strong> la superclase, como en:<br />

initialize<br />

“inicializo las variables que yo <strong>de</strong>fino”<br />

…<br />

El resultado es un objeto parcialmente inicializado.<br />

Otro error típico es crear un ciclo infinito escribiendo:<br />

new<br />

^ self new<br />

initialize;<br />

yourself<br />

Tener en cuenta que cuando se crear un objeto que necesita colaboradores para que el mismo tenga sentido,<br />

estos se <strong>de</strong>ben pasar en el mensaje <strong>de</strong> construcción e inicialización. Por ejemplo:<br />

Person class>>named: aString bornOn: aDate<br />

^self new initializeNamed: aString bornOn: aDate<br />

Person>> initializeNamed: aString bornOn: aDate<br />

name := aString.<br />

dateOfBirth := aDate.<br />

Material <strong>de</strong> lectura y trabajo guia 2011.doc Página 18

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

Saved successfully!

Ooh no, something went wrong!