Buenas, despues de rever la clase del jueves 16/09 me quedaron algunas dudas acerca del TP0, son las siguientes:
1) Implementando el mensaje que pedia devolver el primer producto que tenga estado := 'Asignado' me surgió la duda de si se puede mandar dos mensajes disintos a un mismo objeto en una linea de codigo. Ya que me sucedió que utilicé un iterador do para ver en que elemento de la coleccion se cumplia lo que expliqué antes, pero queria mandarle dos mensajes al objeto antes de devolverlo y no lo podia hacer. Igualmente vi que es mas facil usar detect para que me devuelva el elemento que yo queria y trabajar directamente con el, antes de hacerlo dentro del do
2) En la clase un chico preguntó por el significado concrecto del self y el profe respondió que era lo mismo que colocar el nombre de la clase en la que se estaba trabajando, pero yo no entendí bien la respuesta. Por ejemplo en el ejercicio de los celulares, en el initialize del motorola, se utliliza self recargar_bateria para que se inicialice en 5 la bateria de todos los objetos motorola, pero si cambio la palabra self por motorola (o sea el nombre de la clase) no le encuentro mucho sentido, le estoy mandando un mensaje al nombre de la clase, que no está asociado a ningun objeto, como es que funciona esto? Por lo que entiendo es como que el self hace referencia al objeto en el cual se esté trabajando en el momento, pero no me queda clara la idea.
Gracias!
Hola, Agustín:
1) Sí, se puede enviar más de un mensaje a un objeto en la misma línea. Esto es mediante el mensaje ;
, el cual ya hemos utilizado en el Transcript. También podés encontrar un ejemplo en la prueba 7 del TP0.5. Tené en cuenta que esto no siempre es conveniente,
ya que solo sirve para aquellos mensajes que devuelvan self (por defecto todos los mensajes devuelven self salvo que se indique lo contrario). En el caso que mencionás no es conveniente hacer esto.
2) La pseudovariable self
en realidad hace referencia a la instancia de la clase sobre la cual estás parado. Te permite poder enviar un mensaje al mismo objeto desde el cual estás, por ejemplo. Es análogo al this de otros lenguajes, como en Java (aunque
en Java también sirve para referenciar a los atributos, mientras que acá no hace falta).
Saludos,
Tomás