martes, 23 de octubre de 2012

Sopica de pollo

Ayer ocurrió un hecho que sirvió como punto de inflexión en lo que viene a ser "Mi vida fuera de la casa de mi madre", entendiendo "vida" como un periodo de tiempo largo, sin tamaño determinado, y, por lo tanto, sin fecha de finalización conocida..

Ayer... llamé a mi madre para pedirle la receta de la sopica de pollo. Sí, señores, sí. Como lo oís. Ese elixir divino imprescindible cuando estás resfriado, de resaca, o simplemente con la mesa camilla viendo películas asquerosas un domingo por la tarde.
Cuando vine a Málaga confiaba tardar más en echar de menos los platos maternos. Pero no. Apenas mes y medio ha sido suficiente para lanzarme al teléfono, lápiz en mano, dispuesto a emular las dotes culinarias de mi madre.

Tengo que decir que esta receta es fácil. Para qué nos vamos a engañar. La he conseguido hacer yo, y además ha salido buenísima, así que cualquier lector capaz de distinguir un cuchillo de una sartén puede hacerlo.


Receta después del salto...

jueves, 20 de septiembre de 2012

[JAVA] Constructor & overridable methods

El otro día nos topamos en un curso de Java con uno de esos errores que, si no te das cuenta o no estás muy fino ese día, puedes tirarte bastante tiempo para solucionarlo. Como tardamos bastante en encontrar algún ejemplo o explicación buena de por qué ocurría eso, voy a explicarlo aquí. Se trata de un warning que se muestra en NetBeans pero que Eclipse, por alguna extraña razón, omite.
Warning: Overridable method call in constructor.

Indica que en un contructor no deberíamos llamar a métodos que se puedan sobrescribir. Es decir, solo deberíamos hacer llamadas a métodos static, private o final. Desde que estoy programando en Java es lo que me habían dicho. De hecho, creo que en C++ también decían que las funciones de los constructores debían ser privadas. Si lo pensamos bien, las funciones que se llaman en los constructores suelen ser de configuración, por lo que es lógico que sean privadas.



¿Pero qué pasa si llamamos a una clase sobrescribible dentro de un constructor?

Vamos a tener tres clases en este ejemplo: la clase Principal, que tendrá el main y solo sirve para llamar a las demás; la clase Persona, y la clase Nino, que heredará de persona (Es Niño, pero como sabéis, la ñ no se lleva muy bien con la informática).

Cada vez que creamos a una persona o un niño queremos contabilizarlo. Para ello usamos dos variables estáticas de la clase Principal, y llamamos a la función "contabilizar" en los constructores de ambas clases para que se contabilicen solos. Como veis, tampoco me he comido mucho el tarro :)

Esta es la clase Persona, la que tiene el error. La función contabilizar no debería ser default.
package jevyanj;

public class Persona {
 
 public Persona(){
  contabilizar();
 }
  
 void contabilizar(){
  Principal.personas += 1;
  System.out.println("Se ha añadido una persona.");
 }
}


Aquí está la clase Nino, que hereda de Persona. Y como quiere contabilizarse también, sobreescribe el método contabilizar con su propio código.
package jevyanj;

public class Nino extends Persona{

 public Nino(){
  contabilizar();
 }
 
 void contabilizar(){
  Principal.ninos += 1;
  System.out.println("Se ha añadido un niño");
 }
}


Y aquí la clase Principal, que crea una persona y un niño y muestra el recuento.
package jevyanj;

public class Principal {

 public static int personas;
 public static int ninos;

 public static void main(String[] args) {
  personas = 0;
  ninos = 0;
  
  Persona p = new Persona();
  Nino n = new Nino();
  
  System.out.println("\n Recuento:");
  System.out.println("\tPersonas: " + personas + "\n\tNiños: " + ninos);
 }
}


Bien, la ejecución de este código da como resultado esto:

Se ha añadido una persona.
Se ha añadido un niño
Se ha añadido un niño
 Recuento:
Personas: 1
Niños: 2


¿Hay una sola persona y dos niños? Si hemos creado una persona y un niño, debería ser al revés, puesto que un niño es una persona.

