// Alias y paso de parámetros: Java pasa siempre por valor, y el valor de una
// variable de objeto es una referencia.

// Recibe una copia de la referencia: llega al mismo objeto y lo modifica.
void heatUp(Thermometer t) {
    t.record(t.current() + 5);
}

// También recibe una copia de la referencia, pero le asigna otro objeto:
// solo cambia el parámetro, no la variable de quien llamó.
void replace(Thermometer t) {
    t = new Thermometer("Cusco", 4.0);
    t.record(-2.0);
}

void main() {
    Thermometer a = new Thermometer("Lima", 18.0);
    Thermometer b = a;              // alias: dos variables, un solo objeto
    b.record(30.0);
    IO.println("a.max() = " + a.max() + "   (a == b: " + (a == b) + ")");

    heatUp(a);
    IO.println("después de heatUp:  " + a.place() + ", actual " + a.current());

    replace(a);
    IO.println("después de replace: " + a.place() + ", actual " + a.current());
}
