14
Variáveis de Instância e Variáveis Locais Programação Orientada a Objetos Ludimila Monjardim Casagrande 2012 Ciclo de vida das variáveis em Java

POO - 04 - Variávies em Java

Embed Size (px)

Citation preview

Page 1: POO - 04 - Variávies em Java

Variáveis de Instância

e Variáveis Locais

Programação Orientada a Objetos

Ludimila Monjardim Casagrande 2012

Ciclo de vida das variáveis em Java

Page 2: POO - 04 - Variávies em Java

Variáveis

Basicamente, o que um programa faz é manipular

dados. Em geral, esses dados são armazenados

em variáveis localizadas na memória RAM do

computador.

Uma variável pode guardar dados de vários tipos:

números, textos, booleanos (verdadeiro ou falso) ou

referências para objetos, por exemplo.

Além disso, toda variável possui um nome que é

utilizado quando a informação dentro da variável

precisa ser manipulada pelo programa.

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 2

Page 3: POO - 04 - Variávies em Java

Declaração de Variáveis

Na linguagem de programação Java, as variáveis

devem ser declaradas para que possam ser

utilizadas.

A declaração de uma variável envolve definir um

nome único (identificador) dentro de um escopo e

um tipo de valor.

As variáveis são acessadas pelos nomes e

armazenam valores compatíveis com o seu tipo.

Exemplo de declaração com inicialização:

int numero = 10;

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 3

Page 4: POO - 04 - Variávies em Java

Declaração de Variáveis

A declaração de uma variável pode ser

realizada em qualquer linha de um bloco.

Não é necessário declarar todas as variáveis no

começo do bloco como acontece em algumas

linguagens de programação.

Não podemos declarar duas variáveis com o

mesmo nome em um único bloco ou escopo

pois ocorrerá um erro de compilação.

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 4

Page 5: POO - 04 - Variávies em Java

Variáveis em Java

O Java suporta variáveis com diferentes ciclos

de vida:

Os atributos (ou variáveis de instância);

As variáveis de método (ou variáveis locais).

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 5

Page 6: POO - 04 - Variávies em Java

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 6

Variáveis de Instância

Os atributos (ou variáveis de instância) são

criados quando uma instância da classe (objeto)

é criada e são destruídos quando essa instância

é destruída.

Subordinada às regras de acessibilidade e à

existência de uma referência a um objeto, uma

variável de instância é acessível enquanto o

objeto que a encapsula for acessível.

Page 7: POO - 04 - Variávies em Java

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 7

Variáveis de Método

Variáveis locais podem ser argumentos ou variáveis declaradas no corpo do método.

Os argumentos são criados na entrada do método ao qual pertencem.

As demais variáveis locais são criadas no momento de sua declaração.

Ambos só existem (portanto só podem ser acessados) no intervalo entre a sua criação e o término da execução do método.

Page 8: POO - 04 - Variávies em Java

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 8

Exemplo

public class Conta {

private double saldo;

public Conta ( ) {

}

public Conta (double s) {

this.saldo = s;

}

public void creditar (double valor) {

saldo = saldo + valor;

}

public void debitar (double valor) {

saldo = saldo - valor;

}

public double obterSaldo ( ) {

return saldo; } }

s é uma variável local e

saldo é uma variável de

instância

Os construtores normalmente

inicializam os atributos da

classe.

Page 9: POO - 04 - Variávies em Java

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 9

Variáveis e Inicialização

Como vimos, os atributos são automaticamente

inicializados com um valor default de acordo

com o seu tipo, caso não tenham sido

explicitamente inicializados na sua declaração.

Variáveis de método não são automaticamente

inicializadas e, portanto, seus valores iniciais

devem ser obrigatoriamente definidos de forma

explícita antes de serem utilizadas.

Page 10: POO - 04 - Variávies em Java

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 10

Exemplo de Variáveis de Método

Método 1:

Método 2:

public int errado( ) {

int i;

return i+5;

}

public int certo( ) {

int i = 0;

return i+5;

}

Erro de compilação na linha 3

Variáveis locais devem ser inicializadas

antes de serem utilizadas

Page 11: POO - 04 - Variávies em Java

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 11

Exemplo de Variáveis de Método

public class Principal {

public static void main (String[ ] args) {

Conta c = new Conta( );

int i = 0;

while (i < 10) {

c.creditar(i);

i++;

}

System.out.println(c.obterSaldo());

}

}

Se as variáveis c e i não

forem explicitamente

inicializadas ocorre erro de

compilação.

Obs.: Debugar para observar o

comportamento.

Page 12: POO - 04 - Variávies em Java

Alocação de Memória em Java

Revisando o exemplo:

Data hoje = new Data(21, 10, 2006);

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 12

0x0123 hoje

21 dia 10

2006

mes ano

? hoje

0 dia 0

0

mes ano

Page 13: POO - 04 - Variávies em Java

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 13

Alocação de Memória em Java

Quando um objeto é criado, pela chamada de new

<construtor>, os seguintes passos acontecem:

1. Um espaço de memória é alocado para o objeto

criado e suas variáveis de instância são

inicializadas com seus valores default

2. As inicializações explícitas programadas para as

variáveis de instância são realizadas

3. O construtor chamado é executado

4. O endereço de memória no qual o objeto está

alocado é retornado e atribuído para a variável que

referencia o objeto

Page 14: POO - 04 - Variávies em Java

Variáveis em Java ©2012 Ludimila Monjardim Casagrande 14

Exemplo

public class Teste {

public static void main(String[] args) {

int x = 7;

int y = x;

x = 8;

Data a = new Data(21, 10, 2006);

Data b = a;

a = new Data(28, 10, 2006);

}

}

Quais são os resultados finais?

8 x 7 y

0x0123

0x0123

a b

21 10 2006

Após Data b = a;

x 8

7 y 0x0456

0x0123 a b

28 10 2006

21 10 2006

Após a = new Data(28, 10,2006);