Java Swing e Orientação a Objetos

3 respostas
poojava
M

Bom dia, estou aprendendo OO e estou com uma dificuldade no Java Swing em questão do funcionamento da tela em uma Ordem de Serviço, na OS teria uma “Chave Estrangeira”(atributo do tipo da Classe Mecânico), mas na hora de settar o atributo para o cliente, não estou conseguindo, meu código abaixo:

public class OrdemServico {

    private Veiculo veiculo;
    private Mecanico mecanico;
    private int cod_os;
    private Date data_emissao;
    private String servico;

    public String getServico() {
        return servico;
    }

    public void setServico(String servico) {
        this.servico = servico;
    }

    public Veiculo getVeiculo() {
        return veiculo;
    }

    public void setVeiculo(Veiculo veiculo) {
        this.veiculo = veiculo;
    }

    public Mecanico getMecanico() {
        return mecanico;
    }

    public void setMecanico(Mecanico mecanico) {
        this.mecanico = mecanico;
    }

    public int getCod_os() {
        return cod_os;
    }

    public void setCod_os(int cod_os) {
        this.cod_os = cod_os;
    }

    public Date getData_emissao() {
        return data_emissao;
    }

    public void setData_emissao(Date data_emissao) {
        this.data_emissao = data_emissao;
    }

}

Isso é a classe básica da OS.
Meu botão que não estou conseguindo:

private void jButtonGerarOSActionPerformed(java.awt.event.ActionEvent evt) {                                               
        OrdemServico os = new OrdemServico();
        os.setServico(jTextFieldServico.getText());
        os.setMecanico((jTextFieldMecanicoOS.getText()));
       //Dá problema de tipos incompatíveis, sei que se conseguir consertar esse problema, terei que fazer a conversão de String(por causa da jTextField) para Int(por causa do código do mecânico).

    }

Eu teria que instanciar o mecânico também dentro do botão ? Se sim, por qual motivo eu instancio ele dentro da Classe Básica(Apenas para identificar ??) ?

3 Respostas

darlan_machado

Várias confusões só na primeira frase

O conceito de chaves não se aplica a objetos. Objetos possuem atributos e não existe a necessidade de uma chave referenciando outra.

Agora,

Realmente você terá problemas com isso. Afinal, Mecanico é do tipo Mecanico, não do tipo String.
Você vai precisar criar algo que permite identificar, a partir da informação inserida pelo usuário, qual o mecânico em questão

M

Eu sei que não existe chave estrangeira, só fiz a referência pois não sabia explicar de outra forma, porém, a classe básica está correta ?

Em relação a segunda dica, de que forma você fala ? terei que instanciar o mecânico dentro da classe, para poder dar um “setCod” ?

M

Conseguir corrigir meu problema, era primeiro o getMecanico() para ele ir buscar o mecânico na classe básica, depois escolher o setCod. Ficou assim:

os.getMecanico().setCodigoMecanico(Integer.parseInt(jTextFieldMecanicoOS.getText()));
Criado 24 de maio de 2018
Ultima resposta 24 de mai. de 2018
Respostas 3
Participantes 2