SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
Programação Orientada a Objetos



     Prática de Implementação

     Encapsulamento e Modificadores de Acesso




             Ludimila Monjardim Casagrande
                         2012
Exercício
          public class Data {
             public int dia;
             public int mes;       Atributos declarados como
             public int ano;       públicos

               public Data () {
               }

               public Data (int dia, int mes, int ano) {         Falha nos construtores!
                     this.dia = dia;                             Ambos permitem a criação de
                     this.mes = mes;                             datas inválidas.
                     this.ano = ano;
               }

               public String toString() {
                     String data = dia + "/" + mes + "/" + ano;
                     return data;
               }
          }
Aula Prática                        ©2012 Ludimila Monjardim Casagrande                        2
Exercício

         public class Principal {
           public static void main (String[] args) {
                  Data d = new Data();
                  d.dia = 40;          Como os atributos são públicos, eles
                  d.mes = 40;          podem ser acessados e alterados
                  d.ano = -40;         diretamente em outra classe
                  System.out.println(d);
           }
         }

         Resultado: 40/40/-40      Não é uma data válida!



Aula Prática                    ©2012 Ludimila Monjardim Casagrande           3
Exercício
    public class Data {
       private int dia;
       private int mes;
       private int ano;                                        public void setDia (int dia) {
                                                                      if(dia >= 1 && dia <= 31) {
                                                                          this.dia = dia;
         public Data () {
                                                                      }
             this.dia = 1;
                                                               }
             this.mes = 1;
             this.ano = 1800;                                  public void setMes (int mes) {
         }                                                            if(mes >= 1 && mes <= 12) {
         public Data (int d, int m, int a) {                              this.mes = mes;
             this();                                                  }
             if((d >= 1 && d <= 31) &&                         }
                (m >= 1 && m <= 12) &&
                                                               public void setAno (int ano) {
                (a >= 1800 && a <= 2100)) {                           if(ano >= 1800 && ano <= 2100) {
                 this.dia = d;                                            this.ano = ano;
                 this.mes = m;                                        }
                 this.ano = a;                                 }
              }                                                …
          }                                               }
          …
Aula Prática                        ©2012 Ludimila Monjardim Casagrande                                  4
Exercício

          public class Principal {
            public static void main (String[] args) {
                   Data d = new Data();
                   d.setDia(40);
                   d.setMes(40);
                   d.setAno(-40);
                   System.out.println(d);
            }
          }

          Resultado: 1/1/1800  Tentativas de alterações inválidas
                                não são aceitas.


Aula Prática                    ©2012 Ludimila Monjardim Casagrande   5
Solução Alternativa
    public class Data {
       private int dia = 1;       Definição de
       private int mes = 1;
                                  valores default              public void setDia (int dia) {
       private int ano = 1800;
                                                                      if(dia >= 1 && dia <= 31) {
                                                                          this.dia = dia;
         public Data () {
                                                                      }
         }
                                                               }

         public Data (int d, int m, int a) {                   public void setMes (int mes) {
             if((d >= 1 && d <= 31) &&                                if(mes >= 1 && mes <= 12) {
                (m >= 1 && m <= 12) &&                                    this.mes = mes;
                                                                      }
                (a >= 1800 && a <= 2100)) {
                                                                }
                 this.dia = d;
                 this.mes = m;                                 public void setAno (int ano) {
                 this.ano = a;                                        if(ano >= 1800 && ano <= 2100) {
              }                                                           this.ano = ano;
          }                                                           }
          …
                                                                }
                                                                …
                                                          }

Aula Prática                        ©2012 Ludimila Monjardim Casagrande                                  6
Exercício

       Implemente as classes Hora e Data (cada uma em um
           arquivo separado, porém no mesmo projeto).
          Crie duas pastas, chamadas hora e data, ambas na raiz
           (src) e coloque as respectivas classes nas pastas.
          Declare as packages das classes corretamente.
          Implemente uma classe Principal com o método main e
           salve-a na raiz do projeto.
          Na classe Principal crie e altere objetos das classes
           Hora e Data, explorando o uso dos vários construtores
           disponíveis.
          A cada alteração do objeto, imprima-o na tela e observe
           os resultados.

Aula Prática               ©2012 Ludimila Monjardim Casagrande       7
Atenção

       Ao fazer seu exercício, explore o uso das
           packages criando novas packages, movendo as
           classes de lugar e observando os efeitos
           provocados.
       Explore também o uso dos diferentes
           modificadores de acesso nas classes Hora e
           Data e observe os efeitos colaterais na classe
           Principal.
       Não espere a professora pedir, aprimore você
           mesmo o seu estudo. 
Aula Prática             ©2012 Ludimila Monjardim Casagrande   8

Mais conteúdo relacionado

Mais procurados

Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaDaniel Brandão
 
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
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Polimorfismo java
Polimorfismo javaPolimorfismo java
Polimorfismo javaFAFICA
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetosdanielrpgj30
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)Armando Daniel
 
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOJAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOAndré Victor
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)Marcello Thiry
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysLoiane Groner
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Vitor Hugo Melo Araújo
 

Mais procurados (20)

POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
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
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
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
 
Polimorfismo java
Polimorfismo javaPolimorfismo java
Polimorfismo java
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
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
 
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOJAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTO
 
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
 
Algoritmos - Procedimentos
Algoritmos - ProcedimentosAlgoritmos - Procedimentos
Algoritmos - Procedimentos
 