¿Qué está fallando?
La razón es que el método "contabilizar" no es privado, por lo que la clase Niño (o cualquier otra clase que herede de Persona) puede sobrescribirlo. El constructor de la clase Niño llama al de la clase Persona, por definición de herencia, y éste llama a la función contabilizar, pero está sobrescrita. Así que ejecuta el código "contabilizar" de Niño dos veces cuando se crea un nño, una por Persona y otra en el propio constructor de Niño, en vez de una vez para cada clase.

En resumen, cuando llamas al constructor de la clase que hereda y éste llama al constructor de la clase heredara, se ejecuta código de la clase que hereda en ambos casos.

¿Solución?
Hacer el método "contabilizar" sea privado, estático o final. En definitiva, no sobrescribible. De esta forma, aunque se llamaran igual los métodos, cada clase tendría el suyo propio sin sobrescribir nada. Y el resultado de ejecutar el programa sería el correcto:
Se ha añadido una persona.Se ha añadido una persona.Se ha añadido un niño Recuento: Personas: 2 Niños: 1

La conclusión podría ser: todo lo que puedas poner privado, déjalo privado ;)


PD: dudas, errores y consejos en los comentarios.

jueves, 9 de agosto de 2012

Propósitos de Año Lectivo Nuevo. Conclusiones.

Estamos al final del calendario lectivo y vuelvo para hacer resumen de mis PALM (Propósitos de Año Lectivo Nuevo). Me hubiera gustado que entre esa entrada y ésta hubiera un número considerable de entradas, pero este año he estado poco escritor, como se puede ver. No me lo tengáis en cuenta, los que me siguen en twitter saben que sigo vivo de 140 en 140 caracteres.

Pero bueno. Al lío.


Continúa después del salto...

martes, 4 de octubre de 2011

Actualizando La Biblia

Dios - Tío, acabo de terminar mi programa SolarSystem. Ya podemos meterlo dentro de la aplicación Universe a ver qué tal va.
Compañero de piso de Dios - A ver que lo revise.... hum... ¿este proceso hijo, Human, está sujeto a la gravedad?
Dios - Claro, como todos los demás procesos creados a partir de Earth. ¿Por qué?
CdPdD - Es que creo que en unos cuantos millones de años puede salir alguno defectuoso. No sé, pero creo que además de evolucionar, alguno podría incumplir la gravedad, o incluso cambiar las moléculas de algún objeto, estos que llamas "líquidos".
Dios - Vaya, tienes razón. Pero no creo que por uno defectuoso cada millones de años tenga que cambiar todo el código. Vete tú a saber cómo se corrige ese error ahora. Seguro que nadie le hace caso a ese tipo raro.
CdPdD - Pero ¿y si le hacen caso? ¿Eso no podría derivar en un error de seguridad del sistema y que tomen conciencia de que han sido programados por seres superiores? Si llegan a pensar que estamos aquí el programa puede derivar en mensajes continuos para que cambiemos cosas. Como si pudiéramos cambiar lo que quisiéramos!
Dios - Bah. Tenemos DoorXP, que va de lujo. No creo que pase nada. Seguirán bastante tiempo pensando que han evolucionado, no te preocupes. Nunca pensarán que los hicimos nosotros.


Aquí dejo mi actualización de La Creación, que ya le iba tocando. Llevan los cristianos toda la vida con la misma versión y se estaba quedando rancia. Hoy me he levantado así de religioso, qué le vamos a hacer.

domingo, 11 de septiembre de 2011

Propósitos de año (escolar) nuevo


Creo que el año nuevo está mal puesto. Toda esa sensación de que algo acaba, de que hay que hacer propósitos de año nuevo, de hacer balance del anterior,... Estas cosas las pienso yo ahora, a final del verano, cuando de verdad empieza lo nuevo. Lo único que cambia para mí el uno de enero es el calendario que tengo colgado en la pared. Quizá si hubiera dejado los estudios con 16 años y estuviera trabajando (cosa bastante improbable, según como están las cosas estaría en la cola del INEM) tendría otro concepto de "inicio de algo nuevo". Pero como el calendario escolar es así, y no he conocido otro en toda mi vida, creo que me voy a comer doce uvas esta noche y dejaré esto escrito a modo de propósitos de año "escolar" nuevo. 

Continúa después del salto...

lunes, 25 de julio de 2011

