Banco

ESTOU TENTANTO REALIZAR ESSA UML EM JAVA SÓ QUE ESTOU COM ALGUNS PROBLEMAS.

public class Titular {
private String nome;
private String email;
private String endereco;

public Titular(String nome, String email, String endereco) {
        this.nome = nome;
        this.email = email;
        this.endereco = endereco;
}

public String getNome() {
	return this.nome;
}
    public String getEmail (){
        return this.email;
    }
    public String getEndereco (){
        return this.endereco;
    }
    
    public void setNome(String nome) {
	this.nome = nome;
}
    public void setEmail (String email) {
        this.email = email;
    }
    public void setEndereco (String endereco){
        this.endereco = endereco;
    }

}


public abstract class Conta {
private final int numero;
private final int agencia;
protected double saldo = 0;
private Titular titular;

public Conta (Titular titular ,int numero, int agencia) {
        super ();
        this.numero = numero;
        this.agencia = agencia;
}
public int getNumero() {
	return this.numero;
}
    public int getAgencia (){
        return this.agencia;
    }
    public double getSaldo (){
        return this.saldo;
    }
    public Titular getTItular (){
        return this.titular;
    }
    
    public void setTitulat(Titular titular) {
	this.titular = titular;
}
    public abstract boolean sacar(double valor);
    public abstract boolean depositar(double valor);
    
    public boolean transferir(double valor, Conta c1){
        saldo = saldo - valor;
        c1.saldo = c1.saldo + valor;
             return false;
    }
    
    }

public abstract class ContaPoupanca extends Conta implements Rendimentos {

 public ContaPoupanca (Titular titular ,int numero, int agencia) {
     super (titular, numero, agencia);
 }

@Override

public abstract boolean sacar(double valor);

@Override
    public abstract boolean depositar(double valor);
 
 @Override
 public void atualizar(double taxaRendimento);

}


public abstract class ContaCorrente extends Conta {
private double limite = 1000;
private double taxa;
private double saldocomlimite;

public ContaCorrente (Titular titular, int numero, int agencia) {
    super (titular, numero, agencia);
}
public double getLimite() {
	return this.limite;
}
public double getTaxa() {
	return this.taxa;
}

public double getSaldoComLimite() {
	return this.saldocomlimite;
}
public void setLimite(double limite) {
	this.limite = limite;
}
public void setTaxa(double taxa) {
	this.taxa = taxa;
}

@Override

public abstract boolean sacar(double valor);

@Override
    public abstract boolean depositar(double valor);

}


public abstract class ContaEspecial extends ContaCorrente implements Rendimentos {

public ContaEspecial(Titular titular, int numero, int agencia) {
    super(titular, numero, agencia);
}

@Override
public void atualizar(double taxaRendimento);

 @Override

public abstract boolean sacar(double valor);

@Override
    public abstract boolean depositar(double valor);

}


interface Rendimentos {

public void atualizar(double taxaRendimento);

}

Que tal informar qual é exatamente o problema?
Obs.: não precisa usar caixa alta.

Crie APENAS os métodos e construtores expostos no diagrama.
• Toda Conta possui um Titular.
• Toda nova Conta criada inicia com um saldo de ZERO.
• Toda Conta Corrente quando criada possui um limite (cheque especial) de 1000 Reais.
• Toda Conta Especial quando criada possui um limite (cheque especial) de 5000 Reais.
• Todo saque deve ser validado, ou seja, o valor a ser sacado deve ser maior que ZERO e
inferior ao valor do saldo mais o limite (caso tenha).
• Tanto na Conta Corrente como na Conta Especial saques e depósitos possuem uma taxa
de operação sendo 0,50 centavos para a Conta Corrente e 0,25 centavos na Conta
Especial para cada operação.
• Todo deposito deve ser validado, ou seja, o valor a ser depositado deve ser maior que
ZERO.
• Tanto Conta Poupança como Conta Especial possuem uma taxa de rendimento que é
executada uma vez ao mês. A taxa de rendimento para a Conta Poupança é de 1% e a
taxa de rendimento para a Conta Especial é de 2.5%.
• Toda transferência é na verdade um saque de uma conta e um depósito para um
favorecido.
• No final crie uma classe de testes chamado TestaBanco, nela você deve:
a) Criar uma instância de cada conta (poupança, corrente e especial)
b) Realizar todas as operações criadas em cada conta (depósito, saque e
transferência)
c) Realizar a atualização dos rendimentos das contas poupança e especial.

1 curtida

@Ianquel_Cabral
boa noite, fiz um exemplo de implementação do UML, espero que ajude. Coloque as mensagens de acompanhamento dos testes se quiser, eu só queria verificar se tudo estava funcionando.

Classe de teste

public class TesteBanco {