TEORIA DE CONJUNTOS
TEORIA DE CONJUNTOS TEORIA DE CONJUNTOS
TEORIA DE CONJUNTOS
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER
 

Destaque (12)

Pop encapsulação
Pop   encapsulaçãoPop   encapsulação
Pop encapsulação
 
Farmacotécnica
FarmacotécnicaFarmacotécnica
Farmacotécnica
 
POO - 06 - Encapsulamento
POO - 06 - EncapsulamentoPOO - 06 - Encapsulamento
POO - 06 - Encapsulamento
 
Encapsulamento em oo
Encapsulamento em ooEncapsulamento em oo
Encapsulamento em oo
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
POO Herança
POO HerançaPOO Herança
POO Herança
 
Cálculos i e ii
Cálculos  i e iiCálculos  i e ii
Cálculos i e ii
 
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
 
36854375 apostila-pratica-farmacotecnica
36854375 apostila-pratica-farmacotecnica36854375 apostila-pratica-farmacotecnica
36854375 apostila-pratica-farmacotecnica
 
98230944 farmacotecnica-apostila
98230944 farmacotecnica-apostila98230944 farmacotecnica-apostila
98230944 farmacotecnica-apostila
 
Apostila Farmacotécnica II - Prática 2016
Apostila Farmacotécnica II - Prática 2016Apostila Farmacotécnica II - Prática 2016
Apostila Farmacotécnica II - Prática 2016
 
Apostila-calculos-1-pdf
Apostila-calculos-1-pdfApostila-calculos-1-pdf
Apostila-calculos-1-pdf
 

Mais de Ludimila Monjardim Casagrande

Mais de 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 - 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 - 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 - 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 - 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 - 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 e encapsulamento

  • 1. Programação Orientada a Objetos Prática de Implementação Encapsulamento e Modificadores de Acesso Ludimila Monjardim Casagrande 2012
  • 2. Exercício public class Data { public int dia; public int mes; Atributos declarados como public int ano; públicos public Data () { } public Data (int dia, int mes, int ano) { Falha nos construtores! this.dia = dia; Ambos permitem a criação de this.mes = mes; datas inválidas. this.ano = ano; } public String toString() { String data = dia + "/" + mes + "/" + ano; return data; } } Aula Prática ©2012 Ludimila Monjardim Casagrande 2
  • 3. Exercício public class Principal { public static void main (String[] args) { Data d = new Data(); d.dia = 40; Como os atributos são públicos, eles d.mes = 40; podem ser acessados e alterados d.ano = -40; diretamente em outra classe System.out.println(d); } } Resultado: 40/40/-40  Não é uma data válida! Aula Prática ©2012 Ludimila Monjardim Casagrande 3
  • 4. Exercício public class Data { private int dia; private int mes; private int ano; public void setDia (int dia) { if(dia >= 1 && dia <= 31) { this.dia = dia; public Data () { } this.dia = 1; } this.mes = 1; this.ano = 1800; public void setMes (int mes) { } if(mes >= 1 && mes <= 12) { public Data (int d, int m, int a) { this.mes = mes; this(); } if((d >= 1 && d <= 31) && } (m >= 1 && m <= 12) && public void setAno (int ano) { (a >= 1800 && a <= 2100)) { if(ano >= 1800 && ano <= 2100) { this.dia = d; this.ano = ano; this.mes = m; } this.ano = a; } } … } } … Aula Prática ©2012 Ludimila Monjardim Casagrande 4
  • 5. Exercício public class Principal { public static void main (String[] args) { Data d = new Data(); d.setDia(40); d.setMes(40); d.setAno(-40); System.out.println(d); } } Resultado: 1/1/1800  Tentativas de alterações inválidas não são aceitas. Aula Prática ©2012 Ludimila Monjardim Casagrande 5
  • 6. Solução Alternativa public class Data { private int dia = 1; Definição de private int mes = 1; valores default public void setDia (int dia) { private int ano = 1800; if(dia >= 1 && dia <= 31) { this.dia = dia; public Data () { } } } public Data (int d, int m, int a) { public void setMes (int mes) { if((d >= 1 && d <= 31) && if(mes >= 1 && mes <= 12) { (m >= 1 && m <= 12) && this.mes = mes; } (a >= 1800 && a <= 2100)) { } this.dia = d; this.mes = m; public void setAno (int ano) { this.ano = a; if(ano >= 1800 && ano <= 2100) { } this.ano = ano; } } … } … } Aula Prática ©2012 Ludimila Monjardim Casagrande 6
  • 7. Exercício  Implemente as classes Hora e Data (cada uma em um arquivo separado, porém no mesmo projeto).  Crie duas pastas, chamadas hora e data, ambas na raiz (src) e coloque as respectivas classes nas pastas.  Declare as packages das classes corretamente.  Implemente uma classe Principal com o método main e salve-a na raiz do projeto.  Na classe Principal crie e altere objetos das classes Hora e Data, explorando o uso dos vários construtores disponíveis.  A cada alteração do objeto, imprima-o na tela e observe os resultados. Aula Prática ©2012 Ludimila Monjardim Casagrande 7
  • 8. Atenção  Ao fazer seu exercício, explore o uso das packages criando novas packages, movendo as classes de lugar e observando os efeitos provocados.  Explore também o uso dos diferentes modificadores de acesso nas classes Hora e Data e observe os efeitos colaterais na classe Principal.  Não espere a professora pedir, aprimore você mesmo o seu estudo.  Aula Prática ©2012 Ludimila Monjardim Casagrande 8