package br.com.alura.java2.modelos;
import br.com.alura.java2.exception.ValorInvalidoException;
public abstract class Conta {
private static int classId = 0;
private String nome = new String();
protected double saldo;
protected int numero;
Conta (){
this.numero = classId++;
}
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
// AQUI!!! ***********************************
public String toString() {
return "esse objeto é uma conta com saldo R$" + this.saldo;
}
//***********************************************
public double getSaldo() {
return saldo;
}
public void deposita(double valor) {
if (valor <= 0) {
throw new ValorInvalidoException(valor);
}
this.saldo += valor;
}
public void saca(double valor) {
this.saldo -= valor;
}
public abstract void atualiza(double taxa);
public boolean equals(Object obj) {
Conta outraConta = (Conta) obj;
return (this.numero == outraConta.numero && this.nome == outraConta.nome);
}
}
package br.com.alura.java2.modelos;
public class ContaPoupanca extends Conta implements Comparable<ContaPoupanca> {
public ContaPoupanca(){
super();
}
public void atualiza(double taxa) {
this.saldo += this.saldo * taxa * 3;
}
public void deposita(double valor) {
this.saldo += valor - 0.10;
}
@Override
public int compareTo(ContaPoupanca o) {
return this.numero - o.numero;
}
}
package br.com.alura.java2.main;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import br.com.alura.java2.modelos.ContaPoupanca;
public class TestaOrdenacao {
public static void main(String[] args) {
ContaPoupanca c1 = new ContaPoupanca();
c1.deposita(150);
ContaPoupanca c2 = new ContaPoupanca();
c2.deposita(300);
ContaPoupanca c3 = new ContaPoupanca();
c3.deposita(500);
List<ContaPoupanca> contas = new ArrayList<>();
contas.add(c1);
contas.add(c3);
contas.add(c2);
Collections.sort(contas);
for (ContaPoupanca conta : contas) {
System.out.println(conta);
}
}
}
Os valores do saldo quando impressos ficam imprecisos: Console: esse objeto é uma conta com saldo R$149.9 esse objeto é uma conta com saldo R$299.9 esse objeto é uma conta com saldo R$499.9