Erasmus Lisboa VIII

Mi vida erasmus termina en un día. Y mi vida en Lisboa el sábado. La semana que viene seré un simple turista por esta ciudad. Todos los erasmus que conozco se habrán marchado para mañana, y estar de erasmus es mucho más que vivir y estudiar en otra ciudad. Podría decidir quedarme aquí más tiempo, pero sería sólo alargar unas solitarias vacaciones sin aliciente ninguno en comparación con lo que ha sido este año. Además de que tengo ganas de ver a toda la gente de Granada, volver a mi casa y disfrutar de mi vida por allí.
Así que esta será la última entrada de Erasmus Lisboa que haga en el blog. No ha habido muchas. Y me habría gustado escribir más, contar anécdotas y gilipolleces varias que me han pasado este año. Como la vez que la policía entró en el local que estábamos de fiesta porque no tenían la licencia para pinchar esa música (muchas gracias, Sinde portuguesa) y nos vimos obligados a volver a las semanas para hacer una huevada en su puerta. Y la vez que perdí a las cartas y me tocó barrer un pasillo vestido con un bikini y una minifalda (si lo encontráis en youtube avisadme, que me prometió que lo subiría como vídeo privado). O los tres días en el festival Super Rock Super Bock oyendo a Artic Monkeys, Slash, The Strokes... (creo que haré una entrada sobre esto, volviendo a las enrtadas musicales). Y etcétera, etcétera, etcétera. Todo esto lo dejo para las anécdotas de los amigos y las frases que comienzan con "pues yo una vez...".

Continúa después del salto...

lunes, 20 de junio de 2011

Cine: Bailar en la oscuridad

Primera película que tacho de la lista de 1001 Películas para ver antes de morir. Si todavía no te has pasado por el listado, pulsa en el enlace de arriba.

Bailar en la oscuridad

Lo digo antes que nada, no me ha gustado demasiado la película. Si, lo sé, seguro que ahora saldrá cantidad de gente a quemarme vivo (O lo harían si alguien leyera el blog), pero es así. Y no he encontrado críticas negativas de esta película, sin embargo, ya sea por mi estado de ánimo, porque hoy no he comido suficientes bífidus activos o porque es lunes día par, a mi no me ha terminado de cuadrar.

Empecemos, lo primero aquí está el argumento (directo de Filmaffinity):
Selma, inmigrante checa y madre soltera, trabaja en la fábrica de un pueblo de los Estados Unidos. La única vía de escape a tan rutinaria vida es su pasión por la música, especialmente por las canciones y los números de baile de los musicales clásicos de Hollywood. Selma esconde un triste secreto: está perdiendo la vista, pero lo peor es que su hijo también se quedará ciego, si ella no consigue, a tiempo, el dinero suficiente para que se opere.

[Atención, SPOILER. Se desvelan detalles del argumento en este párrafo]
No es una cinta cualquiera, todo hay que decirlo. Claro que cualquier película de Lars Von Trier no es una cinta cualquiera. Y en general está bien. Incluso eso de que sea musical no me desagrada. Pero lo que no me ha gustado es la historia y, sobre todo, la actitud de la protagonista. Una persona así tan dulce, que le cae bien a todo el mundo, trata bien a todos pero que, para mi, le falta un hervor. Si alguien te dice "estoy sin un duro", que tú le sueltes que tienes unos ahorros increíbles guardados, es que es pa' darle. Por muy amigo y demás que sea, no le haces ningún favor diciéndole eso. A partir de ahí ya sabía yo que no iba a acabar bien.
[Fin del SPOILER. Ya puedes seguir leyendo con total tranquilidad]

¿La recomiendo? Sí, obviamente. Pocas películas hay que no recomiende ver. Y esta no es una película mala, ni mucho menos. Será que Trier es demasiado alternativo para mí, no sé. Seguro que tiene que haber un punto medio perfecto entre las superproducciones comerciales y este director.
 
Licencia de Creative Commons
Pensamientos anónimos by Javier Jesús Rodríguez Garrido is licensed under a Creative Commons Reconocimiento-CompartirIgual 3.0 Unported License.
Creado a partir de la obra en zyxdiario.blogspot.com.
Permissions beyond the scope of this license may be available at http://zyxdiario.blogspot.com.