Criando um Sistema de Reservas para Salas

3 respostas
java
MrMarinho

Boa Tarde Pessoal, estou realizando um projeto Java Desktop e estou com uma dúvida quanto ao sistema de herança entre duas classes, a dúvida seria a seguinte, tenho uma classe Funcionário que herda atributos e funções da Classe Pessoa, no caso de fazer a inclusão de funcionário como ficaria pra incluir os atributos de Pessoa no Funcionário. Vou colocar abaixo o código que fiz até agora.

package DAO;

/**

  • Classe criada para realizar movimentações na tabela Funcionários
  • (FAZER CRUD) em um “Vetor” no caso ArrayList de Funcionários
  • @author José Luiz Bertoli Marinho
  • @since Classe criada dia 20 de Novembro de 2019
    */
import Model.Login;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.swing.JOptionPane;

public class FuncionarioDAO extends PessoaDAO{

Connection con = null;

PreparedStatement pre = null;
Conexao conexao = new Conexao();

public void incluirFuncionario(String FunTipo, String FunLogin, String FunSenha){
    con = conexao.obterConexaoComBD();
    try{
         String sql = "insert into funcionarios" + "(FunTipotipo,FunLoginlogin,FunSenha) values (?,?,?)";
        pre = con.prepareStatement(sql);
        pre.setString(1, FunTipo);
        pre.setString(2, FunLogin);
        pre.setString(3, FunSenha);
        pre.executeUpdate();
        
        System.out.println(pre);
        System.out.println("Funcionário Incluído Com Cucesso !");
    }
    catch(Exception e){
        System.out.println("Erro ao incluir: ");
        System.out.println(e.getMessage());
    }
}

3 Respostas

TerraSkilll

Quais campos a tabela funcionarios possui? Se ela possui todos os campos referentes à pessoa, basta adicionar esses campos no seu insert e passar os devidos parâmetros. Algo como:

String sql = "insert into funcionarios" + "(NomePessoa,FunTipotipo,FunLoginlogin,FunSenha) values (?,?,?,?)";
pre = con.prepareStatement(sql);
pre.setString(1, NomePessoa);
pre.setString(2, FunTipo);
pre.setString(3, FunLogin);
pre.setString(4, FunSenha);

Obviamente, você precisará ajustar os parâmetros do método incluirFuncionario para ter os campos extras necessários. Por isso, recomendo que, em vez de passar cada campo como parâmetro, passe um objeto Funcionario completo. Algo como:

public void incluirFuncionario (Funcionario func){
// código antes dos parâmetros
    pre.setString(1, func.getNomePessoa());
    pre.setString(2, func.getTipo());
    pre.setString(3, func.getLogin());
    pre.setString(4, func.getSenha());
// resto do código
}

Abraço.

MrMarinho

Obrigado TerraSkilll, ficaria então mais ou menos assim?

package DAO;

/**

  • Classe criada para realizar movimentações na tabela Funcionários
  • (FAZER CRUD) em um “Vetor” no caso ArrayList de Funcionários
  • @author José Luiz Bertoli Marinho
  • @since Classe criada dia 20 de Novembro de 2019
    */
import Model.Login;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.swing.JOptionPane;

public class FuncionarioDAO extends PessoaDAO{

Connection con = null;

PreparedStatement pre = null;
Conexao conexao = new Conexao();

public void incluirFuncionario(String PesNome, String PesSexo,Integer PesDataNasc,String PesCPF, String PesRG, 
String PesTelefone, String PesEndereco, Integer PesNumero, String PesBairro, String PesCidade, String PesEstado, 
String PesCep, String FunTipo, String FunLogin, String FunSenha){
    con = conexao.obterConexaoComBD();
    try{
         String sql = "insert into funcionarios" + "(FunTipotipo,FunLoginlogin,FunSenha) values (?,?,?)";
        pre = con.prepareStatement(sql);
        pre.setString(1, PesNome);
        pre.setString(2, PesSexo);
        pre.setInt(3, PesDataNasc);
        pre.setString(4, PesCPF);
        pre.setString(5, PesRG);
        pre.setString(6, PesTelefone);
        pre.setString(7, PesEndereco);
        pre.setInt(2, PesNumero);
        pre.setString(8, PesBairro);
        pre.setString(9, PesCidade);
        pre.setString(10, PesEstado);
        pre.setString(11, PesCep);
        pre.setString(12, FunTipo);
        pre.setString(13, FunLogin);
        pre.setString(14, FunSenha);
        pre.executeUpdate();
        
        System.out.println(pre);
        System.out.println("Funcionário Incluído Com Cucesso !");
    }
    catch(Exception e){
        System.out.println("Erro ao incluir: ");
        System.out.println(e.getMessage());
    }
}

e no caso o Alterar e Excluir ficaria a mesma coisa?

TerraSkilll

Mais ou menos.

Você não tem uma classe Funcionario? Se sim, por que não passa uma instância completa de Funcionario (como eu sugeri no final da minha resposta), em vez desse monte de parâmetros? Seu código vai ficar mais fácil de entender e modificar.

Além disso, você não mudou o comando sql. Precisa adicionar os demais campos e os sinais e interrogação referentes à cada campo.

De certa forma sim. Obviamente, você terá que mudar de insert para update no Alterar, e o Excluir só precisa do id a ser excluído, em vez de todos os campos do Funcionario.

Abraço.

Criado 23 de novembro de 2019
Ultima resposta 23 de nov. de 2019
Respostas 3
Participantes 2