SlideShare a Scribd company logo
1 of 16
Download to read offline
Programação Orientada a Objetos




    Atributos e Métodos Estáticos




           Ludimila Monjardim Casagrande
                       2012
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
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
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
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
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
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
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áticos

Elementos Estáticos                ©2012 Ludimila Monjardim Casagrande           8
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
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
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
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
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
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
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
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

More Related Content

What's hot

Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosDaniel Brandão
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosLudimila Monjardim Casagrande
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL BásicoIgor Alves
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoLeinylson Fontinele
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 

What's hot (20)

Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Aula01-JavaScript
Aula01-JavaScriptAula01-JavaScript
Aula01-JavaScript
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
Diagrama sequencia
Diagrama sequenciaDiagrama sequencia
Diagrama sequencia
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 

Viewers also liked

LBJ LIÇÃO 2 - O PRIMEIRO PROBLEMA ENFRENTADO EM FAMÍLIA
LBJ LIÇÃO 2 - O PRIMEIRO PROBLEMA ENFRENTADO EM FAMÍLIALBJ LIÇÃO 2 - O PRIMEIRO PROBLEMA ENFRENTADO EM FAMÍLIA
LBJ LIÇÃO 2 - O PRIMEIRO PROBLEMA ENFRENTADO EM FAMÍLIANatalino das Neves Neves
 
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)Marcello Thiry
 
Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Robson Silva Espig
 
Polimorfismo java
Polimorfismo javaPolimorfismo java
Polimorfismo javaFAFICA
 
Características da Ginástica Acrobática
Características da Ginástica AcrobáticaCaracterísticas da Ginástica Acrobática
Características da Ginástica Acrobáticawaldeck
 
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClassePOO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClasseFelipe J. R. Vieira
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 

Viewers also liked (13)

Programacao em java
Programacao em javaProgramacao em java
Programacao em java
 
POO - 15 - Passagem de Argumentos
POO - 15 - Passagem de ArgumentosPOO - 15 - Passagem de Argumentos
POO - 15 - Passagem de Argumentos
 
Enquadramento teórico
Enquadramento teóricoEnquadramento teórico
Enquadramento teórico
 
LBJ LIÇÃO 2 - O PRIMEIRO PROBLEMA ENFRENTADO EM FAMÍLIA
LBJ LIÇÃO 2 - O PRIMEIRO PROBLEMA ENFRENTADO EM FAMÍLIALBJ LIÇÃO 2 - O PRIMEIRO PROBLEMA ENFRENTADO EM FAMÍLIA
LBJ LIÇÃO 2 - O PRIMEIRO PROBLEMA ENFRENTADO EM FAMÍLIA
 
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
 
Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
 
Polimorfismo java
Polimorfismo javaPolimorfismo java
Polimorfismo java
 
Características da Ginástica Acrobática
Características da Ginástica AcrobáticaCaracterísticas da Ginástica Acrobática
Características da Ginástica Acrobática
 
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClassePOO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de Classe
 
Módulo+8 iat
Módulo+8   iatMódulo+8   iat
Módulo+8 iat
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Etapas da pesquisa científica
Etapas da pesquisa científicaEtapas da pesquisa científica
Etapas da pesquisa científica
 

Similar to POO Atributos e Métodos Estáticos

Programação Orientado a Objetos - Sessao 4.pptx
Programação Orientado a Objetos - Sessao 4.pptxProgramação Orientado a Objetos - Sessao 4.pptx
Programação Orientado a Objetos - Sessao 4.pptxBernaldinoFernandes
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseRegis Magalhães
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e ComposiçãoDenis L Presciliano
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e ComposiçãoDenis L Presciliano
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 
Script c
Script cScript c
Script cRaphael
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9PeslPinguim
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Sérgio Souza Costa
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classesCarlos Melo
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Professor Samuel Ribeiro
 

Similar to POO Atributos e Métodos Estáticos (20)

Programação Orientado a Objetos - Sessao 4.pptx
Programação Orientado a Objetos - Sessao 4.pptxProgramação Orientado a Objetos - Sessao 4.pptx
Programação Orientado a Objetos - Sessao 4.pptx
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
 
08 modificadores static
08   modificadores static08   modificadores static
08 modificadores static
 
Final e aastract
Final e aastractFinal e aastract
Final e aastract
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e Composição
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e Composição
 
Aula4
Aula4Aula4
Aula4
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
Script c
Script cScript c
Script c
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Refactoring
RefactoringRefactoring
Refactoring
 
Java11
Java11Java11
Java11
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classes
 
POO - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
 

More from Ludimila Monjardim Casagrande

POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosLudimila Monjardim Casagrande
 

More from Ludimila Monjardim Casagrande (15)

Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
 
POO - 23 - Coleções da API do Java
POO -  23 - Coleções da API do Java POO -  23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
 
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
 
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
 
POO - 08 - Prática de Encapsulamento
POO - 08 - Prática de EncapsulamentoPOO - 08 - Prática de Encapsulamento
POO - 08 - Prática de Encapsulamento
 
POO - 07 - Operadores do Java
POO - 07 - Operadores do  JavaPOO - 07 - Operadores do  Java
POO - 07 - Operadores do Java
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
 
POO - 06 - Encapsulamento
POO - 06 - EncapsulamentoPOO - 06 - Encapsulamento
POO - 06 - Encapsulamento
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
 
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
 

POO Atributos e Métodos Estáticos

  • 1. Programação Orientada a Objetos Atributos e Métodos Estáticos Ludimila Monjardim Casagrande 2012
  • 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. 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. 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. 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. 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. 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. 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áticos Elementos Estáticos ©2012 Ludimila Monjardim Casagrande 8
  • 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. 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. 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. 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. 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. 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. 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. 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