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



   Alocação de Memória em Java

     Criação de Objetos e Alocação de Memória




            Ludimila Monjardim Casagrande
                        2012
Alocação de Memória em Java

     Toda vez que uma variável é declarada um espaço
         de memória é alocado para a mesma e, quando ela
         é inicializada, nesse espaço é armazenado seu
         valor:
           int x;    x    ?

           x = 0;    x    0


     Se o tipo da variável não for de um dos tipos
         primitivos, então, ela é uma referência para um
         objeto.

Alocação de Memória       ©2012 Ludimila Monjardim Casagrande   2
Alocação de Memória em Java

     Quando uma referência para um objeto é
         declarada, um espaço de memória também é
         alocado para a mesma:
           Data d;   d       ?


     Para fins didáticos, podemos considerar que
         uma referência para um objeto é o endereço de
         memória no qual o objeto está alocado.
     A referência é o elemento que permite que um
         determinado objeto seja acessado.
Alocação de Memória       ©2012 Ludimila Monjardim Casagrande   3
Alocação de Memória em Java

     Após definirmos uma classe, podemos criar
         objetos a partir dela.

     Os objetos quando criados são alocados na
         memória RAM do computador.

     Felizmente, todo o processo de alocação do
         objeto na memória é gerenciado pela máquina
         virtual Java (JVM).



Alocação de Memória      ©2012 Ludimila Monjardim Casagrande   4
Alocação de Memória em Java

     Quando um objeto é criado, pela chamada de new
         <construtor>, os seguintes passos acontecem:
           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;
           as inicializações explícitas programadas para as
            variáveis de instância são realizadas;
           o construtor chamado é executado;
           o endereço de memória no qual o objeto está alocado
            é retornado e atribuído para a variável que referencia
            o objeto.
Alocação de Memória        ©2012 Ludimila Monjardim Casagrande       5
Exemplo
                                          public class Principal{
                                            public static void main (String[ ] args) {
public class Data {                             Data hoje = new Data(12, 11, 2012);
    private int dia = 1;
                                            }
    private int mes = 1;
    private int ano = 1800;               }

     public Data (int d, int m, int a){
       if((d >= 1 && d <= 31) &&
          (m >= 1 && m <= 12) &&
          (a >= 1800 && a <= 2100)){
            this.dia = d;
            this.mes = m;
            this.ano = a;
        } else {
            System.out.println("Erro: Data inválida.");
        }
     }
}
Alocação de Memória              ©2012 Ludimila Monjardim Casagrande                     6
Alocação de Memória em Java

     Passo 1:
           A declaração aloca espaço para a referência e a
            chamada do construtor aloca espaço para o
            objeto criado:
              Data hoje = new Data(12, 11, 2012);

              hoje    ?

              dia     0
                                    As variáveis de instância são inicializadas
              mes     0
                                    com os valores default
              ano     0



Alocação de Memória        ©2012 Ludimila Monjardim Casagrande                    7
Alocação de Memória em Java

     Passo 2:
           As inicializações explícitas das variáveis de
            instância são executadas:
              Data hoje = new Data(12, 11, 2012);

                 hoje    ?                            public class Data {
                                                         private int dia = 1;
                 dia      1                              private int mes = 1;
                 mes      1                              private int ano = 1800;
                 ano    1800                             ...
                                                      }


Alocação de Memória            ©2012 Ludimila Monjardim Casagrande                 8
Alocação de Memória em Java

     Passo 3:
           O construtor chamado é executado:
              Data hoje = new Data(12, 11, 2012);
                                         public Data (int d, int m, int a){
              hoje     ?
                                            if((d >= 1 && d <= 31) &&
                                               (m >= 1 && m <= 12) &&
              dia      12
                                               (a >= 1800 && a <= 2100)){
              mes      11
              ano                                this.dia = d;
                      2012
                                                 this.mes = m;
                                                 this.ano = a;
                                           } else {
                                                 System.out.println("Erro: Data inválida.");
                                           }
                                         }
