4
respostas

Porque a objeto cliente não complia?

package br.com.byteBank.banco.Teste;
import br.com.byteBank.banco.Modelo.Cliente;
import br.com.byteBank.banco.Modelo.Conta;
import br.com.byteBank.banco.Modelo.ContaCorrente;
import br.com.byteBank.banco.Modelo.Contapoupanca;

public class TestaObject {

        public static void main(String[] args) { 

        Object[] contas = new Object[5];
        ContaCorrente cc1 = new ContaCorrente (11, 22);

        contas[0] = cc1;

        Contapoupanca cc2 = new Contapoupanca(10,20);

        contas[1] = cc2;

        Cliente cliente = new Cliente();

        contas[2] = cliente;

        System.out.println(contas[0].getAgencia());

        Conta ref = (Contapoupanca)contas[1];

        System.out.println(cc2.getNumero());


        System.out.println(ref.getNumero());

    }    
}

******************************************

Classe cliente 

package br.com.byteBank.banco.Modelo;
public abstract class Cliente implements Autenticavel {

    private String nome;
    private String cpf;
    private String profissao;

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getCpf() {
        return cpf;
    }
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    public String getProfissao() {
        return profissao;
    }
    public void setProfissao(String profissao) {
        this.profissao = profissao;
    } 
}
4 respostas

Oi Matheus , pode subir no github seu projeto?

No código que você enviou falta as classes ContaCorrente, Contapoupanca, Autenticavel e Conta

Aqui esta

Autenticavel

package br.com.byteBank.banco.Modelo;

public abstract interface Autenticavel  {

    public abstract void setSenha(int senha);

    public abstract boolean autentica(int senha);
}

Contacorrente

package br.com.byteBank.banco.Modelo;

public class ContaCorrente extends Conta implements Tributavel {

    public ContaCorrente(int agencia, int numero) {

        super(agencia , numero);
    }

    @Override
    public void saca(double valor) throws SaldoInsuficiente {
        double tarifa = valor + 0.25;
        super.saca(tarifa);
    }

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

    @Override
    public double getvalorImposto() {
        return super.saldo*0.01;
    }

    @Override
    public String toString() {
        return "ContaCorrente: " + super.toString(); //+ " , "+ "Saldo: "+super.getSaldo();
    }

} 

ContaPoupança

package br.com.byteBank.banco.Modelo;

public class Contapoupanca extends Conta {

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

    @Override
    public void saca(double valor) throws SaldoInsuficiente {
        double tarifa = valor + 0.25;
        super.saca(tarifa);
    }

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

    @Override
    public String toString() {
        return "ContaPoupanca: " + super.toString() +" , "+ "Saldo: "+super.getSaldo();
    }
}

conta

package br.com.byteBank.banco.Modelo;


/**
* Classe representa a moldura de uma conta
*
*@author Matheus franca
*
*/


public abstract class Conta {

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


    public Conta(int agencia, int numero) {
        Conta.total++;
        //System.out.println("O total de contas é " + Conta.total);
        this.agencia = agencia;
        this.numero = numero;
        //this.saldo = 100;
        //System.out.println("Estou criando uma conta" + this.numero);
    }

    public abstract void deposita(double valor);

    public void saca(double valor) throws SaldoInsuficiente {

        if (this.saldo < valor)  {

            throw new SaldoInsuficiente("Saldo: "+ this.saldo + ", Valor do saque "+ valor);

    }

        this.saldo -= valor;

    }

    public void transfere(double valor, Conta destino) throws SaldoInsuficiente {
        this.saca (valor);
        destino.deposita(valor);
    }

    public double getSaldo() {
        return this.saldo;
    }

    public int getNumero() {
        return this.numero;
    }

    public void setNumero(int numero) {
        if (numero <= 0) {
            System.out.println("Nao pode valor menor igual a 0");
            return;
        }
        this.numero = numero;
    }

    public int getAgencia() {
        return this.agencia;
    }

    public void setAgencia(int agencia) {
        if (agencia <= 0) {
            System.out.println("Nao pode valor menor igual a 0");
            return;
        }
        this.agencia = agencia;
    }

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

    public Cliente getTitular() {
        return this.titular;
    }

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

    @Override
    public String toString() {
        return "Numero: " + this.numero +" , "+"Agencia: " +this.agencia;
    }

    @Override
    public boolean equals(Object ref) {

        Conta outra = (Conta) ref;

        if(this.agencia != outra.agencia) {
            return false;
        }

        if(this.numero != outra.numero) {
            return false;
        }

        return true;
    }
}

```

faltar algo a mais avisar por favor

Alguns problemas no seu código:

'Cliente' is abstract; cannot be instantiated

como você está tentando instanciar nessa linha o Cliente:

Cliente cliente = new Cliente();

e você declarou cliente como Abstract, seu código não irá compilar.

System.out.println(contas[0].getAgencia());

contas[0] é Object, então não existe o método getAgencia, vai dar erro de compilação também, precisa fazer o cast pro tipo Conta ou declarar "contas" com o tipo correto ao invés de Object