33
Programação Orientada Objeto Campos e métodos estáticos Stephenson Galvão stepgalvao[at]gmail[dot]com

POO Java Static

Embed Size (px)

DESCRIPTION

Aula de POO com Java. Campos e métodos estáticos

Citation preview

Page 1: POO Java Static

Programação Orientada Objeto

Campos e métodos estáticos

Stephenson Galvãostepgalvao[at]gmail[dot]com

Page 2: POO Java Static

Roteiro

● Introdução● Campos Estáticos.● Métodos Estáticos.● Fábrica de Instâncias.

Page 3: POO Java Static

Introdução

● Objetos possuem áreas independentes

Pessoa

- String nome- int idade

Memória Heap

:joao

- nome: João- idade:45

:maria

- nome: Maria- idade:36

:paula

- nome: Paula- idade:25

Page 4: POO Java Static

Introdução

● Objetos possuem áreas independentes

Memória Heap

:maria

- nome: Maria- idade:36

:paula

- nome: Paula- idade:25

...Pessoa maria = new Pessoa(“Paula”,25);Pessoa paula = new Pessoa(“Maria”,36);maria.nome = “Maria Chiquinha”paula.nome = “Paula Fernades”;...

Page 5: POO Java Static

Introdução

● Objetos possuem áreas independentes

Memória Heap

:maria

- nome: Maria- idade:36

:paula

- nome: Paula- idade:25

...Pessoa maria = new Pessoa(“Paula”,25);Pessoa paula = new Pessoa(“Maria”,36);maria.nome = “Maria Chiquinha”paula.nome = “Paula Fernades”;...

● Instâncias de uma classe são independetes entre si.

● O objeto maria não possui acesso aos campos do objeto paula e vice-versa

Page 6: POO Java Static

Introduçao

● Aula de hoje● Campos/metodos que são acessados por todas

instâncias de uma classe.

Memória Heap

:joao

- nome: João- idade:45

:maria

- nome: Maria- idade:36

:paula

- nome: Paula- idade:25

Pessoa

Campos Estáticos

Métodos Estáticos

Page 7: POO Java Static

Campos Estáticos

● Campos estáticos● São compartilhados por todas instâncias da classe.● Conhecidos como: Campo da classe.

– Anteriores: Campos de Instância.● Finalidade:

– Troca de informações entreas instâncias de uma classe.– Armazenar valores, referente a classe, que não serão

alterados durante o programa, valores constantes.

Page 8: POO Java Static

Campos Estáticos

● Utilização.

public class Pessoa {

private String nome; private int idade;

static public int num; ...

}

Palavra static antes do modificador de acesso

Page 9: POO Java Static

Campos Estáticos

● Exemplo

Pessoa

- int campoObj;+ int campoClasse;

+ void incrementar();+ int informarCampoObj();

...Pessoa p1 = new Pessoa();Pessoa p2 = new Pessoa();

p1.incrementar();p1.incrementar();

System.out.println(p1.informarCampoObj());System.out.println(p1.campoClasse);

p2.incrementar();

System.out.println(p2.informarCampoObj());System.out.println(p2.campoClasse);...

Aplicacao.java

Page 10: POO Java Static

Campos Estáticos

● Perguntas● Quais são os valores exibidos nas linhas em destaque.

Pessoa p1 = new Pessoa();Pessoa p2 = new Pessoa();

p1.incrementar();p1.incrementar();

System.out.println(p1.informarCampoObj());System.out.println(p1.campoClasse);

p2.incrementar();

System.out.println(p2.informarCampoObj());System.out.println(p2.campoClasse);

Page 11: POO Java Static

Campos Estáticos

Memória Heap

:p1

- campoObj: 0

:p2

- campoObj: 0

:Pessoa

CampoClasse:0

Page 12: POO Java Static

Campos Estáticos

● Exercício

Pessoa

- int idade;- String nome;- int id;

+ Pessoa(int nome, String idade);...

● Criar uma classe Pessoa com id único onde, a cada objeto, criado um id e atribuido de forma incremental.

Page 13: POO Java Static

Campos Estáticos

● Forma de acesso a campos de classe.● referencia.campoClasse.● NomeClasse.campoClasse.

Pessoa p1 = new Pessoa();Pessoa p2 = new Pessoa();

p1.incrementar();p1.incrementar();

System.out.println(p1.informarCampoObj());System.out.println(Pessoa.campoClasse);

p2.incrementar();

System.out.println(p2.informarCampoObj());System.out.println(Pessoa.campoClasse);

Page 14: POO Java Static

Campos Estáticos

● Qual a forma mais correta● referencia.campoClasse.● NomeClasse.campoClasse.

● Quando o campo de classe é criado na memória e inicializado?

● Quando a classe é inicializada/Primeiro acesso à classe.

Page 15: POO Java Static

Campos Estáticos

● Criação de constantes da classe.● Valores que são imutáveis;● Não podem ser alterados após sua inicialização;

class Matematica{public static final double PI = 3,14159265

}

Page 16: POO Java Static

Campos Estáticos

