package br.com.caelum.fj11.modelo;
import javax.management.RuntimeErrorException;
import br.com.caelum.fj11.excecao.ValorInvalidoException;
public abstract class Conta {
// private double saldo;
protected double saldo;
private int numero;
private String nome;
public double getSaldo() {
return this.saldo;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public String toString() {
return "esse objeto é uma conta com saldo R$" + this.saldo;
}
public boolean equals(Object obj) {
Conta outraConta = (Conta) obj;
return this.numero == outraConta.numero &&
this.nome.equals(outraConta.nome);
}
public int getNumero() {
return this.numero;
}
public int setNumero(int numero) {
return this.numero;
}
public String getNome() {
return this.nome;
}
public String setNome(int nome) {
return this.nome;
}
/**
* realiza um saque na conta dado o valor passado
* @param valor_saque valor a ser sacado
* @return
* @throws Exception Excption caso saldo seja insuficiente
*/
public boolean saca(double valor_saque) throws Exception {
if (this.saldo < valor_saque) {
//return false;
throw new SaldoInsuficienteException(saldo);
}
else {
this.saldo = this.saldo - valor_saque;
return true;
}
}
// public void deposita(double valor_dep) {//use este formato quando a classe filha de RuntimeException
public void deposita(double valor_dep) throws ValorInvalidoException {//use este formato quando a classe filha de Exception
// if (valor_dep > 0) {// neste formato utiliza a exeption do java
// this.saldo += valor_dep;
// }
// else {
// throw new IllegalArgumentException("Você tentou depositar" + " um valor negativo");
// }
if (valor_dep > 0) {// neste formato utiliza a exeption pelo programador
this.saldo += valor_dep;
}
else {
throw new ValorInvalidoException(valor_dep);
}
}
/**
* atualiza nome e numero de conta
*
*/
public void idConta(int numero, String nome) {
this.numero = numero;
this.nome = nome;
}
//public void atualiza(double taxa) {
// this.saldo += (this.saldo * taxa);
// };
abstract public void atualiza(double taxa);
}
---
package br.com.caelum.fj11.modelo;
public class ContaCorrente extends Conta implements Tributavel {
public ContaCorrente(int numero, String nome) {
// TODO Auto-generated constructor stub
return;
}
public void atualiza(double taxa) {
this.saldo += this.saldo * taxa * 2;
}
@Override
public double calculaTributos() {
return this.getSaldo() * 0.01;
}
}
----
package br.com.caelum.fj11.programa;
import br.com.caelum.fj11.modelo.ContaCorrente;
public class TestaComparacaoConta {
public static void main(String[] args) {
ContaCorrente cc = new ContaCorrente(6, "Leonardo");
ContaCorrente cc2 = new ContaCorrente(7, "Leonardo");
//System.out.println(" conta 1 " + cc.getNome() + " " + cc.getNumero());
//System.out.println(" conta 2 " + cc2.getNome() + " " + cc2.getNumero());
if (cc == cc2)
System.out.println("objetos são iguais");
else
System.out.println("objeto são diferentes");
if (cc.equals(cc2))
System.out.println("objeto conta são iguas");
else
System.out.println("objeto conta são diferentes");
}
}
apresentou erro na execução da classe TestaComparaConta objeto são diferentes Exception in thread "main" java.lang.NullPointerException at br.com.caelum.fj11.modelo.Conta.equals(Conta.java:26) at br.com.caelum.fj11.programa.TestaComparacaoConta.main(TestaComparacaoConta.java:20)