Duvida com Orientação a Objeto

6 respostas Resolvido
C

Pessoal estou estudando java a fundo bom e assim criei 3 classe Funcionario, Departamento e um para complicar um pouco chamada data nelae tenho 3 atributos todos do tipo int dia, mes ano o que eu quero, pegar esses 3 atributos e mostrar a data de entrada na empresa como faço isso? Fiz da seguinte maneira:

Data dt1 = new Data()
dt1.dia = 11;
dt1.mes = 12;
dt1.ano = 2016;
	
Funcinario f1 = new Funcinario();
f1.Nome="CLaudio Jose";
f1.Salario = 30000;
f1.DtEntrada = dt1.dia + "/" + dt1.mes + "/" + dt1.ano ;
f1.Departamento = "Informática";
	
// MOSTRA DADOS DO FUNCIONARIO 1
f1.mostra();
f1.mostraNovoSalario();

6 Respostas

C

Estuda encapsulamento para você usar o getters e setters. Assim, você vai poder setar e acessar os elementos privados de maneira mais fácil!!

E

Recomendo fazer o que Charles_Angra disse se está estudando orientação a objeto usar getters e setters é primordial.

wko.java
Solucao aceita

Você pode fazer da seguinte maneira:

public class Funcionario {

private String nome;
private Data dataAdmissao;

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public Data getDataAdmissao() {
	return dataAdmissao;
}

public Funcionario(String nome, Data dataAdmissao) {
	this.nome = nome;
	this.dataAdmissao = dataAdmissao;
}

}

public class Data {

private int dia;
private int mes;
private int ano;

public int getDia() {
	return dia;
}

public void setDia(int dia) {
	this.dia = dia;
}

public int getMes() {
	return mes;
}

public void setMes(int mes) {
	this.mes = mes;
}

public int getAno() {
	return ano;
}

public void setAno(int ano) {
	this.ano = ano;
}

@Override
public String toString() {
	return this.dia + "/" + this.mes + "/" + this.ano;
}

}

public class Teste {

public static void main(String[] args) {
	Data data = new Data();
	data.setDia(12);
	data.setMes(9);
	data.setAno(2016);
	
	Funcionario funcionario = new Funcionario("José", data);
	System.out.println(funcionario.getNome());
	System.out.println(funcionario.getDataAdmissao());
}

}

Como o pessoal recomendou, estude encapsulamento e relacionamento TEM-UM (HAS-A) para entender esse cenário.

Abraço!
`

C

Desculpa a demora em responder muita correria estou estou chegando no encapsulamento agora entendi o que tem que ser feito com a ajuda do wko.java bora estudar mais quem sabe vou abandonar de vez o C# rsrs

peczenyj

Vamos la

a razão pela qual se usa Getters/Setters é pq o protocolo de comunicação entre objetos é a chamada de métodos. quando vc faz

objeto.algumaCoisa

o objeto recebe a mensagem “oi tem um cara aqui que mandou te dizer ‘algumaCoisa’”

é claro que vc pode acessar os atributos diretamente, porém é interessante vc esconder isso para que não sejam expostos muitos detalhes do seu objeto.

por exemplo vc tem dois atributos: idade e data de nascimento. Com apenas a data vc sabe calcular a idade, entao vc pode criar um metodo getIdade() que calcula isso. parece um atributo, mas não é. Agora se qq um pode abrir as entranhas do teu objeto, ai ferrou, vc pode criar facilmente estados inconsistentes ( como uma idade negativa ). perceba que quando vc esconde como a classe funciona e só expoe os metodos que fazem sentido, a coisa começa a ficar mais facil de controlar ( ainda assim vc pode expor o objeto Date e alguem pode alterar e ai vc tera surpresas ).

outra coisa é que na hora de vc usar Herança, ai vc vai ter umas belas surpresas.

OO é mais que getters and setters mas vc precisa praticar para entender do que estou falando. Pratica bastante, le sobre textos tipo “prefira composição à herança” e por ai vai. boa sorte

C

Legal obrigado pela dica estou usando esse sie mesmo tem muita coisa boa estou ja tinha visto um treinamento de orientação objeto em java e estou fazendo de novo usando o site do caelum

Valeu

Criado 12 de setembro de 2016
Ultima resposta 14 de set. de 2016
Respostas 6
Participantes 5