Alocação de Memória          ©2012 Ludimila Monjardim Casagrande                           9
Alocação de Memória em Java

     Passo 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:
              Data hoje = new Data(12, 11, 2012);

              hoje    0x0123

              dia      12
              mes      11
              ano     2012



Alocação de Memória            ©2012 Ludimila Monjardim Casagrande   10
Teste
                                                              Após Data b = a;
   public class Teste {
                                                             x         8
        public static void main(String[] args) {             y         7
                                                             a      0x0123
            int x = 7;                                                           21 10 2006
                                                             b      0x0123
            int y = x;
            x = 8;
            Data a = new Data(21, 10, 2006);
            Data b = a;                                       Após a = new Data(28, 10,2006);
                                                             x         8
            a = new Data(28, 10, 2006);                                7
                                                             y
        }                                                    a      0x0456       28 10 2006
   }                                                         b      0x0123
                                                                                 21 10 2006
   Quais são os resultados finais?



Alocação de Memória           ©2012 Ludimila Monjardim Casagrande                         11
Atividade Prática

     Ler o Capítulo 3 da apostila Orientação a
         Objetos em Java da K19 Treinamentos e fazer
         os exercícios de fixação.




Alocação de Memória    ©2012 Ludimila Monjardim Casagrande   12

More Related Content

What's hot

Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaLeinylson Fontinele
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Rodrigo Kono
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScriptThiago Poiani
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Leinylson Fontinele
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesElaine Cecília Gatto
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2Rogerio Oliveira
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Lógica de Programação - Estruturas de Seleção
Lógica de Programação - Estruturas de SeleçãoLógica de Programação - Estruturas de Seleção
Lógica de Programação - Estruturas de SeleçãoJanynne Gomes
 

What's hot (20)

Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Apresentação angular js
Apresentação angular jsApresentação angular js
Apresentação angular js
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScript
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
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
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Lógica de Programação - Estruturas de Seleção
Lógica de Programação - Estruturas de SeleçãoLógica de Programação - Estruturas de Seleção
Lógica de Programação - Estruturas de Seleção
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Estrutura de Dados - Registros
Estrutura de Dados - RegistrosEstrutura de Dados - Registros
Estrutura de Dados - Registros
 

Viewers also liked

Gerência de Memória em Java - Parte III (2005)
Gerência de Memória em Java - Parte III (2005)Gerência de Memória em Java - Parte III (2005)
Gerência de Memória em Java - Parte III (2005)Helder da Rocha
 
Exercicio classes
Exercicio classesExercicio classes
Exercicio classesfeiosanelma
 
Exercícios de programação orientado a objeto
Exercícios de programação orientado a objetoExercícios de programação orientado a objeto
Exercícios de programação orientado a objetoGleyciana Garrido
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)jose-junior89
 
Exercicios Analise e Desenvolvimento de projetos
Exercicios Analise e Desenvolvimento de projetosExercicios Analise e Desenvolvimento de projetos
Exercicios Analise e Desenvolvimento de projetosRoberto Ferreira
 
Estrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e FunçõesEstrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e FunçõesAdriano Teixeira de Souza
 
Aps lista de exercícios
Aps lista de exercíciosAps lista de exercícios
Aps lista de exercíciosGuilherme
 
Plano de Ação para Atendimento aos Requisitos dos Clientes
Plano de Ação para Atendimento aos Requisitos dos ClientesPlano de Ação para Atendimento aos Requisitos dos Clientes
Plano de Ação para Atendimento aos Requisitos dos ClientesYthia Karla
 
Baixo Acoplamento e Alta Coesão
Baixo Acoplamento e Alta CoesãoBaixo Acoplamento e Alta Coesão
Baixo Acoplamento e Alta Coesãocelodemelo
 
