Boa noite pessoal , estou com uma duvida, na qual estou confuso com a mesma … Onde no exercicio pede para criar um metodo mostra () , que nao devolva parametro algum e simplesmente imprime todos os atributos do funcionario até ai esta tranquilo , a duvida é no exercicico diz que usando este metodo nao será preciso colar um monte de System.out.println (), abaixo segue o trecho do codigo com uma inserção do atributo nome e rodou ,agora como imprimir todos os atributos sem colocar o comando para imprimir Lembrando que inseri no codigo esta linha f1.mostra();
void mostra (){
System.out.println("Nome:"+ this.nome);
}
Bom, vejo basicamente duas formas de fazer isto, a primeira é
import static java.lang.System.out;
public class teste {
public static void main(String[] args){
mostra("Um Número", 0);
mostra("Um character", 'a');
mostra("Uma String", "um texto");
}
static void mostra(String texto, Object o){
//aqui você pode avaliar a necessidade de validar o objeto recebido
out.println(texto + ": " + o);
}
}
ou a a outra é simplesmente
mostra(){
System.out.println("texto1: " + <variavel A> + "\nTexto2: " + <variavel B>);
}
O segredo está em conhecer o método toString, este método pode ser sobrescrito para retornar uma String que “represente” o objeto…
veja um exemplo, repare que o metodo toString está sobrescrito em Funcionario:
[code]package A;
public class Funcionario {
private String nome;
private String cargo;
private String crm;
public final String getNome() {
return nome;
}
public final void setNome(String nome) {
this.nome = nome;
}
public final String getCargo() {
return cargo;
}
public final void setCargo(String cargo) {
this.cargo = cargo;
}
public final String getCrm() {
return crm;
}
public final void setCrm(String crm) {
this.crm = crm;
}
public void mostra(){
System.out.println(this);
}
@Override
public String toString() {
return "[ "+"nome: "+nome+", cargo: "+cargo+", crm :" +crm+" ]";
}
}
[/code]
classe de Teste:
[code]package A;
public class TestaFuncionario {
public static void main(String[] args) {
Funcionario f = new Funcionario();
f.setNome(“claudemir ribeiro”);
f.setCargo(“Progamador Java(a tecnologia do século”);
f.setCrm(“12345”);
f.mostra();
}
}
[/code]
A saída é:
[ nome: claudemir ribeiro, cargo: Progamador Java(a tecnologia do século, crm :12345 ]
Veja que se chamar na sua classe de Teste a linha abaixo o efeito será o mesmo:
System.out.println(f);
Veja mais informações neste post aqui mesmo no guj:
Espero ter ajudado:
Boa noite pessoal… Mesmo depois das dicas citadas nao estou conseguindo entender de fato como utilizar este metodo toString(na apostila diz que veremos este metodo mais a frente), estou confuso, gostaria se possivel de sanar as duvidas de acordo como se pede na primeira postagem, assim posso seguir passo a passo , e entender melhor .Segue o codigo onde estou inserindo no metodo o atributo nome e está rodando ! Estou testando passo a passo observa-se que em alguns trechos do codigo esta com comentario , justamente para nao me confundir.
Grato!
class Funcionario{
String nome;
//String departamento;
//double salario;
//String dataEntrada;
//String rg;
//boolean ativo;
//double aumento;
//double bonificacao;
//public double bonificacao(double aumento){
//return this.salario + aumento;
//}
//public boolean demite() {
//return ativo = false;
//}
void mostra (){
System.out.println("Nome:"+ this.nome);
}
}
class TestaFuncionario{
public static void main(String [] args){
Funcionario f1 = new Funcionario();
f1.nome = "Eduardo";
//f1.departamento ="TI";
//f1.salario = 120.00;
//f1.dataEntrada = "120312";
//f1.rg = "1123456";
//f1.bonificacao = (50);
//f1.ativo = true;
//f1.aumento = f1.salario+f1.bonificacao;
f1.mostra();
//double salario = f1.bonificacao(50);
/*
System.out.println("O nome do funcionario:"+f1.nome);
System.out.println("Departamento:"+f1.departamento);
System.out.println("Salario Atual :"+f1.salario);
System.out.println("Data da Entrada:"+f1.dataEntrada);
System.out.println("RG:"+f1.rg);
System.out.println("Bonificacao;"+f1.bonificacao);
System.out.println("Funcionário ativo:"+f1.ativo);
System.out.println("Seu novo salário é: "+salario);
System.out.println("O funcionario não trabalha mais aqui !!!");
*/
}
}
Deixa eu ver se entendi sua duvida. Você quer exibir todos esses atributos:
String nome;
//String departamento;
//double salario;
//String dataEntrada;
//String rg;
//boolean ativo;
//double aumento;
//double bonificacao;
Em apenas uma instrução
System.out.println() do metodo mostra()?
Se for isso faça assim:
System.out.println( "Nome:"+ this.nome + "\nDepartamento: " + this.departamento + "\nSalario: " + this.salario + "\nData de Entrada: " + this.dataEntrada + "\nRG: " + this.rg + "\nAtivo: " + this.ativo + "\nAumento: " + this.aumento + "\nBonificacao: " + this.bonificacao );
Espero ter ajudado. Abraços
Boa noite Lucas , era isso que estava querendo, exatamente como pede no exercicio muito obrigado … Segue o codigo com as alterações … Aos demais que postaram tambem vou pesquisar sobre as dicas na qual são excelentes para o aprendizado . Obrigado a todos !
class Funcionario{
String nome;
String departamento;
double salario;
String dataEntrada;
String rg;
boolean ativo;
double aumento;
double bonificacao;
public double bonificacao(double aumento){
return this.salario + aumento;
}
public boolean demite() {
return ativo = false;
}
void mostra (){
System.out.println( "Nome:"+ this.nome + "\nDepartamento: " + this.departamento + "\nSalario: " + this.salario + "\nData de Entrada: " + this.dataEntrada + "\nRG: " + this.rg + "\nAtivo: " + this.ativo + "\nAumento: " + this.aumento + "\nBonificacao: " + this.bonificacao + "\nO funcionario nao trabalha mais aqui !!!" );
}
}
class TestaFuncionario{
public static void main(String [] args){
Funcionario f1 = new Funcionario();
f1.nome = "Eduardo";
f1.departamento ="TI";
f1.salario = 120.00;
f1.dataEntrada = "120312";
f1.rg = "1123456";
f1.bonificacao = (50);
f1.ativo = true;
f1.aumento = f1.salario+f1.bonificacao;
f1.mostra();
double salario = f1.bonificacao(50);
}
}
De nada. No que puder ajudar, eu ajudo. Abraços.