Preciso de ajuda em um exercicio de herança

  1. Vamos montar uma pequena e simplificada aplicação bancária, composta das
    classes mostradas no diagrama UML abaixo:
    Classe Correntista
    Atributos: nome e saldo ? sabendo que um correntista pode ter diversas contas no
    banco, o atributo saldo corresponde à soma dos saldos de todas essas contas, ou seja,
    é o total que o correntista (cliente) possui no banco.
    Construtor: recebe o nome
    Métodos:
    ? movimentaConta ? este método é chamado cada vez que uma conta qualquer que
    pertence a este correntista sofre alguma operação capaz de alterar o seu saldo. Logo,
    este método deve receber o valor da respectiva transação ? este valor é negativo em
    caso de retirada, positivo em caso de depósito
    ? métodos de acesso aos atributos (get)
    Classe ContaCorrente:
    Conta Corrente Correntista
    Poupança
    atributos: correntista, do tipo Correntista e saldo.
    Construtor: recebe um objeto do tipo Correntista para inicializar o respectivo atributo
    e inicializa o saldo em zero.
    Métodos
    ? deposita ? que recebe o valor depositado
    ? retira - que recebe o valor da retirada e devolve true se a retirada encontrou saldo
    suficiente para cobrí-la; devolve, false em caso contrário
    ? métodos de acesso aos atributos (get)
    Classe ContaPoupanca ? é uma subclasse (veja o diagrama)
    atributos: taxa de rendimento (na forma decimal, por exemplo, 0.065 corresponde a
    6,5%)
    Construtor: recebe o objeto Correntista e a taxa de rendimento
    Métodos:
    ? creditaRendimento ? uma conta de poupança tem direito a rendimentos eventuais ou
    periódicos. Este método calcula o valor do rendimento em Reais, credita-o (acrescenta
    ao saldo) e devolve o valor deste rendimento.
    ? setTaxaRendimento ? permite mudar a taxa de rendimento
    ? getTaxaRendimento
    Obs. Lembre que sempre que uma conta sofre uma movimentação qualquer, isto é,
    alguma operação que altera o seu saldo, isto deve se refletir, também, no atributo
    saldo do correntista que é dono da conta.

esse metodo que estou em duvida

? creditaRendimento ? uma conta de poupança tem direito a rendimentos eventuais ou
periódicos. Este método calcula o valor do rendimento em Reais, credita-o (acrescenta
ao saldo) e devolve o valor deste rendimento.

classe correntista

public class Correntista
{

    private String nome;
    private double saldo;

    public Correntista(String nome)
    {
        this.nome = nome;
    }
    public Correntista(String nome, double saldo)
    {
        this.nome = nome;
        this.saldo = saldo;
    }

    public String getNome()
    {
        return nome;
    }

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

    public double getSaldo()
    {
        return saldo;
    }

    public void setSaldo(double saldo)
    {
        this.saldo = saldo;
    }
    
    public double movimentaConta(double vlr)
    {
        //funcao// 
        return 0.0;
        
    }
    
}

classe conta corrente

public class ContaCorrente
{

    private Correntista correntista;
    private double saldo;

    public ContaCorrente(Correntista correntista, double saldo)
    {
        this.correntista = correntista;
        this.saldo = 0;
    }

    public Correntista getCorrentista()
    {
        return correntista;
    }

    public void setCorrentista(Correntista correntista)
    {
        this.correntista = correntista;
    }

    public double getSaldo()
    {
        return saldo;
    }

    public void setSaldo(double saldo)
    {
        this.saldo = saldo;
    }
    
    public void deposita(double valor)
    {
        saldo = saldo+valor;
    }
    
    public void retira(double retirada)
    {
        if(saldo<=retirada)
        saldo = saldo-retirada;
        else
          System.out.println("VALOR INDISPONIVEL");
    }
    
    
}

classe conta poupanca

public class ContaPoupanca extends ContaCorrente
{
    private double taxaderendimento;
    
    public ContaPoupanca(double taxaderendimento,Correntista correntista,double saldo)
    {
        super(correntista,saldo);
        this.taxaderendimento=taxaderendimento;
    }

    public double getTaxaderendimento()
    {
        return taxaderendimento;
    }

    public void setTaxaderendimento(double taxaderendimento) 
    {
        this.taxaderendimento = taxaderendimento;
    }
    
    public double creditaRendimento()
    {
        return 0.0;
    }

}

Olá,
Só uma pergunta: pra que vc tem um setSaldo na sua classe?

public void setSaldo(double saldo) {
    this.saldo=saldo;
}

???
Você ta protegendo os atributos da sua class com uso do “private”, mas não ta impedindo ninguem de fzr isso:

Correntista c=new Correntista("kasjdsad");
c.setSaldo=-1928;

Use getters e setters apenas quando necessário…

Outra dica: será que toda Conta Poupança é uma Conta Corrente?? acho que essa herança fica meio sem sentido…
A não ser que no sistema pretendido uma Conta Poupança não passa de uma Conta Corrente com outras caracteristicas especias adicionais!!!
Quanto ao seu UML dá pra deixar ele mais claro, tenta destacar mais o texto pra melhor percepção do que realmente é pedido… Abrç :wink:

…uma sugestão…

se se vc declarasse uma classe conta, que teria toda a estrutura elementar de uma conta…

depois a partir dela, usando da herança…poderia ser interfaces, mas como nesse caso pede herança…

criaria as outras contas, corrente e poupança…

somente a partir dai criaria uma classe Correntista que teria um campo contas do tipo Conta, que poderias guardar todas suas contas…

mais ou menos assim…

[code]
//Estrutura Banco.
class Conta {}

class ContaCorrente extends Conta{}

class ContaPoupanca extends Conta{}

class Correntista{
Conta[] contas;
}[/code]
ai…seguir implementando os métodos…

[]'s

Luciano

e de preferencia que a class conta seja abstract… Pois só existira conta corrente ou poupança e nunca conta apenas…