Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Collections e framework - exercicio 2

package br.com.caelum.fj11.modelo;
import javax.management.RuntimeErrorException;

import br.com.caelum.fj11.excecao.ValorInvalidoException;

//public abstract class Conta {
public abstract class Conta implements  Comparable<Conta> {// este formato significa que Conta pode ser classificada
//  private double saldo;
    protected double saldo;
    //private int numero;
    protected 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 int getNumero() {
        return this.numero;
    }
    public int setNumero(int numero) {
        return this.numero = numero;
    }

    public String getNome() {
        return this.nome;
    }
    public String setNome(String nome) {
        return this.nome = 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;

        }

        @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((nome == null) ? 0 : nome.hashCode());
        result = prime * result + numero;
        return result;
    }

        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Conta other = (Conta) obj;
            if (nome == null) {
                if (other.nome != null)
                    return false;
            } else if (!nome.equals(other.nome))
                return false;
            if (numero != other.numero)
                return false;
            return true;
        }


          public int compareTo(Conta outra) {
              if(this.saldo < outra.saldo) {
                return -1;
            }
            if(this.saldo > outra.saldo) {
                return 1;
            }
            return 0;
        }

   //public void atualiza(double taxa) {                                                                                                   
   //     this.saldo += (this.saldo * taxa);                                                                                                       
   // };       
    abstract public void atualiza(double taxa);

}

Fiz a implementação na classe Conta, para atender conta corrente e conta poupança, agi corretamente ?? ```

1 resposta
solução!

Opa, a classe Conta continua abstrata, então ninguém pode instanciar. Você pode ate tentar ir por esse caminho, mas normalmente os tipos vão ter comportamentos diferentes, que ficam melhor especificados em classes separadas.