Alguém pode me dar uma ajuda quanto a esse código, tô fazendo coisa errada mas ñ estou sabendo como arrumar :oops: Para preencher os atributos da classe, é onde estou errando
Olá Paloma!
Embora vc naum tenha nos dado uma dica de que erro está dando, presumo que seja algo relacionado com vc estar tentando acionar diretamente, por exemplo, o campo nome.
Perceba que no método main, vc está tentando atribuir o valor que o usuário digitar diretamente no campo nome da sua classe.
Porque vc não consegue fazer isso? Por que o método main é um método static, e por isso, só consegue se referenciar a outros métodos ou campos que sejam também static, o que não é o caso do campo nome (nem de nenhum outro campo.
Sugiro que vc faça o seguinte:
public class Funcionario {
...
public static void main (String [] args){
String cx1;
Funcionario func1 = new Funcionario();
func1.setNome(JOptionPane.showInputDialog ("Entre com o nome do funcionário"));
...
func1.setSalario(Double.parseDouble (cx1));
...
System.exit (0);
}
}
No código acima no main estou exibindo os dados, mas caso eu crie um outro objeto como func2, pra ñ ter q fazer de novo seria melhor que eu criasse um método só pra exibir e o chamasse, como func1.exibir(); e func2.exibir(), isso seria coerente?
Seria a última palavra em coerência!!! :thumbup:
Tanto é, que o propósito do método toString() é justamente esse, retornar uma String com uma descrição que possa ser utilizada e compreendida pelo usuário. Claro que para isso você tem que sobrescrevelo de forma apropriada. Alternativamente, vc poderia sim fazer o tal do método exibir()! Seu main iria ficar muito mais limpo!!!
Faça isso sim! Depois mostra para nós como ficou, ok!
public static void main (String [] args){
String cx1;
Funcionario func1 = new Funcionario();
func1.setNome (JOptionPane.showInputDialog ("Entre com o nome do funcionário"));
func1.setDepto (JOptionPane.shwoInputDialog ("Departamento em que trabalha"));
func1.setDataEntrada (JOptionPane.showInputDialog ("Data de admissão"));
func1.setRg (JOptionPane.showInputDialog ("RG(Registro Geral)"));
cx1 = JOptionPane.showInputDialog ("Salario atual");
func1.setSalario (Double.parseDouble (cx1));
func1.exibir();
System.exit (0);
}
}[/code]
Agora no caso de exibir o correto seria fazer func1.getNome()…
Mas e se eu criar outro objeto como seria, pq quero chamar esse método para imprimir todos os objetos que criar :roll:
Não. Mesmo porque a variável func1 não está no escopo do (não é visível pelo) método exibir(). E além do mais, uma classe não precisa acessar seus próprio campos através de métodos get, afinal, os campos são dela e ela usa eles o quanto e como bem entender… :thumbup:
Do jeito que vc fez, tá certinho!
.
… da mesma classe(Eu suponho) …
[quote=paloma]
…como seria, pq quero chamar esse método para imprimir todos os objetos que criar :roll: [/quote]
Do mesmíssimo jeito que vc fez no main! O seu método exibir é público. Logo, qualquer objeto da sua classe Funcionario, em qualquer lugar, vai sempre poder invocar o exibir().
Qq dúvida, poste mais,ok!
isso mesmo… aliás, um outro jeito também que pode ser interessante, seria pegar toda aquela string que você formou e colocar ela vindo do método toString(), aí vc também poderia fazer assim:
System.out.println(func1);
e iria sair naquele formato lá… pode ser uma boa
[edit] ah claro, também aí poderia mudar seu exibir para:
JOptionPane.showMessageDialog (toString(),
"DADOS DO FUNCIONÁRIO", JOptionPane.INFORMATION_MESSAGE);
}
Isso mesmo!
Por exemplo, veja esta classe que usa a sua classe funcionário:
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JOptionPane;
public class TesteFuncionario {
public static void main(String[] args) {
boolean more = true;
ArrayList funcis = new ArrayList();
while(more) {
JOptionPane ask = new JOptionPane("", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
Funcionario funci = new Funcionario();
funci.setNome(ask.showInputDialog(null, "Informe o nome do funcionário"));
funci.setDepto(ask.showInputDialog(null, "Informe o departamento"));
funci.setDataEntrada(ask.showInputDialog(null, "Informe a data de entrada"));
funci.setRg(ask.showInputDialog(null, "Informe o RG"));
funci.setSalario(Double.parseDouble(ask.showInputDialog(null, "Informe o salário atual")));
funcis.add(funci);
more = ask.showConfirmDialog(null, "Mais funcionários?") == JOptionPane.YES_OPTION;
}
for (Iterator iter = funcis.iterator(); iter.hasNext(); ) {
Funcionario funci = (Funcionario) iter.next();
funci.exibir();
}
}
}
Aqui é outra classa, em outro arquivo que coleciona uma penca de funcionários, e invoca o exibir() de cada um deles!
Qq dúvida, poste mais!