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

Custo de memória na instancia do objeto

package bytebank2;

public class TesteComposicaoObjetos {

public static void main(String[] args) {

    Conta bradesco = new Conta();

    bradesco.agencia=123;
    bradesco.numero=987896;
    bradesco.saldo=500.0;

    //bradesco.titular = new Cliente();
    bradesco.titular.cpf="012345678";
    bradesco.titular.nome="Ricardo Menezes";
    bradesco.titular.profissao="Analista de sistema";

    System.out.println("Cliente: " + bradesco.titular.nome);
    System.out.println("Cpf: " + bradesco.titular.cpf);
    System.out.println("Ag.: " + bradesco.agencia);
    System.out.println("Conta: " + bradesco.numero);
    System.out.println("Possui disponível: " + bradesco.saldo);
}

}

Tenho um cenário: 1 classe Cliente, 1 classe Conta e 1 classe TesteComposicaoObjetos A classe Cliente possui apenas atributos do cliente; A classe Conta possui atributos da conta e a referência não instanciada do objeto Cliente. A classe TesteComposicaoObjetos possui o void main. Dúvida: Se eu já coloco na classe Conta a referência instanciada do objeto Cliente, exemplo: public class Conta {

double saldo;
int agencia;
int numero;
Cliente titular = new Cliente();

}

Neste exemplo, toda vez que instancia a classe Conta, estarei também instanciando a classe Cliente, ou seja, na linha "Conta bradesco = new Conta();" estarei referenciando 2 espaços de memoria (Objetos), certo? Caso certo, pensando em encomia de espaço em memória, não seria interessante na maioria dos casos deixar a inicialização da instancia do objeto para o desenvolvedor que irá desenvolver o void main, exemplo: Deixar a classe de conta apenas com a referência para o objeto tipo Cliente: public class Conta {

double saldo;
int agencia;
int numero;
Cliente titular;

}

2 respostas

Verdade, toda vez que você instanciar uma conta ira instanciar também um cliente assim gastando mais espaço na memória, só que você tem que se lembrar de que caso você tenha algum método que ira utilizar como parâmetro o "this.titular", ele tem que estar inicializado senão ira dar erro de nullpointexception. No final da conta você teria que instanciar de qualquer maneira , seja de forma direta nos atributos ou com um set.

solução!

É neste ponto que queria chegar. Acho interessante o desenvolvedor refletir sobre já instanciar ou não o tipo de objeto. Imagina a situação: Seu chefe chega e fala que os desenvolvedores só precisaram consumir sua classe conta para projetos de cálculo, onde os dados do cliente não serão consultados ou usados. Neste cenário eu tenho uso de memória a mais se eu deixar já instanciado na classe. Entendo que sempre que a classe é usada em sua totalidade, é de boa pratica deixar já os objetos instanciados, mas quando não houver a obrigatoriedade de usar tudo, não seria melhor deixar para o desenvolvedor instancia? Não tenho muito feeling, por isto fiz a pergunta para saber se esta preocupação é valida neste mundo ou não, pois no final das contas sempre é usado tudo, entende?