Atributos e Métodos de Classe
Em um sistema muitas vezes é necessário que uma váriavel seja compartilhada por todos os objetos que venham a ser criados. Em Java temos os atributos e métodos de classe. Para criarmos métodos e atributos de classe utilizamos a palavra reservada static. Um atributo de classe por definição é publico então é redundante colocar o modificador de acesso public, já que por definição static é public também.Vejamos um problema em que poderiamos aplicar uma solução utilizando atributo de classe:
Problema:
Imagine que uma montadora de veículos precise armazenar o número de carros fabricados por dia. A cada novo carro criado o sistema deve contabilizar o carro para que no final do dia possa exibir a quantidade de veículos criados.
Solução:
Montadora.java
import java.util.Date;
import java.text.SimpleDateFormat;
import javax.swing.JOptionPane;
public class Montadora {
public static void main(String[] args) {
Carro.numCarros = 0;//inicializando o valor da variável
for(int i=0; i<10;i++)
new Carro();
JOptionPane.showMessageDialog(null, "Foram fabricados " + Carro.numCarros + " carros.");
JOptionPane.showMessageDialog(null, "Data: " + new SimpleDateFormat("dd/MM/yyyy").format(new Date()));
}
}
Carro.java
public class Carro {
static int numCarros;
public Carro() {
numCarros++;
}
}
Para acessar variáveis de classe utilizamso o nome da classe, em seguida o operador ponto final (.) e o nome da variável que queremos acessar.
O correto para manipular atributos de classe é criarmos métodos de classe com a finalidade de controlar os valores contidos nesses atributos. Como a variável é publica e visível por todas as classes do nosso projeto não é explicitamente obrigatória a criação dos métodos de classe para fazer o controle dos mesmos, porém, fazer o manusei dos atributos de classe sem o uso de métodos é uma má prática de programação e consiste em um erro conceitual.
Problema 2:
Os funcionários da empresa GTi sistemas recebem vale refeição, todos os meses o valor do vale pode ser reajustado.
Solução:
Funcionario.java
public class Funcionario {
private String nome;
static float valeRefeicao;
public Funcionario(String nome) {
this.nome = nome;
}
static void reajusteValeRefeicao(float valor) {
valeRefeicao = valor;
}
}
EmpresaGTi.java
public class EmpresaGTi {
public static void main(String[] args) {
Funcionario programador = new Funcionario("Guilherme");
Funcionario rh = new Funcionario("Débora");
Funcionario analista = new Funcionario("Luiz");
Funcionario.reajusteValeRefeicao(20);//todas as instancias de funcionário compartilham da mesma variável valeRefeicao
//ERRO...
programador.valeRefeicao = 20;//é possivel, porém, é erro conceitual
}
}
Dúvidas , sugestões comentem...
Nenhum comentário:
Postar um comentário