Yo mismo: el self

En el ejercicio anterior vimos que un objeto (en este caso, pepucha) le puede enviar mensajes a otro que conozca (en este caso, ciudades como rosario, buenosAires o cordoba):

Probablemente el método te quedó parecido a esto:

method volarHacia(destino) {
  energia = energia - (ciudad.kilometro() - destino.kilometro()).abs() / 10
  ciudad = destino
}

Está bien, pero un poco extenso y difícil de entender: un método hace muchas cosas. ¿Cuál es la solución a este problema? ¡Partir el problema en subproblemas, obvio!

Esto se conoce como delegar una responsabilidad, o simplemente, delegar. Se trata de detectar tareas más pequeñas en las cuales descomponer una solución más compleja, identificar los objetos responsables de realizarlas y enviarles los mensajes correspondientes. Es lo que hacemos todos cuando tenemos que hacer algo difícil: le pedimos a alguien que nos ayude.

En este caso, una tarea más pequeña que podemos delegar es el cálculo de distancia desde la ciudad actual hasta el destino. Un método que se encargue de consultar los kilómetros, hacer la resta, obtener el valor absoluto y retornarlo.

Pero antes de hacerlo, tenemos que determinar qué objeto va a asumir dicha responsabilidad, es decir, va a tener declarado un método que lo haga. ¿A quién te parece que pepucha le puede pedir ayuda? Las opciones son los objetos que tenemos, en este caso la misma pepucha y las diferentes ciudades, o declarar uno nuevo.

Empecemos plantando que pepucha sea la responsable y hagamos un método para calcular la distancia a volar:

  method distancia(destino) {
    return (ciudad.kilometros() - destino.kilometros()). abs() 
  }

Y ahora, al declarar el metodo volarHasta(destino) necesitamos representar que pepucha se manda un mensaje a sí misma para calcular la distancia:

  method volarHacia(destino) {
    energia = energia - self.distancia(destino) / 10
    ciudad = destino
  }

Como se ve, la forma en que un objeto delega un mensaje a él mismo , es utilizar la referencia self como objeto receptor del mensaje. En este contexto, self es pepucha.

  • Primero, comprobá que funcione lo anterior.
  • Después, declará en pepucha un nuevo método volarALaCapital() que sin recibir parámetro haga que pepita vuele a Buenos Aires. Hacelo sin repetir lógica.
¡Dame una pista!

Para no volver a escribir la misma porción de código que ya está definida, te recomendamos utilizar self y alguno de los métodos anteriores.

Tenés que iniciar sesión antes de empezar a enviar tus soluciones