PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

Documentos relacionados
PROGRAMAÇÃO ORIENTADA A OBJETOS: CONSTRUTORES

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

LISTA DUPLAMENTE ENCADEADA

JAVA COLLECTIONS API: LISTAS

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

PROGRAMAÇÃO ORIENTADA A OBJETOS: HERANÇA

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O

Programação Orientada a Objetos II

Linguagem de Programação II Implementação

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

Linguagem de Programação II Implementação

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Programação Orientada a Objetos SANTOS, Rafael (PLT)

Análise de Programação

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Encapsulamento. Alberto Costa Neto DComp - UFS

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Classes e Objetos. Sintaxe de classe em Java

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Linguagem de Programação III

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Aula 4. TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 2014 Marcelo Henrique dos Santos -

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Orientação a Objetos e Java

JAVA. Professor: Bruno Toledo

Tipos, Literais, Operadores

Tipos, Literais, Operadores

final class UltimosDiasMeses{ static final int[] DIAS_DO_MES = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; }

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

Strings e Arrays POO

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

COMPORTAMENTOS - Observações

Palavras Reservadas da Linguagem Java

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

1 Introdução e Conceitos básicos

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Classes e Objetos POO

Conceitos de Programação Orientada a Objetos

ESTRUTURAS DE DADOS ESTÁTICAS: VETORES

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Programação Orientada aos Objectos I

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Notas de Aula 09: Tratamento de exceções

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Exercícios sobre repetição. 1. Escreva um método que lê via teclado 8 números e retorna a quantidade de negativos.

Seleção Múltipla Laços (while, do-while, for) AULA 05

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

ESTRUTURAS DE DADOS ESTÁTICAS: MATRIZES

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Java para Desktop. Programação Orientada à Objetos 2 JSE

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

Linguagem de Programação III

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Modelo do Mundo Real. Abstração. Interpretação

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I

Programação Orientada a Objetos. Encapsulamento

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

POO29004 Programação Orientada a Objetos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Linguagem de Programação III

Transcrição:

COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO FOZ DO IGUAÇU 2013

LISTA DE QUADROS QUADRO 1 CLASSE HORA... 2 QUADRO 2 A APLICAÇÃO APPHORA QUE USA A CLASSE HORA... 4 QUADRO 3 MEMBROS PRIVADOS DA CLASSE HORA NÃO ESTÃO ACESSÍVEIS... 5

SUMÁRIO 3 OCULTAR INFORMAÇÕES E ENCAPSULAMENTO... 1 3.1 CONTROLE DE ACESSO... 1 3.1.1 Estudo de Caso da Classe Hora... 2 3.1.1.1 Declaração da Classe Hora... 2 3.1.1.2 Usar a Classe Hora... 4 3.1.1.3 Controlar o acesso aos membros... 5 3.2 EXERCÍCIOS... 5 3.3 REFERÊNCIA BIBLIOGRÁFICA... 6

1 3 OCULTAR INFORMAÇÕES E ENCAPSULAMENTO Ocultar informações significa separar a descrição de como usar a classe dos detalhes de implementação, assim como os métodos da classe são definidos. Isso pode ser feito de modo que um programador que usa a classe não precise saber os detalhes de implementação da definição da classe. O programador que usa a classe pode considerar os detalhes de implementação como ocultos, desde que não precise olhá-los. Ocultar informações é uma forma de evitar a sobrecarga de informações. Mantém as informações necessárias para o programador usar a classe dentro de limites razoáveis. Outro termo para ocultação de informações é abstração. O uso do termo abstração para ocultação de informações significa descartar alguns detalhes. Encapsulamento significa o agrupamento de software em uma unidade, de tal modo que seja fácil de utilizar, porque existe uma interface simples bem definida. Encapsulamento combina os dados e as ações em uma única classe, e os detalhes da implementação ficam ocultos. Os termos ocultação de informações e encapsulamento dividem o mesmo princípio geral: Se uma classe é bem desenhada, o programador que usa a classe não precisa saber todos os detalhes da implementação da classe, mas só precisa saber uma descrição muito mais simples de como usar da classe. 3.1 CONTROLE DE ACESSO O encapsulamento liga os dados com o código que os manipula. O encapsulamento proporciona outro atributo importante: o controle de acesso. Através do encapsulamento, o programador pode controlar quais as partes de um programa podem acessar os membros de uma classe. Controlando o acesso é possível evitar o uso indevido, permitindo o acesso aos dados somente através de um conjunto bem definido de métodos.