Aula 9 gerenciamento_memoria (1)
Aula 9 gerenciamento_memoria (1)Aula 9 gerenciamento_memoria (1)
Aula 9 gerenciamento_memoria (1)escoteirodabahia
 
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
 
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
 

Viewers also liked (20)

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
 
Gerência de Memória em Java - Parte III (2005)
Gerência de Memória em Java - Parte III (2005)Gerência de Memória em Java - Parte III (2005)
Gerência de Memória em Java - Parte III (2005)
 
Testes de carga com j meter
Testes de carga com j meterTestes de carga com j meter
Testes de carga com j meter
 
Lod law of demeter
Lod law of demeterLod law of demeter
Lod law of demeter
 
3 orientacao-objetos
3 orientacao-objetos3 orientacao-objetos
3 orientacao-objetos
 
Exercicio classes
Exercicio classesExercicio classes
Exercicio classes
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
 
Exercícios de programação orientado a objeto
Exercícios de programação orientado a objetoExercícios de programação orientado a objeto
Exercícios de programação orientado a objeto
 
Orientação a Objetos (2)
Orientação a Objetos (2)Orientação a Objetos (2)
Orientação a Objetos (2)
 
Padrões de design orientado a objetos
Padrões de design orientado a objetosPadrões de design orientado a objetos
Padrões de design orientado a objetos
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)
 
Exercicios Analise e Desenvolvimento de projetos
Exercicios Analise e Desenvolvimento de projetosExercicios Analise e Desenvolvimento de projetos
Exercicios Analise e Desenvolvimento de projetos
 
Estrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e FunçõesEstrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e Funções
 
Aps lista de exercícios
Aps lista de exercíciosAps lista de exercícios
Aps lista de exercícios
 
Plano de Ação para Atendimento aos Requisitos dos Clientes
Plano de Ação para Atendimento aos Requisitos dos ClientesPlano de Ação para Atendimento aos Requisitos dos Clientes
Plano de Ação para Atendimento aos Requisitos dos Clientes
 
Baixo Acoplamento e Alta Coesão
Baixo Acoplamento e Alta CoesãoBaixo Acoplamento e Alta Coesão
Baixo Acoplamento e Alta Coesão
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Aula 9 gerenciamento_memoria (1)
Aula 9 gerenciamento_memoria (1)Aula 9 gerenciamento_memoria (1)
Aula 9 gerenciamento_memoria (1)
 
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 - 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
 

More from Ludimila Monjardim Casagrande

More from Ludimila Monjardim Casagrande (18)

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 - 20 - Wrapper Classes
POO - 20 - Wrapper ClassesPOO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
 
POO - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
 
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
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
 
POO - 15 - Passagem de Argumentos
POO - 15 - Passagem de ArgumentosPOO - 15 - Passagem de Argumentos
POO - 15 - Passagem de Argumentos
 
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 - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
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 - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
 
POO - 06 - Encapsulamento
POO - 06 - EncapsulamentoPOO - 06 - Encapsulamento
POO - 06 - Encapsulamento
 

Recently uploaded

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Recently uploaded (9)

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

