Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Como identifico para qual pessoa será feito a transferência?

Então, na classe principal nós criamos as instâncias da classe como

        Conta contaDoRafael = new Conta();
        Conta contaDaMarcela = new Conta();

e no método deposita da classe Conta, nós passamos essas referências para fazer a identificação.

    public boolean transfere(double valor, Conta destino) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            destino.deposita(valor);
            return true;
        } else {
            return false;
        }

Como eu realmente poderia transferir de fato para tal pessoa indicando o nome? já que não vamos criar várias referências para contaDoFulano, contaDoCiclano, contaDoRafael, contaDaMarcela.

4 respostas

Oii Rafael, tudo bem? Eu não entendi tão bem a sua dúvida, mas pensei em uma possível solução.

public boolean transfere(double valor, Conta destino, String titular) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            destino.deposita(valor);
            return true;
            System.out.println("Transferencia concluída para o titular: " + titular); // você escolhe a mensagem que você preferir para mostrar no console
        } else {
            return false;
        }

Dessa forma você estaria colocando o nome do titular da conta nos argumentos do método, e na classe principal ao chamar esse método teria que passar, obrigatoriamente, nos argumentos o nome da pessoa ao transferir.

Aí nesse método ele só recebe o argumento titular e apresenta no System.out, mas na hora de depositar na Conta destino ele não indica pra qual pessoa irá o saldo baseando-se nesse argumento.Minha dúvida seria, de como podemos depositar na conta da pessoa certa passando o argumento "titular.

Por exemplo: temos duas contas, uma com titular Marcela e outra com titular Rafael. Aqui no nosso caso, nós criamos as variáveis contaDaMarcela e contaDoRafael, certo? Mas se essas contas estivessem em um banco de dados, não teria como a gente nomear essas variáveis dessa forma. E então nós queremos depositar na conta certa indicando o titular como chave (depositar na conta do titular Rafael.

Eu não sei se consegui deixar mais claro ou piorei tudo. Kkkkkk. Mas caso tenha ficado mais difícil de compreender, coloco um outro exemplo.

As variáveis/referências são do tipo Conta, logo elas carregam consigo os atributos da classe Conta e entre eles está o titular da conta.

Quando você passa a referencia "contaDaMarcela" ou "contaDoRafael" no método e diz que deve ser transferido para essa conta, você já está atribuindo para a pessoa, mesmo sem utilizar o atributo "titular" como parâmetro. Você verá mais adiante o conteúdo sobre construtores, que nos permite criar uma instancia já atribuindo valores para seus atributos. E quando fazemos isso na memória é criado um objeto do tipo Conta com vários atributos, entre eles o nome da pessoa que é titular da conta. Podemos concluir que apenas usando a referência para o objeto já possuímos o acesso ao seu nome.

Acredito que não será possível criar o método passando o titular como argumento pois:

Observe que o método "transfere", utiliza como parâmetro a Conta, para que dessa forma você consiga acesso aos métodos da classe Conta, e entre eles está o método "deposita".

Se colocarmos apenas "String titular" como parâmetro não será possível acessar o método "deposita" da classe Conta, pois o tipo da variável não é do tipo Conta e sim String, e então o método será falho e nenhum dinheiro será transferido.

solução!

Boa tarde, Rafael, E muito bem observado. No momento, esse código não tem essa funcionalidade que vc falou. Para isso, seria necessário agrupar as contas e encontrar uma forma de selecionar a conta correta, mais para frente irá ver no curso a respeito de (Collections, List, ArrayList, etc), que é uma forma de fazê-lo. Outra seria usar um switch, ou if, para determinar qual conta irá realizar o depósito.

Já quanto a ir para um banco de dados, é um problema de persistência, ou seja, como guardamos os dados de forma permanente. Nesse caso, os bancos tem método para guardar, buscar e devolver informações para que isso ocorra. Sugiro ver o básico de SQL para ver funcionando na prática.

Com o seu código Java e um banco de dados, usamos uma API para comunicar os dois. Tendo as condições para ter essa funcionalidade.

Enfim, tenha paciência e continue os estudos que logo vc verá como tudo se encaixa.

Abraços E bons estudos