class Circulo{private double raio;

public Circulo(double raio){this.raio=raio;

}public double informarArea(){

return Matematica.PI * raio * raio;}public double informarRaio(){

return raio;}public void alterarRaio(double raio){

this.raio=raio;}

}

class Matematica{public static final double PI = 3,14159265

}

Page 17: POO Java Static

Métodos Estáticos

● Objetos possuem áreas independentes

Pessoa

- String nome- int idade

+String toString();+void alterarNome();+String informarNome();

Memória Heap

:joao

- nome: João- idade:45

+toString()+alterarNome()+informarNome()

:maria

- nome: Maria- idade:36

+toString()+alterarNome()

+informarNome()

:paula

- nome: Paula- idade:25

+toString()+alterarNome()

+informarNome()

Page 18: POO Java Static

Métodos Estáticos

● Objetos possuem áreas independentes

Memória Heap

:maria

- nome: Maria- idade:36

+String toString()

:paula

- nome: Paula- idade:25

+String toString()

...Pessoa maria = new Pessoa(“Paula”,25);Pessoa paula = new Pessoa(“Maria”,36);System.out.println(maria.toString());System.out.println(paula.toString());...

Page 19: POO Java Static

Métodos Estáticos

● Sempre é necessária a criação do objeto para a execulsão do método;

class Tela{public void imprimir(String msg){

System.out.println(msg);}

}

...Tela tela= new Tela();tela.imprimir(“Ola mundo”);...

Tela.java

Aplicacao.java

Page 20: POO Java Static

Métodos Estáticos

● Métodos Estáticos● Conhecidos como métodos de classe

– Anteriores eram métodos de objetos.● Podem ser invocados sem a criação de um objeto.● Adequados para implementar:

– Rotinas independetes do dados das instâncias.– Rotinas com resultados independete da instância.

● Server para criação de bibliotecas de métodos:– Classe somente com métodos estáticos.

Page 21: POO Java Static

Métodos Estáticos

● Utilização

class Tela{public static void imprimir(String msg){

System.out.println(msg);}

}

Palavra static antes do tipo de retorno do método.

...Tela.imprimir(“Ola mundo”);...

Aplicacao.javaNão necessita a criação de um objeto.

Page 22: POO Java Static

Métodos Estáticos

● Exercício

Pessoa

- int idade;- String nome;- int id;

+ Pessoa(int nome, String idade);+ int informaProxId();

● Altere a classe pessoa para que o próximo id seja informado por um método estático que informa o próximo id e incrementa o campo proxId.

Page 23: POO Java Static

Métodos Estáticos

● Exerício.● Crie a biblioteca de métodos Converso responsável

por converte unidades, tais como:– Converter de Pés para Centímetros.– Converter de Milhas para Quilômetros.– Converter de Polegadas para centímetros.

Page 24: POO Java Static

Métodos Estáticos

Memória Heap

:joao

- nome: João- idade:45

:maria

- nome: Maria- idade:36

:paula

- nome: Paula- idade:25

Pessoa

Campos Estáticos

Métodos Estáticos

Page 25: POO Java Static

Métodos Estáticos

● Desafio Fácil (0,1 pt)● Antes de conhecer os métodos estáticos, você já

havia utilizado algum métodos estático? Se sim, Dê exemplos.

Page 26: POO Java Static

Métodos Estáticos

● Desafio Médio(0,2 pt)● Eu posso utilizar variáveis de classe dentro dos

métodos de objetos?● Eu posso utilizar variáveis de classe dentro dos

métodos de classe?● Eu posso utilizar variáveis de objetos dentro dos

métodos de classe?● Eu posso utilizar métodos de classe dentro dos

métodos de objetos?● Eu posso utilizar métodos de objetos dentro dos

métodos de classe?

Page 27: POO Java Static

Métodos Estáticos

● Desafio Difícil(0,4 pt).● Por que eu não posso utilizar método de objeto e

campos de objetos dentro dos métodos de classe.

Page 28: POO Java Static

Métodos Estáticos

● Fábrica de instâncias● Métodos estáticos que retornam instâncias.● Muito utilizado em padrões de projetos.

– Exemplo Single.● Criação de instância comuns a todos programas.

Page 29: POO Java Static

Métodos Estáticos

● Fábrica de instâncias● Imagine você fazer um programa que simule um

calendário. Uma data que sempre terá no calendário é o natal.

Page 30: POO Java Static

Métodos Estáticos

class Data{private int dia;private int mes;private int ano;

public Data(int dia, int mês, int ano){this.dia=dia;this.mes=mes;this.ano=ano;

}

public Data criarNatal(int ano){return new Data(25,12,ano);

}

}

…Data natal = Data.criarNatal(2011);..

Page 31: POO Java Static

Referências

● Introdução a Programação Orientada a Objetos – Rafael Santos – Editora Campus – Cap 6.

● A linguagem de programação Java – Ken Arnold – Quarta Edição- Pag. 66,67,76 e 77.

Page 32: POO Java Static

Introdução

● Programa da Aula● Caixa de Banco.

C1 C2 C3 C4

1

2

3

2 1

2

3

2

3

Page 33: POO Java Static

Introdução

● Programa da Aula● Caixa de Banco.

C1 C2 C3 C4

1

5

6

2 3 4