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

Desafio imposto na aula

Gostaria de saber se eu fiz tudo certo, se tiver alguma sugestão do que eu possa melhorar, eu agradeço.

CalculadorImposto.java

package bytebank_herdado_conta;

public class TesteContaCorrente {
public static void main(String[] args) {
    ContaCorrente cc = new ContaCorrente(111, 333);
    cc.setSaldo(1000.0);

    SeguroDeVida sv = new SeguroDeVida(120);


    CalculadorImposto ci = new CalculadorImposto();
    System.out.println("O seu saldo tributado é: " + ci.imposto(cc));

    System.out.println("O seguro de vida já tributado, vai custar " + ci.imposto(sv));

    }
}

Cliente.java

package bytebank_herdado_conta;

public class TesteContaCorrente {
public static void main(String[] args) {
    ContaCorrente cc = new ContaCorrente(111, 333);
    cc.setSaldo(1000.0);

    SeguroDeVida sv = new SeguroDeVida(120);


    CalculadorImposto ci = new CalculadorImposto();
    System.out.println("O seu saldo tributado é: " + ci.imposto(cc));

    System.out.println("O seguro de vida já tributado, vai custar " + ci.imposto(sv));

    }
}

ContaCorrente.java

package bytebank_herdado_conta;

public class ContaCorrente extends Conta implements Tributavel{

    public ContaCorrente(int agencia,int numero) {
        super(agencia, numero);
    }

    @Override
    public double getValorImposto() {
        double imposto = this.saldo - this.saldo * 0.01;  
        return imposto;
    }

    public boolean saca(double valor) {
        double valorASacar = valor + 0.20;
        return super.saca(valorASacar);
    }

    @Override
    public void deposita(double valor) {
        super.saldo += valor;    
    }


}

ContaPoupanca.java

package bytebank_herdado_conta;

public class ContaPoupanca extends Conta {

    public ContaPoupanca(int agencia,int numero) {
        super(agencia, numero);
    }

    @Override
    public void deposita(double valor) {
        super.saldo += valor;
    }

}

SeguroDeVida.java

package bytebank_herdado_conta;

public class SeguroDeVida implements Tributavel {

    private double idade;
    private double valorInicial = 20.0;


    public SeguroDeVida(double idade) {
        if(idade >= 0 && idade <= 120)
        this.idade = idade;
        else {
            System.out.println("idade inválida");
        }
    }

    @Override
    public double getValorImposto() {
        if(this.idade <= 10) {
            return this.valorInicial; 
        } else if (this.idade <= 20) {
            return 20 * 0.1 + this.valorInicial;
        } else if (this.idade <= 30) {
            return 20 * 0.2 + this.valorInicial;
        } else if (this.idade <= 40) {
            return 20 * 0.3 + this.valorInicial;
        } else if (this.idade <= 50) {
            return 20 * 0.4 + this.valorInicial;
        } else if (this.idade <= 60) {
            return 20 * 0.5 + this.valorInicial;
        } else if (this.idade <= 70) {
            return 20 * 0.6 + this.valorInicial;
        } else if (this.idade <= 80) {
            return 20 * 0.7 + this.valorInicial;
        } else if (this.idade <= 90) {
            return 20 * 0.8 + this.valorInicial;
        } else if (this.idade <= 100) {
            return 20 * 0.9 + this.valorInicial;
        } else {
            return 20 * 1.0 + this.valorInicial;
        }

    }
}

TesteTributavel.java

package bytebank_herdado_conta;

public class TesteTributaveis {
public static void main(String[] args) {
    ContaCorrente cc = new ContaCorrente(111, 333);
    cc.setSaldo(1000.0);

    SeguroDeVida sv = new SeguroDeVida(120);


    CalculadorImposto ci = new CalculadorImposto();
    System.out.println("O seu saldo tributado é: " + ci.imposto(cc));

    System.out.println("O seguro de vida já tributado, vai custar " + ci.imposto(sv));

    }
}

Tributavel.java

package bytebank_herdado_conta;

public abstract interface Tributavel {


    public abstract double getValorImposto();
}
2 respostas

Conta.java

package bytebank_herdado_conta;

public abstract class Conta {

    protected double saldo;
    private int agencia;
    private int numero;
    private Conta titular;
    private static int total = 0;

    public Conta(int agencia, int numero) {
        Conta.total++;
        if(agencia > 0) {
            this.agencia = agencia;
        } else {
            System.out.println("O numero da sua agencia é 1999");
            this.agencia = 1999;
        }
    }

    public abstract void deposita(double valor);

    public boolean saca(double valor) {
        if(valor <= this.saldo) {
            this.saldo -= valor;
            return true;
        } else {
            return false;
        }
    }

    public boolean transfere(double valor, Conta destino) {
        if(this.saca(valor))//está chamando o método saca mais especifico, ou seja, se chamar pela conta corrente vai ser cobrado 0,20, pois no método mais especifico tem essa regra. 
            {
            destino.deposita(valor);
            return true;
        } else {
            return false;
        }
    }

    public Double getSaldo() {
        return saldo;
    }

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

    public int getAgencia() {
        return agencia;
    }

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

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public Conta getTitular() {
        return titular;
    }

    public void setTitular(Conta titular) {
        this.titular = titular;
    }

    public int getTotal() {
        return Conta.total;
    }
}

tem mais essa classe.

solução!

Olá Vitor, tudo bem?

Seu código parece estar correto sim. Eu só renomeiaria a classe "TesteContaCorrente" para algo mais significativo, como "TesteCalculadorImposto".

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software