Reaproveitamento de código

4 respostas
java
D

Boa noite.

Levando em consideração o seguinte código:

Users user=new Users();

public Object retornaUser() {

    user.setAcesso(Acesso.A);

    user.setCPF(textCPF.getText());

    user.setNome(textNome.getText());

    user.setSobrenome(textSobrenome.getText());

    Endereco endereco = new Endereco();

    endereco.setRua(textCidade.getText());

    endereco.setBairro(textBairro.getText());

    endereco.setCEP(textCEP.getText());

    endereco.setComplemento(textComplemento.getText());

    endereco.setNumero(Integer.parseInt(textNumero.getText()));

    Estado estado = new Estado();

    estado.setSigla(comboEstado.getSelectionModel().getSelectedItem().toString());

    estado.setNome(setNomeEstado());

    endereco.setCidade(textCidade.getText());

    endereco.setEstado(estado);

    user.setEndereco(endereco);

    Telefone telefone = new Telefone();

    telefone.setTelResidencial(textTelRes.getText());

    telefone.setTelCelular(textTelCel.getText());

    user.setTelefone(telefone);

    user.setEmail(textEmail.getText());

    if (radioMasculino.isSelected()) {

        user.setSexo(Masculino);

    } else if (radioFeminino.isSelected()) {

        user.setSexo(Feminino);

    }

    user.setAniversario(dataNascimento.getValue());

    user.setLogin(textLogin.getText());

    user.setSenha(textSenha.getText());

    return user;

}

Classes Gerente, Caixa e Funcionario herdam da classe Users. Como eu poderia reaproveitar o código acima? Sem ter que reescrever ele 3x?

Obrigado.

4 Respostas

Rodrigo_Void

Já estudou herança?

D

O único estudo que tenho acerca de Java foi feito através de cursos pela internet, minha atividade é outra, mas gosto muito desse assunto (programação). Por isso, tenho feito perguntas por aqui, depois de passar um dia tentando/pesquisando. Para o caso em tela, eu gostaria de criar um user e fazer um cast depois para gerente,caixa ou frentista. Mas isso não é possível.

FearX

Possível, é. Você só tem que entender um conceito: O que, de fato, é o cast? Como e para que se usa ele?

Inevitavelmente você entrará em Herança. Bem-vindo ao mundo da Orientação à Objetos.

D

Bom, eu esperava que me dessem um norte sobre como resolver meu problema. Como não foi o caso, aos próximos que estiverem na mesma situação estou postando a solução que eu entrei:

Users user;

private Object retornaUser() {

    if(radioGerente.isSelected()) {

        Gerente gerente = new Gerente();

        user=gerente;

    } else if(radioCaixa.isSelected()) {

        Caixa caixa = new Caixa();

        user=caixa;

    } else if(radioFrentista.isSelected()) {

        Frentista frentista = new Frentista();

        user=frentista;

    }

    <a href="//user.setAcesso">//user.setAcesso</a>(Acesso.A);

    user.setCPF(textCPF.getText());

    user.setNome(textNome.getText());

    user.setSobrenome(textSobrenome.getText());

    Endereco endereco = new Endereco();

    endereco.setRua(textCidade.getText());

    endereco.setBairro(textBairro.getText());

    endereco.setCEP(textCEP.getText());

    endereco.setComplemento(textComplemento.getText());

    endereco.setNumero(Integer.parseInt(textNumero.getText()));

    Estado estado = new Estado();

    estado.setSigla(comboEstado.getSelectionModel().getSelectedItem().toString());

    estado.setNome(setNomeEstado());

    endereco.setCidade(textCidade.getText());

    endereco.setEstado(estado);

    user.setEndereco(endereco);

    Telefone telefone = new Telefone();

    telefone.setTelResidencial(textTelRes.getText());

    telefone.setTelCelular(textTelCel.getText());

    user.setTelefone(telefone);

    user.setEmail(textEmail.getText());

    if (radioMasculino.isSelected()) {

        user.setSexo(Masculino);

    } else if (radioFeminino.isSelected()) {

        user.setSexo(Feminino);

    }

    user.setAniversario(dataNascimento.getValue());

    user.setLogin(textLogin.getText());

    user.setSenha(textSenha.getText());

    return user;

}

Este método, se eu estiver certo retorna um Object, o que foi a minha solução, já que todo mundo herda de object (se não me engano).

Agora o método do botão para cadastrar o Gerente, Caixa ou Frentista:

public void btActionConfirmar(ActionEvent event) {

    if(radioGerente.isSelected()) {

        Gerente gerente = (Gerente) retornaUser();

        this.USERS_DAO.salvarUsersDAO(gerente);

    } else if(radioCaixa.isSelected()) {

        Caixa caixa = (Caixa) retornaUser();

        this.USERS_DAO.salvarUsersDAO(caixa);

    } else if(radioFrentista.isSelected()) {

        Frentista frentista = (Frentista) retornaUser();

        this.USERS_DAO.salvarUsersDAO(frentista);

    }

Essa era exatamente a solução que eu estava buscando, pois ainda sou muito iniciante nesse negócio, sendo assim, tenho uma noção básica das coisas, e preciso, sempre que possível, ajuda de quem tem mais experiência para ajudar a solucionar as minhas questões, aí sim, eu posso evoluir com maior velocidade e solidez. De qualquer sorte, fica aí a minha solução para as próximas pessoas que eventualmente estiverem com problemas semelhantes.

Criado 4 de abril de 2019
Ultima resposta 4 de abr. de 2019
Respostas 4
Participantes 3