Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Dúvida no Ex. 2 da Aula 4 - Interfaces

No Ex.2 o autor pede para escrever o código da seguinte forma

class TestaTributavel { public static void main(String[] args) { ContaCorrente cc = new ContaCorrente(); cc.deposita(100); System.out.println(cc.calculaTributos()); // testando polimorfismo: Tributavel t = cc; System.out.println(t.calculaTributos()); } }

Só que se eu deixar esta linha assim ContaCorrente cc = new ContaCorrente(); esta dando problema eu tive de colocar da seguinte forma ContaCorrente cc = new ContaCorrente("Laerdes",123,0); o meu código esta faltando alguma coisa

8 respostas

Olá Laercio! Não, não está errado, creio que você deve está utilizando em sua classe ContaCorrente um construtor diferente do Construtor Implícito e esse seu construtor pede dois argumentos. Por isso, você deve fazer da forma como você colocou mesmo.

Mas se você deseja fazer como no exercício, ponha aqui todo seu código que te ajudaremos a deixa-lo igual ao do exercício.

Mas volto a dizer que seu código não está errado, apenas sua classe ContaCorrente deve estar utilizando um construtor diferente que você colocou.

Espero ter ajudado! Bons Estudos!

Eu encontro uma dificuldade com relação a isso, vou deixar como sugestão disponibilizar o código para que possa baixar e seguir os estudos com o código da alura

package br.com.nicolicontabil.alura;

public abstract class Conta { protected double saldo; private String nome; private int agencia;

public Conta(String nome, int agencia, double saldo) { this.nome = nome; this.agencia = agencia; this.saldo = saldo; }

public String getNome() { return nome; }

public void setNome(String nome) { this.nome = nome; }

public int getAgencia() { return agencia; }

public void setAgencia(int agencia) { this.agencia = agencia; }

public double getSaldo() { return saldo; }

public void impreme() { System.out.println(nome); System.out.println(agencia); System.out.printf("O saldo é: %.2f\n", getSaldo());

}

public abstract void atualiza(double taxaSelic);

public void saca(double valorSaque) { if (this.saldo >= valorSaque) { this.saldo -= valorSaque; } else { System.out.println("Saldo insuficiente para saque"); }

}

public void deposita(double valorDeposito) { this.saldo += valorDeposito; }

public void setSaldo(double saldo) { this.saldo = saldo; }

}

package br.com.nicolicontabil.alura;

public abstract class Conta { protected double saldo; private String nome; private int agencia;

public Conta(String nome, int agencia, double saldo) { this.nome = nome; this.agencia = agencia; this.saldo = saldo; }

public String getNome() { return nome; }

public void setNome(String nome) { this.nome = nome; }

public int getAgencia() { return agencia; }

public void setAgencia(int agencia) { this.agencia = agencia; }

public double getSaldo() { return saldo; }

public void impreme() { System.out.println(nome); System.out.println(agencia); System.out.printf("O saldo é: %.2f\n", getSaldo());

}

public abstract void atualiza(double taxaSelic);

public void saca(double valorSaque) { if (this.saldo >= valorSaque) { this.saldo -= valorSaque; } else { System.out.println("Saldo insuficiente para saque"); }

}

public void deposita(double valorDeposito) { this.saldo += valorDeposito; }

public void setSaldo(double saldo) { this.saldo = saldo; }

}

Laercio, ja estamos trabalhando nisso e em breve será possivel encontrar vários códigos. Quanto ao seu código o motivo de você ter que digitar o código diferente do da resposta é porque você esta utilizando um construtor diferente.

Espero ter ajudado! Bons Estudos!

Teria que alterar onde

Envolve mais de uma alteração. Você teria que disponibilizar seu código completo aqui para podermos te ajudar. Pois você anteriormente apenas enviou a classe Conta

package br.com.nicolicontabil.alura;

public abstract class Conta {
    protected double saldo;
    private String nome;
    private int agencia;

    public Conta(String nome, int agencia, double saldo) {
        this.nome = nome;
        this.agencia = agencia;
        this.saldo = saldo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getAgencia() {
        return agencia;
    }

    public void setAgencia(int agencia) {
        this.agencia = agencia;
    }

    public double getSaldo() {
        return saldo;
    }

    public void impreme() {
        System.out.println(nome);
        System.out.println(agencia);
        System.out.printf("O saldo é: %.2f\n", getSaldo());

    }

    public abstract void atualiza(double taxaSelic);

    public void saca(double valorSaque) {
        if (this.saldo >= valorSaque) {
            this.saldo -= valorSaque;
        } else {
            System.out.println("Saldo insuficiente para saque");
        }

    }

    public void deposita(double valorDeposito) {
        this.saldo += valorDeposito;
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

}
package br.com.nicolicontabil.alura;

public class ContaCorrente extends Conta implements Tributavel {

    public ContaCorrente(String nome, int agencia, double saldo) {
        super(nome, agencia, saldo);
    }

    public void atualiza(double taxaSelic) {
        this.saldo = this.saldo * taxaSelic;
    }

    @Override
    public double calculaTributos() {
        return this.getSaldo() * 0.01;
    }

    /*
     * 
     * public void atualiza(double taxa) { super.atualiza(taxa); }
     */
}
package br.com.nicolicontabil.alura;

public class ContaPoupanca extends Conta {

    public ContaPoupanca(String nome, int agencia, double saldo) {
        super(nome, agencia, saldo);
    }

    public void atualiza(double taxaSelic) {
        this.saldo = this.saldo * taxaSelic;
    }

    public void deposita(double valor) {
        this.saldo += valor - 0.10;
    }

}
package br.com.nicolicontabil.alura;

public interface Tributavel {
    double calculaTributos();
}
package br.com.nicolicontabil.alura;

public class SeguroDeVida implements Tributavel {

    @Override
    public double calculaTributos() {
        // TODO Auto-generated method stub
        return 42;
    }

}
package br.com.nicolicontabil.alura;

public class AtualizadorDeContas {

}
package br.com.nicolicontabil.alura;

public class TestaConta {
    public static void main(String[] args) {
        Conta conta = new ContaCorrente("Laerdes", 1234, 10000);
        /*
        AtualizadorDeContas atualizadorDeContas = new AtualizadorDeContas();
        */
        conta.impreme();


    }

}
solução!

Laercio, comecei a fazer as alterações aqui em seu código, no entanto creio que não vale a pena para você alterar todo o código apenas por causa de uma resposta. Como eu disse, a sua resposta está correta, só deu uma diferença em relação a resposta do exercício porque você fez uma implementação diferente.

Mas se você deseja mesmo assim alterar, basta apagar os três construtores, O da classe Conta, da classe ContaCorrente e da classe ContaPoupanca. Assim, ao invés de utilizar o construtor para colocar os atributos das Contas, você terá que utilizar os Setters. Veja o exemplo da sua classe TestaConta:

A invés de fazer:

Conta conta = new ContaCorrente("Laerdes", 1234, 10000);

Agora você terá que fazer:

       Conta conta = new ContaCorrente();
        conta.setNome("Laerdes");
        conta.setAgencia(1234);
        conta.setSaldo(100000);

Espero ter ajudado! Bons Estudos!