package grades;

// Un getter que devuelve el arreglo interno deja romper el invariante desde afuera.
public class CopyDemo {
    public static void main(String[] args) {
        int[] input = {14, 17, 11};

        LeakyScores leaky = new LeakyScores(input);
        leaky.values()[0] = 99;            // nadie llamó a un método que cambie notas
        input[1] = -5;
        IO.println("LeakyScores: máxima " + leaky.highest() + ", primera " + leaky.values()[0]
                + ", segunda " + leaky.values()[1]);

        int[] again = {14, 17, 11};
        Scores safe = new Scores(again);
        safe.values()[0] = 99;             // cambia una copia
        again[1] = -5;                     // cambia el arreglo de quien llamó, no el de safe
        IO.println("Scores:      máxima " + safe.highest() + ", primera " + safe.values()[0]
                + ", segunda " + safe.values()[1]);
    }
}