    public static void main(String[] args) {
        Titular titular = new Titular("Fulano Ciclano de Tal", "teste@teste.com.br", "Rua dos bobos, 0");
        ContaPoupanca contaPoupanca = new ContaPoupanca(titular, 1, 10);
        ContaCorrente contaCorrente = new ContaCorrente(titular, 2, 10);
        ContaEspecial contaEspecial = new ContaEspecial(titular, 3, 10);
        //teste conta poupança
        contaPoupanca.depositar(1000d);
        contaPoupanca.sacar(50d);
        contaPoupanca.transferir(50d, contaCorrente);
        System.out.println(String.format("Conta poupança - Saldo R$ %.2f", contaPoupanca.getSaldo()));
        //teste conta corrente
        contaCorrente.depositar(560d);
        contaCorrente.sacar(200d);
        contaCorrente.transferir(145d, contaEspecial);
        System.out.println(String.format("Conta corrente - Saldo + limite R$ %.2f", contaCorrente.getSaldoComLimite()));
        //teste conta especial
        contaEspecial.depositar(3450d);
        contaEspecial.sacar(352d);
        contaEspecial.transferir(127d, contaPoupanca);
        System.out.println(String.format("Conta especial - Saldo + limite R$ %.2f", contaEspecial.getSaldoComLimite()));
        //aplicando taxa de rendimento
        contaPoupanca.atualizar(1d);
        contaEspecial.atualizar(2.5d);
        System.out.println(String.format("Saldo C.P. - R$ %.2f\nSaldo C.E. - R$ %.2f", contaPoupanca.getSaldo(), contaEspecial.getSaldo()));
    }

}

Classe Titular

public class Titular {

    private String nome;
    private String email;
    private String endereco;

    public Titular(String nome, String email, String endereco) {
        this.nome = nome;
        this.email = email;
        this.endereco = endereco;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

}

Classe abstrata Conta

public abstract class Conta {

    private Titular titular;
    private Integer numero;
    private Integer agencia;
    protected Double saldo = 0d;

    public Conta(Titular titular, Integer numero, Integer agencia) {
        this.titular = titular;
        this.numero = numero;
        this.agencia = agencia;
    }

    public Titular getTitular() {
        return titular;
    }

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

    public Integer getNumero() {
        return numero;
    }

    public Integer getAgencia() {
        return agencia;
    }

    public Double getSaldo() {
        return saldo;
    }

    abstract Boolean sacar(Double valor);

    abstract Boolean depositar(Double valor);

    public Boolean transferir(Double valor, Conta favorecido) {
        if (sacar(valor)) return favorecido.depositar(valor);
        return false;
    }

}

Classes das Contas

public class ContaCorrente extends Conta {

    private Double limite = 1000d;
    private Double taxa = 0.5d;

    public ContaCorrente(Titular titular, Integer numero, Integer agencia) {
        super(titular, numero, agencia);
    }

    public Double getLimite() {
        return limite;
    }

    public void setLimite(Double limite) {
        this.limite = limite;
    }

    public Double getTaxa() {
        return taxa;
    }

    public void setTaxa(Double taxa) {
        this.taxa = taxa;
    }

    public Double getSaldoComLimite() {
        return saldo + limite;
    }

    @Override
    public Boolean sacar(Double valor) {
        if (valor <= 0 && getSaldoComLimite() < valor) return false;
        saldo -= valor + taxa;
        return true;
    }

    @Override
    public Boolean depositar(Double valor) {
        if (valor <= 0) return false;
        saldo += (valor - taxa);
        return true;
    }

}
public class ContaPoupanca extends Conta implements Rendimentos {

    public ContaPoupanca(Titular titular, Integer numero, Integer agencia) {
        super(titular, numero, agencia);
    }

    @Override
    public Boolean sacar(Double valor) {
        if (saldo < valor) return false;
        saldo -= valor;
        return true;
    }

    @Override
    public Boolean depositar(Double valor) {
        if (valor < 0) return false;
        saldo += valor;
        return true;
    }

    /**
     * A taxa de rendimento para a Conta Poupança é de 1%
     *
     * @param taxaRendimento
     */
    @Override
    public void atualizar(Double taxaRendimento) {
        saldo += saldo * (taxaRendimento / 100);
    }

}
public class ContaEspecial extends ContaCorrente implements Rendimentos {

    public ContaEspecial(Titular titular, Integer numero, Integer agencia) {
        super(titular, numero, agencia);
        setLimite(5000d);
        setTaxa(0.25d);
    }

    /**
     * A taxa de rendimento para a Conta Especial é de 2.5%
     *
     * @param taxaRendimento
     */
    @Override
    public void atualizar(Double taxaRendimento) {
        saldo += saldo * (taxaRendimento / 100);
    }

}

Interface de Rendimentos

public interface Rendimentos {

    void atualizar(Double taxaRendimento);

}
1 curtida