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

Dúvida na criação de métodos

Eu estava fazendo alguns testes no código e neste caso decidi criar mais uma conta e mais um cliente, percebi que poderia fazer um método para a criação do cliente recebendo o nome, cfp e progissão? Já que neste caso utilizei o mesmo código para criar 2 clientes, seria viável criar um método para isso?

Pensei em criar um método porém não sei qual tipo de palavra-chave utilizar no retorno já que void e main não servem para este caso.


public class TestaConta {

    public static void main(String[] args) {

        Conta contaDoPaulo = new Conta();
        contaDoPaulo.deposita(100);

        Conta contaDoThales = new Conta();
        contaDoThales.deposita(1000);

        //associa o cliente paulo a conta contaDoPaulo
        contaDoPaulo.titular = new Cliente();
        contaDoPaulo.titular.nome = "Paulo Silveira";
        contaDoPaulo.titular.cpf = "XXX.XXX.XXX-XX";
        contaDoPaulo.titular.profissao = "programador";

        contaDoThales.titular = new Cliente();
        contaDoThales.titular.nome = "Thales Castellani";
        contaDoThales.titular.cpf = "000.000.000-00";
        contaDoThales.titular.profissao = "programador";

        System.out.println(contaDoPaulo.saldo);
        System.out.println(contaDoThales.saldo);

        contaDoThales.transfere(200, contaDoPaulo);
        System.out.println(contaDoThales.saldo);
        System.out.println(contaDoPaulo.saldo);

    }

}
2 respostas
solução!

Fala, Thales! Tudo bem contigo?

Para nós criarmos através dos construtores, podemos criar quantos forem, com o mesmo nome inclusive, contanto que seus parâmetros não coincidam . Por exemplo:

Na minha classe Conta eu possuo os seguintes atributos:

class Conta {

    int numero;
    String agencia;
    String titular;
    double saldo;
    String dataDeAbertura;

E crio meu construtor

    public Conta(int numero, String agencia, String titular, double saldo, String dataDeAbertura) {
        this.numero = numero;
        this.agencia = agencia;
        this.titular = titular;
        this.saldo = saldo;
        this.dataDeAbertura = dataDeAbertura;
    }

Agora quero adicionar a profissão

String profissao;

e também vou construir um outro construtor com o mesmo nome

    public Conta(int numero, String agencia, String titular, String profissao, double saldo, String dataDeAbertura) {
        this.numero = numero;
        this.agencia = agencia;
        this.titular = titular;
        this.profissao = profissao;
        this.saldo = saldo;
        this.dataDeAbertura = dataDeAbertura;

No momento em que eu for criar meu objeto ele vai perguntar qual construtor eu quero usar

Agora, se eu dou os mesmo argumentos do primeiro construtor, ele vai gerar um erro por não saber qual utilizar.

Então, no seu caso, você pode utilizar o primeiro construtor para um cliente sem profissão e um segundo cliente com profissão o segundo construtor ...

Maaaasss... rs

já antecipo, Thales, que quando começar o polimosfismo você verá que a construção de um segundo construtor não é tão bacana não... existem outros caminhos melhores!!!

Espero ter ajudado, meu amigo!!!

Bons estudos!

Olá Thales,

uma sugestão para vc utilizar nessa composição seria criar o cliente e passar ele utilizando um método setCliente, existente em conta.

Mas se vc considerar que uma conta, não pode ter o cliente alterado após criada, aí criaria o cliente e passaria ele para a conta no construtor.

Perceba que caso quisesse alterar o nome do cliente, poderia fazer isso diretamente no objeto Cliente. Ou seja, a classe Cliente poderia ter um método setNome.

Algo assim:

class Cliente{
    String nome;

    public Cliente (String nome){
        this.nome = nome;
    }
}

class Conta {

    Cliente cliente;
    double saldo;

    public Conta(Cliente cliente){
        this.cliente = cliente;        
    }

    public void depositar(double valor){
        this.saldo += valor;
    }

    public void sacar(double valor){
        this.saldo -= valor;
    }    
}

class TestaConta {
    public static void main(String[] args) {

        Cliente cliente = new Cliente("Fulano");
        Conta conta = new Conta(cliente);    

        conta.depositar(100.0);
        conta.sacar(50.0);        
    }
}