Small Challenges 3

Dadas as seguintes classes:


In [4]:
public class CA {
    public String toString() {
        return "primeiro";
    }
}

public class CB {
    private CA referencia;
    public CB(CA referencia) {
        this.referencia = referencia;
    }
    
    public String toString() {
        return referencia + " segundo";
    }
}

Exercício

Como você escreveria em uma única linha um código para imprimir primeiro segundo usando as strings produzidas pelas classes.


In [5]:
System.out.println(new CB(new CA()));


primeiro segundo

Outro desafio

Estude o código a seguir:


In [19]:
public class C {
    protected int valor;
    public C(int valor) {
        this.valor = valor;
    }
    public void operacao(int novoValor) {
        valor = novoValor;
    }
    public String toString() {
        return Integer.toString(valor);
    }
}

public class CMaior extends C {
    public CMaior(int valor) {
        super(valor);
    }
    public void operacao(int novoValor) {
        if (novoValor > valor)
            valor = novoValor;
    }
}

public class CMenor extends C {
    public CMenor(int valor) {
        super(valor);
    }
    public void operacao(int novoValor) {
        if (novoValor < valor)
            valor = novoValor;
    }
}


C maior = new CMaior(12);
maior.operacao(30);
maior.operacao(15);
maior.operacao(9);
System.out.println("maior: " + maior);

C menor = new CMenor(12);
menor.operacao(30);
maior.operacao(15);
menor.operacao(9);
System.out.println("menor: " + menor);


maior: 30
menor: 9

Exercício

Como você escreveria o método operacao para que mostrasse o maior e menor valor


In [ ]:
public class CVetor {
    C referencia;
    public CVetor(C referencia) {
        this.referencia = referencia;
    }
    
    public void operacao(int valores[]) {
        for (int s = 0; s < valores.length; s++)
            referencia.operacao(valores[s]);
    }
    
    public String toString() {
        return referencia.toString();
    }
}

In [16]:
int valores[] = {30, 15, 9};

CVetor vetorMaior = new CVetor(new CMaior(12));
vetorMaior.operacao(valores);
System.out.println("maior: " + vetorMaior);

CVetor vetorMenor = new CVetor(new CMenor(12));
vetorMenor.operacao(valores);
System.out.println("maior: " + vetorMenor);


maior: 30
maior: 9