Guia Trabajos Practicos - Departamento de Computación ...
Guia Trabajos Practicos - Departamento de Computación ...
Guia Trabajos Practicos - Departamento de Computación ...
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