2 Como um membro pode ser acessado é determinado pelo especificador de acesso que modifica sua declaração. Java fornece um rico conjunto de especificadores de acesso. Especificadores de acesso do Java são públicos (public), privados (private), e protegidos (protected). Java também define um nível de acesso padrão. O especificador protected aplica-se apenas quando a herança está envolvida. 3.1.1 Estudo de Caso da Classe Hora O estudo de caso consiste em duas classes Hora e AppHora. A classe Hora representa a hora do dia. A classe AppHora é uma classe de aplicativo em que o principal método cria um objeto da classe Hora e invoca seus métodos. Essas classes devem ser declaradas em arquivos separados, porque eles são duas classes públicas. 3.1.1.1 Declaração da Classe Hora As variáveis de instância private int da classe Hora, hora, minuto e segundo, no Quadro 1, representam a hora no formato universal (relógio de 24 horas em que as hora estão na faixa de 0 e 23). A classe Hora contém os métodos públicos settime, formatouniversal e formatoamericano. Estes métodos são também chamados de serviços públicos ou interface pública que a classe fornece aos seus clientes. Quadro 1 Classe Hora 1 package hora; 2 3 public class Hora { 4 private int hora; // de 0 à 23 5 private int minuto; // de 0 à 59

3 6 private int segundo; // de 0 à 59 7 8 /* 9 * define um novo valor de hora usando hora universal; 10 * lança uma exceção se a hora, minuto ou segundo é inválido 11 */ 12 public void sethora(int h, int m, int s){ 13 if ((h >= 0 && h < 24) && (m >= 0 && m < 60) && 14 (s >= 0 && s < 60)){ 15 hora = h; 16 minuto = m; 17 segundo = s; 18 } 19 else 20 throw new IllegalArgumentException( 21 "Hora, minuto e/ou segundo está fora do intervalo"); 22 }//fim do método sethora 23 24 //converte para String no formato de hora universal (hh:mm:ss) 25 public String formatouniversal(){ 26 return String.format("%02d:%02d:%02d", hora, minuto, segundo); 27 }//fim do método formatouniversal 28 29 //converte para String no formato de hora americano 30 public String formatoamericano(){ 31 return String.format("%d:%02d:%02d %s", 32 ((hora == 0 hora == 12)? 12 : hora % 12), 33 minuto, segundo, (hora < 12? "AM" : "PM")); 34 }//fim do método formatoamericano 35 }//fim da classe Hora

4 No exemplo, a classe Hora não declara um construtor, então a classe tem um construtor padrão que é fornecido pelo compilador. Cada variável de instância recebe implicitamente um valor 0 padrão para um int. 3.1.1.2 Usar a Classe Hora A classe AppHora, no Quadro 2, é uma aplicação que usa a classe Hora. Quadro 2 A aplicação AppHora que usa a classe Hora 1 package hora; 2 3 public class AppHora { 4 public static void main(string[] args) { 5 Hora hora = new Hora(); //invoca o construtor Hora 6 7 //saída de representações de sequência de hora 8 System.out.print("A hora universal inicial é: "); 9 System.out.println(hora.formatoUniversal()); 10 System.out.print("A hora padrão americano é: "); 11 System.out.println(hora.formatoAmericano()); 12 System.out.println();//deixa uma linha em branco 13 14 //alterar a hora e a saída atualiza o horário 15 hora.sethora(13, 27, 6); 16 System.out.print("Hora universal é: "); 17 System.out.println(hora.formatoUniversal()); 18 System.out.print("Padrão americano de hora é: "); 19 System.out.println(hora.formatoAmericano()); 20 System.out.println(); 21 } 22 }

5 3.1.1.3 Controlar o acesso aos membros O Quadro 3 demonstra que os membros de classes privadas não são acessíveis fora da classe. Ao tenta acessar diretamente as variáveis de instância privadas hora, minuto e segundo do objeto hora, o compilador gera mensagens de erro que esses membros privados não estão acessíveis. Quadro 3 Membros privados da classe Hora não estão acessíveis 1 package hora; 2 3 public class AppAcessoMembros { 4 public static void main(string[] args) { 5 Hora hora = new Hora(); //cria e inicializa o objeto hora 6 hora.hora = 7; 7 hora.minuto = 15; 8 hora.segundo = 30; 9 } 10 } 3.2 EXERCÍCIOS 1. Defina uma classe chamada Data e uma classe que demonstre o seu uso. Objetos desta classe representam datas como 31 de dezembro de 2012 e 7 de setembro de 1822. Cada objeto desta classe tem três pedaços de dados: uma sequência de caracteres para o nome do mês, um número inteiro para o dia do mês, e outra para o ano inteiro. Os objetos têm apenas um método, que é chamado exibesaida. 2. Altere a classe Data: Crie o método chamado leiaentrada, que solicite três valores do teclado na sequência int String int e os atribui às variáveis de instância (dia, mês e ano). Crie o método getdia que retorna o dia. Crie o método getano que retorna o ano.

Crie o método getmes que retorna de 1 a 12 mediante o mês que o usuário digite. 3. Crie uma aplicação que utilize essa classe, e utilize os métodos leiaentrada para receber a data, e exiba a data usando os métodos gets criados. 4. Altere a classe Data, criando os métodos: setdata, que recebe como parâmetro três valores inteiros, e os atribui para as variáveis de instância. Sendo que o mês deve ser atribuído como String para isso chama o método messtring descrito a seguir. messtring, recebe um inteiro como parâmetro e devolve uma String. Esse método deve usar uma estrutura condicional switch case, que verifica se o parâmetro recebido está entre 1 e 12, retornando o mês correspondente. Caso contrário, devolva uma mensagem de erro e encerre a aplicação. 5. Crie uma aplicação que utilize os dois métodos criados no exercício 4. 6 3.3 REFERÊNCIA BIBLIOGRÁFICA DEITEL, Paul; DEITEL, Harvey. Java for Programmers, 2 nd Education, 2012. ed. Boston: Pearson SAVITCH, Walter. Absolute Java, 5 th Ed. Boston: Pearson, 2013. SCHIDT, Herbert. Java: The Complete Reference, 7 th Ed. New York: Mc Graw Hill, 2007.