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
 
Cracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 ExamsCracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 ExamsGanesh Samarthyam
 
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
 
Segurança da Informação - Aula 4 - Malwares
Segurança da Informação - Aula 4 - MalwaresSegurança da Informação - Aula 4 - Malwares
Segurança da Informação - Aula 4 - MalwaresCleber Fonseca
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
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
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Java swing
Java swingJava swing
Java swingTiago
 
Aula 03 - Layout e Integração de formulário com HTML e PHP
Aula 03  - Layout e Integração de formulário com HTML e PHPAula 03  - Layout e Integração de formulário com HTML e PHP
Aula 03 - Layout e Integração de formulário com HTML e PHPDalton Martins
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismeMouna Torjmen
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
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
 

Mais procurados (20)

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
 
Cracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 ExamsCracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 Exams
 
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 - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
 
POO - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
 
POO - 20 - Wrapper Classes
POO - 20 - Wrapper ClassesPOO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
 
Segurança da Informação - Aula 4 - Malwares
Segurança da Informação - Aula 4 - MalwaresSegurança da Informação - Aula 4 - Malwares
Segurança da Informação - Aula 4 - Malwares
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Java swing
Java swingJava swing
Java swing
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Aula 03 - Layout e Integração de formulário com HTML e PHP
Aula 03  - Layout e Integração de formulário com HTML e PHPAula 03  - Layout e Integração de formulário com HTML e PHP
Aula 03 - Layout e Integração de formulário com HTML e PHP
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et Polymorphisme
 
Aula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da InformaçãoAula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da Informação
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Python
PythonPython
Python
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
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
 

Destaque (13)

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
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
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 (14)

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 - 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 - 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 - 15 - Passagem de Argumentos
POO - 15 - Passagem de ArgumentosPOO - 15 - Passagem de Argumentos
POO - 15 - Passagem de Argumentos
 
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 - 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
 
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 - 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