1) O documento discute atributos e métodos de classe em programação orientada a objetos. Atributos de classe são compartilhados por todos os objetos da mesma classe e podem ser acessados sem a necessidade de uma instância da classe. Métodos de classe também não requerem uma instância da classe para serem invocados.
3. Problematização 1:
Vale-refeição dos funcionários
Situação:
Suponha um atributo valerefeicao da classe Funcionario;
Representa o valor do vale refeição recebido pelo funcionário;
O vale refeição é o mesmo para todos os funcionários.
Problema:
Não faz sentido ter este atributo repetido para todos os objetos,
uma vez que ele é único para todos. Não depende de nenhuma
característica do funcionário;
Para mudar este atributo, deve-se fazer a mudança em todos os
objetos da classe Funcionario. Não é prático.
3
4. Atributos de Classe
Ao invés de utilizar atributos comuns, que são únicos para
cada objeto, serão utilizados atributos de classe;
Atributos de classe são COMPARTILHADOS por todos os
objetos da classe;
Ao contrário dos atributos comuns, se for mudado dentro de
um dos objetos, afetará o valor do atributo em todos os
elementos da classe.
4
5. Atributos de Classe
Atributos comuns (de instância/objeto):
Atributos de classe:
5
6. Criando Atributos de Classe
Utilize o modificador static.
Sintaxe de criação:
Exemplo:
6
7. Utilidade dos Atributos de Classe
Utilize sempre nas seguintes situações:
Quando um atributo for referente a classe;
Quando um atributo tiver seu valor compartilhado por toda a
classe;
Quando não fizer sentido a criação de um objeto para possuir tal
valor.
Exemplos:
Atributos comuns a todos os objetos: Vale-refeição;
Contadores de objetos: Quantidade de funcionários;
Atributos referentes a classe: Total de dinheiro em todas as
contas;
Valores de classe: double pi = 3.1415.
7
8. Referenciando
Atributos de Classe
O acesso a estes atributos é um pouco diferente. Não se usa
a referência de um objeto, mas sim a referência da classe;
Isto acontece pois o atributo é da classe, e não do objeto.
Sintaxe:
Para acessar o valor, basta utilizar a referência.
Para modificar o valor do atributo, simplesmente utilize o
operador de atribuição ‘=’.
8
10. Problematização 2:
Vale-refeição dos funcionários
Situação:
Deseja-se reajustar o valor do valerefeicao para todos os
Funcionários;
Para reajustar o valor do valerefeicao da classe Funcionario:
Se for atributo de classe: Deve-se criar um objeto funcionário.
Problema:
Como o reajuste do valor do vale refeição não depende dos
dados de um funcionário em particular, não faz sentido precisar
de uma referência de um objeto da classe Funcionario para
poder fazer esse reajuste.
Como fazer uma mudança neste atributo de classe de forma
geral??
10
11. Métodos de Classe
Ao invés de utilizar métodos comuns, que devem possuir uma
referência a um objeto, utiliza-se métodos de classe.
Métodos de classe, como o nome diz, são da classe. Não é
necessário criar um objeto para invocá-lo;
Ao contrário dos métodos comuns, não depende dos dados
de um objeto em particular, não fazendo sentido precisar de
uma referência de um objeto da classe para sua execução;
CUIDADO: Dentro de um método de classe não é possível
referenciar um objeto, ou seja, não utilize this.
11
12. Métodos de Classe
Utilize sempre nas seguintes situações:
Quando uma ação for referente a classe;
Quando não depender de dados de um objeto em particular;
Quando não fizer sentido criar um objeto para invocar tal
método.
Exemplos:
Modificar valores de atributos de classe: reajustaValeRefeicao();
Comportamento de função: arredondaNumero(int casas);
Mostrar valores de atributos de classe: geraRelatorio().
12
14. Invocando Métodos de Classe
A invocação destes métodos é um pouco diferente. Não se
usa a referência a um objeto, mas sim a referência a classe;
Isto acontece pois o método é da classe, e não do objeto.
Sintaxe:
14