Onceava clase
10 de Agosto, 2020
¿Qué vimos hoy?
Así como en funcional teníamos funciones y en lógico teníamos reglas lógicas, como sugiere el nombre, en esta parte de la materia vamos a estar trabajando con objetos. Empecemos creando un objeto simple:
Tenemos a Poroto, el perro de una familia 🐕. Por lo pronto tenemos la siguiente información acerca de Poroto: tiene 4 años y 100 de energía (porque todos los perros necesitan energía para hacer cosas, claro). Entonces, vamos a decir que poroto tiene como atributos edad y energía.
object poroto {
var energia = 100
var edad = 4
}
¿Y qué podemos hacer con poroto? Por ahora no mucho 😅. Estaría bueno que sepa hacer más cosas, como jugar. ¿Y cómo hacemos que poroto juegue? 🤔 Se lo tenemos que decir (poroto, jugá! 🗣️) y la forma que tenemos para decirle a un objeto que haga algo es enviándole un mensaje, y esto se hace así:
poroto.jugar()
Los mensajes siempre son enviados a un objeto y son la manera de comunicarnos con los mismos.
Si corremos el código anterior, ¿qué pasa?
ERROR: poroto does not understand jugar() (line: 4)
💥
Claro, le dijimos a poroto que juegue, pero nunca le “enseñamos” cómo hacerlo 👨🏫👩🏫. De alguna forma le tenemos que decir qué es lo que queremos que haga cuando le digamos que juegue, y esto lo hacemos con lo que llamamos un método. Repasando: un método es lo que un objeto hace cuando le enviamos un mensaje particular. Enseñémosle entonces a poroto a jugar. Vamos a querer que cuando poroto juegue, su energía baje 20 unidades. Esto en el código se escribe así: 👨💻👩💻
object poroto {
var energia = 100
var edad = 4
method jugar() {
energia = energia - 20 // o energia -= 20
}
}
Buenísimo, ahora que poroto sabe jugar, enviemosle el mensaje de nuevo.
Ahora queremos ver si su energía cambió, por lo que deberíamos preguntarle a poroto cuál es su energía. Para esto vamos a tener que declarar un getter.
method energia() {
return energia
}
Si quisiéramos cambiarla, haríamos un setter:
method energia(unaEnergia) {
energia = unaEnergia
}
Este tipo de métodos en los que accedemos al valor de un atributo o lo modificamos se llaman accessors. No es necesario que todos los atributos tengan los suyos, sólo aquellos que los necesitan.
Ahora, vamos a crear otro objeto: vamos a crear al dueño de poroto, Billy. De Billy conocemos su edad, su comida favorita, su energía y su mascota.
Sabemos que Billy puede jugar con poroto, entonces podemos hacer un método que sea jugarConMascota
, el cual haga que Billy pierda 50 de energía (se cansa más rápido que su perro) y también hace que poroto juegue.
object billy {
var edad = 12
const comidaFavorita = "asado"
var energia = 200
var mascota = poroto
method jugarConMascota() {
energia -= 50
mascota.jugar()
}
method mascota() {
return mascota;
}
}
Como vemos acá, Billy le está mandando un mensaje a su mascota, que en este caso es poroto. Billy le dijo a su mascota jugá y Poroto jugó. Ahora agregamos a Mandy que tiene como mascota a su perra Sally que empieza con la misma energía y edad que poroto y pierde la misma energía al jugar. Hacemos que mandy juegue con su mascota dejando a Sally con el mismo estado que Poroto.
object mandy {
var edad = 15
const comidaFavorita = "milanesa"
var energia = 200
var mascota = sally
method jugarConMascota() {
energia -= 30
mascota.jugar()
}
method mascota() {
return mascota;
}
}
object sally {
var energia = 100
var edad = 4
method jugar() {
energia = energia - 20
}
}
Links útiles:
Y saber mas sobre nosotros acá