POO - 03 - Alocação de Memória em Java

  • 1. Programação Orientada a Objetos Alocação de Memória em Java Criação de Objetos e Alocação de Memória Ludimila Monjardim Casagrande 2012
  • 2. Alocação de Memória em Java  Toda vez que uma variável é declarada um espaço de memória é alocado para a mesma e, quando ela é inicializada, nesse espaço é armazenado seu valor:  int x; x ?  x = 0; x 0  Se o tipo da variável não for de um dos tipos primitivos, então, ela é uma referência para um objeto. Alocação de Memória ©2012 Ludimila Monjardim Casagrande 2
  • 3. Alocação de Memória em Java  Quando uma referência para um objeto é declarada, um espaço de memória também é alocado para a mesma:  Data d; d ?  Para fins didáticos, podemos considerar que uma referência para um objeto é o endereço de memória no qual o objeto está alocado.  A referência é o elemento que permite que um determinado objeto seja acessado. Alocação de Memória ©2012 Ludimila Monjardim Casagrande 3
  • 4. Alocação de Memória em Java  Após definirmos uma classe, podemos criar objetos a partir dela.  Os objetos quando criados são alocados na memória RAM do computador.  Felizmente, todo o processo de alocação do objeto na memória é gerenciado pela máquina virtual Java (JVM). Alocação de Memória ©2012 Ludimila Monjardim Casagrande 4
  • 5. Alocação de Memória em Java  Quando um objeto é criado, pela chamada de new <construtor>, os seguintes passos acontecem:  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;  as inicializações explícitas programadas para as variáveis de instância são realizadas;  o construtor chamado é executado;  o endereço de memória no qual o objeto está alocado é retornado e atribuído para a variável que referencia o objeto. Alocação de Memória ©2012 Ludimila Monjardim Casagrande 5
  • 6. Exemplo public class Principal{ public static void main (String[ ] args) { public class Data { Data hoje = new Data(12, 11, 2012); private int dia = 1; } private int mes = 1; private int ano = 1800; } public Data (int d, int m, int a){ if((d >= 1 && d <= 31) && (m >= 1 && m <= 12) && (a >= 1800 && a <= 2100)){ this.dia = d; this.mes = m; this.ano = a; } else { System.out.println("Erro: Data inválida."); } } } Alocação de Memória ©2012 Ludimila Monjardim Casagrande 6
  • 7. Alocação de Memória em Java  Passo 1:  A declaração aloca espaço para a referência e a chamada do construtor aloca espaço para o objeto criado: Data hoje = new Data(12, 11, 2012); hoje ? dia 0 As variáveis de instância são inicializadas mes 0 com os valores default ano 0 Alocação de Memória ©2012 Ludimila Monjardim Casagrande 7
  • 8. Alocação de Memória em Java  Passo 2:  As inicializações explícitas das variáveis de instância são executadas: Data hoje = new Data(12, 11, 2012); hoje ? public class Data { private int dia = 1; dia 1 private int mes = 1; mes 1 private int ano = 1800; ano 1800 ... } Alocação de Memória ©2012 Ludimila Monjardim Casagrande 8
  • 9. Alocação de Memória em Java  Passo 3:  O construtor chamado é executado: Data hoje = new Data(12, 11, 2012); public Data (int d, int m, int a){ hoje ? if((d >= 1 && d <= 31) && (m >= 1 && m <= 12) && dia 12 (a >= 1800 && a <= 2100)){ mes 11 ano this.dia = d; 2012 this.mes = m; this.ano = a; } else { System.out.println("Erro: Data inválida."); } } Alocação de Memória ©2012 Ludimila Monjardim Casagrande 9
  • 10. Alocação de Memória em Java  Passo 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: Data hoje = new Data(12, 11, 2012); hoje 0x0123 dia 12 mes 11 ano 2012 Alocação de Memória ©2012 Ludimila Monjardim Casagrande 10
  • 11. Teste Após Data b = a; public class Teste { x 8 public static void main(String[] args) { y 7 a 0x0123 int x = 7; 21 10 2006 b 0x0123 int y = x; x = 8; Data a = new Data(21, 10, 2006); Data b = a; Após a = new Data(28, 10,2006); x 8 a = new Data(28, 10, 2006); 7 y } a 0x0456 28 10 2006 } b 0x0123 21 10 2006 Quais são os resultados finais? Alocação de Memória ©2012 Ludimila Monjardim Casagrande 11
  • 12. Atividade Prática  Ler o Capítulo 3 da apostila Orientação a Objetos em Java da K19 Treinamentos e fazer os exercícios de fixação. Alocação de Memória ©2012 Ludimila Monjardim Casagrande 12