Exercício

Dada a classe EmprestimoComposto desenvolvida anteriormente em sala de aula.

Crie uma classe Emprestimo que generalize qualquer emprestimo e EmprestimoComposto passa a ser herdeira da mesma. Transfira para a superclasse o máximo de atributos e métodos, de tal modo que possam ser reusados pelos herdeiros.

Crie uma classe EmprestimoSimples herdeira de Emprestimo que também disponha dos métodos parcela() e proximaParcela().


In [5]:
import java.lang.Math;

class EmprestimoComposto {
    private float s;
    private int   n;
    private float j;
    private int   corrente;
    private float p,
                  proxima;

    public EmprestimoComposto(float s, int n, float j) {
        this.s = s;
        this.n = n;
        this.j = j;
        corrente = 1;
        this.p = -1;  // antes da primeira parcela
        this.proxima = s;
    }

    float getS() {
        return s;
    }

    int getN() {
        return n;
    }
    
    float getJ() {
        return j;
    }

    public float proximaParcela() {
        p = proxima;
        corrente++;
        if (corrente <= n)
            proxima += (proxima * (j/100));
        else
            proxima = 0;
        return p;
    }
    
    public float parcela() {
        return p;
    }
    
    public float parcela(int numero) {
        float resultado = 0;
        if (numero <= n)
            resultado = s * (float)Math.pow(1 + j/100, numero-1);
        return resultado;
    }
}


Out[5]:
com.twosigma.beaker.javash.bkr7aec922e.EmprestimoComposto

In [6]:
// codigo principal

EmprestimoComposto emprestimo1 = new EmprestimoComposto(200, 5, 1),
                   emprestimo2 = new EmprestimoComposto(500, 7, 2);

int i = 1;
emprestimo1.proximaParcela();
emprestimo2.proximaParcela();
while (emprestimo1.parcela() > 0 || emprestimo2.parcela() > 0) {
    if (emprestimo1.parcela() > 0) {
        System.out.println("Emprestimo 1: parcela " + i + " eh " + emprestimo1.parcela());
        System.out.println("              parcela " + i + " eh " + emprestimo1.parcela(i));
    }
    if (emprestimo2.parcela() > 0) {
        System.out.println("Emprestimo 2: parcela " + i + " eh " + emprestimo2.parcela());
        System.out.println("              parcela " + i + " eh " + emprestimo2.parcela(i));
    }
    emprestimo1.proximaParcela();
    emprestimo2.proximaParcela();
    i++;
}


Emprestimo 1: parcela 1 eh 200.0
              parcela 1 eh 200.0
Emprestimo 2: parcela 1 eh 500.0
              parcela 1 eh 500.0
Emprestimo 1: parcela 2 eh 202.0
              parcela 2 eh 202.0
Emprestimo 2: parcela 2 eh 510.0
              parcela 2 eh 510.0
Emprestimo 1: parcela 3 eh 204.02
              parcela 3 eh 204.02
Emprestimo 2: parcela 3 eh 520.2
              parcela 3 eh 520.19995
Emprestimo 1: parcela 4 eh 206.06021
              parcela 4 eh 206.0602
Emprestimo 2: parcela 4 eh 530.604
              parcela 4 eh 530.60394
Emprestimo 1: parcela 5 eh 208.12082
              parcela 5 eh 208.1208
Emprestimo 2: parcela 5 eh 541.21606
              parcela 5 eh 541.216
Emprestimo 2: parcela 6 eh 552.0404
              parcela 6 eh 552.04034
Emprestimo 2: parcela 7 eh 563.08124
              parcela 7 eh 563.0811
Out[6]:
null

In [ ]:

Exercício

Escreva um programa que defina um vetor de Emprestimos que pode conter tanto instâncias de EmprestimoSimples quanto EmprestimoComposto. O programa deve percorrer o vetor e imprimir a próxima parcela de cada financiamento.


In [ ]: