[b]Bom dia pessoal!
Galera, estou pela primeira vez implementando um programa JAVA com a temida ( pelo menos para mim auhauhauhahu ), OOP!
O meu professor começou a passar conceitos de OOP, e seus agregados em aula, e acabou pedindo para construirmos uma classe “ControleFuncionarios”, uma super classe “Empregado” e trés classes estendidas de empregado rotuladas como “Gerente”, “Programador” e finalmente “Secretaria”.
Eu comecei a implementar meu código como segue abaixo: [/b]
[code]import javax.swing.JOptionPane;
public class ControleFuncionarios {
public static void main(String[] args) {
int continua = 0, contador=0;
int tipo=0;
String situacao;
int numGerentes=0, numSecret=0, numProgram=0;
Empregado[] empregados = new Empregado[100];
String[] tipoFunc = {"GERENTE", "SECRETARIA", "PROGRAMADOR"};
do {
situacao = " Existem " + contador + " Empregados cadastrados de um total de " + empregados.length +
"\n sao:\n" +
numGerentes + " Gerentes\n" +
numSecret + " Secretarias\n" +
numProgram + " Programadores\n" +
"\n Deseja cadastrar um novo empregado? ";
continua = JOptionPane.showConfirmDialog(null, situacao );
if (continua==0) {
String nome = JOptionPane.showInputDialog(" Informe o nome do novo empregado ");
String sobrenome = JOptionPane.showInputDialog(" Informe o seu sobrenome " );
String ano = JOptionPane.showInputDialog("Informe o ano de admissao de " + nome);
int a = Integer.parseInt( ano );
String mes = JOptionPane.showInputDialog("informe o mes de admissao " + nome);
int m = Integer.parseInt(mes);
String dia = JOptionPane.showInputDialog("Informe o dia de admissao de " + nome);
int d = Integer.parseInt(dia);
String tel = JOptionPane.showInputDialog("Informe o telefone de " + nome);
String cpf = JOptionPane.showInputDialog("Informe o cpf de " + nome);
int c = Integer.parseInt(cpf);
String anoN = JOptionPane.showInputDialog("Informe o ano de nascimento de " + nome);
int aN = Integer.parseInt(anoN);
String mesN = JOptionPane.showInputDialog("Informe o mes de nascimento de " + nome);
int mN = Integer.parseInt(mesN);
String diaN = JOptionPane.showInputDialog("Informe o dia de nascimento de " + nome);
int dN = Integer.parseInt(diaN);
Empregado e = new Empregado(nome, sobrenome, a, m, d, tel, c, aN, mN, dN);
tipo = JOptionPane.showOptionDialog(null, nome + " e um? ", " Cadastro ", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, tipoFunc, "GERENTE");
if(tipo == 0) {
// informou que é GERENTE
empregados[contador] = new Gerente(nome, sobrenome, a, m, d, tel, c, aN, mN, dN);
numGerentes++;
for(int i = 0; i < empregados.length; i++){
if (empregados[i] instanceof Gerente);
Gerente p = (Gerente) empregados[i];
}
p.setNivelPrograma nior";
psetNome = " jose ";
} else if(tipo == 1) {
// informou que é SECRETARIA
empregados[contador] = new Secretaria(nome, sobrenome, a, m, d, tel, c, aN, mN, dN);
numSecret++;
} else {
// informou que é PROGRAMADOR
empregados[contador] = new Gerente(nome, sobrenome, a, m, d, tel, c, aN, mN, dN);
numProgram++;
}
contador++; // incrementa o numero de funcionarios cadastrados
}
} while (continua == 0);
System.out.println("LISTANDO NA CONSOLE OS REGISTROS DO VETOR DE FUNCIONARIOS.... ");
for (int i = 0; i < contador; i++) {
System.out.println("EMPREGADO NO REGISTRO ["+i+"] = " + empregados[i].getNome()+ empregados[i].getSobreNome());
}
}
}[/code]
A superclasse:
[code]import java.util.Date;
import java.util.GregorianCalendar;
public class Empregado {
private String nome;
private String sobrenome;
private double salario;
private final Date dataAdmissao;
private String telefone;
private int cpf;
private Date nascimento;
public Empregado(String novoEmpregado, String sobreNomeInf, int ano, int mes, int dia, String telefoneInf, int cpfInf, int anoN, int mesN, int diaN) {
nome = novoEmpregado;
sobrenome = sobreNomeInf;
GregorianCalendar calendario = new GregorianCalendar(ano, mes-1, dia);
dataAdmissao = calendario.getTime();
telefone = telefoneInf;
cpf = cpfInf;
GregorianCalendar calendarioN = new GregorianCalendar(anoN, mesN-1, diaN);
nascimento = calendario.getTime();
}
public String getNome(){
return nome;
}
public String getSobreNome(){
return sobrenome;
}
public double getSalario(){
return salario;
}
public Date getDataContratacao(){
return dataAdmissao;
}
public String getTelefone(){
return telefone;
}
public Date getDataNascimento(){
return nascimento;
}
public int getcpf(){
return cpf;
}
protected void informaSalario(double salarioInformado){
salario = salarioInformado;
}
}[/code]
E como exemplo segue uma classe estendida de Gerente:
[code]public class Gerente extends Empregado {
double comissao;
public static final double salario = 680.60;
public Gerente(String novoEmpregado, String sobreNomeInf, int ano, int mes, int dia, String telefoneInf, int cpfInf, int anoN, int mesN, int diaN) {
super(novoEmpregado, sobreNomeInf, ano, mes, dia, telefoneInf, cpfInf, anoN, mesN, diaN );
}
public double getComissao(){
return comissao;
}
public double getSalario(){
System.out.println("o salario de " + this.getNome() +
" é " + super.getSalario());
//double salarioTotal = super.getSalario() + comissao;
return comissao;
}
}[/code]
[b]
Pessoal, na verdade o que estou querendo fazer, e receber os dados de um novo funcionário, dizer se ele é gerente programador ou secretaria, e como exemplo perguntar se um programador é “sênior”, “júnior” ou “pleno” (a classe programador não foi postada, estou citando apenas um exemplo), e por fim calcular um bônus de cada funcionário em cima do salario!
Ao final do programa, gostaria de mostrar no console uma listagem de todos os programadores, gerentes e secretarias, com seus respectivos dados e salario adicionado com o bônus.
Minhas duvidas são tantas que eu nen sei por onde começar. Mais vamos lá:
-
O código está muito confuso? (o que eu poderia mudar para tornar de mais fácil compreensão);
-
Na linha 64 da classe “ControleFuncionario”, como eu posso fazer para varrer o array e dizer quem e 'gerente", “programador” e “secretaria”, e aplicar alguns métodos?
Galera, por enquanto eu acho que é só. Estou muito confuso, parece que quanto mais eu leio os livros e PDF’s da vida mais “embolada” ficam as minhas idéias!
Ficaria muito agradecido se vocês me ajudassem a desvendar os mistérios da OOP.
Qualquer duvida, se eu tiver me expressado mal estou a plena disposição!
Muito Obrigado
Abrass…[/b]