POO - 19 - Elementos Estáticos

2,799 views
2,565 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,799
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

POO - 19 - Elementos Estáticos

  1. 1. Programação Orientada a Objetos Atributos e Métodos Estáticos Ludimila Monjardim Casagrande 2012
  2. 2. Instâncias e Classes  Objetos são instâncias de uma classe. Sendo assim, vários objetos de um mesmo “tipo” ou classe podem ser criados e cada instância terá uma cópia de todos os atributos declarados na classe.  As instâncias de uma classe são, portanto, independentes entre si:  a modificação do campo saldo de uma instância da classe Conta não afeta o valor do mesmo campo em outra instância da classe.Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 2
  3. 3. Atributos Estáticos  Sendo assim, como seria possível compartilhar uma informação entre todas as instâncias de uma classe?  Uma forma de promover o compartilhamento de uma mesma variável e de seu valor entre as várias instâncias de uma classe é declarando essa variável de classe como estática (static).  Em outras palavras, atributos ou campos estáticos de uma classe são compartilhados por todas as instâncias dessa classe e se o valor de um campo estático for modificado por uma das instâncias, a modificação será refletida em todas as instâncias da mesma classe.Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 3
  4. 4. Atributos Estáticos  Atributos estáticos são declarados com o modificador static, que deve ser posicionado antes do tipo do atributo e pode ser combinado com os modificadores de acesso public, private ou protected.  Atributos estáticos são também conhecidos como atributos de classe, por poderem ser acessados diretamente usando o nome da classe, isto é, sem que uma instância tenha sido criada.Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 4
  5. 5. Atributos Não-Estáticos  Ao contrário dos atributos estáticos, os atributos que podem ter diferentes valores para cada instância da mesma classe são conhecidos como atributos de instância.  Para a manipulação desses campos é necessária a criação de uma instância da classe e a existência de uma referência para tal instância.Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 5
  6. 6. Ciclo de Vida de Atributos Estáticos  As variáveis correspondentes a atributos estáticos são criadas no momento da carga da classe e são destruídas ao término da execução da aplicação.  A carga ocorre na primeira vez em que a classe é utilizada.  Exemplo: System.out.println("Número de participantes: " + Participante.contador);Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 6
  7. 7. Exemplo public class Participante { public static int contador; Atributo declarado como estático public Participante(){ contador++; } public static int getContador() { A variável contador deve armazenar return contador; o número de participantes existentes, } isto é, o número de objetos desta } classe que foram criados. Ela deve funcionar como uma variável global, cujo valor é compartilhado entre todas as instâncias.Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 7
  8. 8. Exemplo public class Principal { public static void main(String[] args) { System.out.println("Número de participantes: " + Participante.contador); Participante p1 = new Participante(); Participante p2 = new Participante(); System.out.println("Número de participantes: " + Participante.contador); } } Atributo sendo acessado diretamente pelo nome da classe Isso é possivel quando os atributos ou métodos são estáticosElementos Estáticos ©2012 Ludimila Monjardim Casagrande 8
  9. 9. Métodos Estáticos  Devem ser declarados como estáticos métodos:  que somente manipulam variáveis estáticas ou  que implementam rotinas que sejam independentes de dados armazenados em instâncias, ou seja, métodos que só necessitem dos dados passados como argumentos para efetuar a tarefa requerida e que produzem o mesmo resultado independentemente de qual instância da classe tenha sido usada para sua chamada.Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 9
  10. 10. Métodos Estáticos  Métodos estáticos também são declarados pelo uso do modificador static, que deve preceder o tipo de retorno do método e que pode ser combinado com os modificadores aplicáveis ao método.  Os métodos estáticos (também conhecidos como métodos de classe) também podem ser chamados sem a necessidade de criação de uma instância da classe à qual pertencem.  Isso é o que os diferenciam dos métodos não- estáticos.Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 10
  11. 11. Métodos Estáticos  O método main é um método estático, que permite que uma classe seja executada como uma aplicação ou programa.  Não é necessário criar uma instância da classe que contém o método main para que ele seja executado.  Métodos estáticos podem ser usados em classes que contenham o método main para servirem como sub-rotinas deste.Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 11
  12. 12. Métodos e Atributos Estáticos  Métodos estáticos só podem acessar ou chamar diretamente (sem uma instância) variáveis ou métodos também estáticos.  Sendo assim:  Se um método for chamado diretamente a partir do método main, este método deverá ser obrigatoriamente declarado como estático.  Se o método main for acessar campos declarados na sua classe mas fora do método main, estes campos também deverão ser declarados como estáticos.Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 12
  13. 13. Exemplo public class ConversorDeUnidades { public static double milhasParaQuilometros(double milhas) { double quilometros = milhas*1.609; return quilometros; } public static void main(String[] args){ double milhas = 100; double quilometros = milhasParaQuilometros(milhas); System.out.println(milhas + " milhas correspondem a " + quilometros + " quilômetros."); } }Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 13
  14. 14. O Modificador: final  O modificador final pode ser aplicado a variáveis, métodos e classes.  O significado de final varia de acordo com o elemento ao qual ele é aplicado.  Porém a idéia essencial é sempre a mesma: elementos declarados como final não podem ser modificados.Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 14
  15. 15. O Modificador: final  Sendo assim:  Variáveis declaradas como final correspondem a constantes, pois seu valor inicial não pode ser alterado.  Um método final não pode ser sobrescrito (pelas subclasses).  Uma classe final não pode ter subclasses.Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 15
  16. 16. Exemplo public class ConstantesMatematicas { // Declaração dos campos da classe // raiz quadrada de 2 public static final double RAIZ_DE_2 = 1.4142135623730950488; // raiz quadrada de 3 public static final double RAIZ_DE_3 = 1.7320508075688772935; // raiz quadrada de 5 final static public double RAIZ_DE_5 = 2.2360679774997896964; // raiz quadrada de 6: podemos usar as constantes já definidas static final public double RAIZ_DE_6 = RAIZ_DE_2 * RAIZ_DE_3; }Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 16

×