Programação Orientada a Objetos. Encapsulamento



Documentos relacionados
Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

BSI UFRPE Prof. Gustavo Callou

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

Encapsulamento de Dados

5 Caso de estudo O cartão fidelidade

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Análise de Programação

Herança. Alberto Costa Neto DComp - UFS

POO Programação Orientada a Objetos. Classes em Java

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Técnicas de Programação II

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Programação por Objectos. Java

Herança. Algoritmos e Programação II. Aula 5 Herança

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

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

Coleções. João Paulo Q. dos Santos

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Programação Orientada a Objetos em Java

Programação de Computadores - I. Profª Beatriz Profº Israel

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

Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Coleções Avançadas. Programação Orientada a Objetos Java. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior

Tópicos em Engenharia de Computação

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Implementação de Classe e Auto-Relacionamento em Java

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Unidade IV: Ponteiros, Referências e Arrays

Capítulo 3. Programação por objectos em Java

Análise e Projeto Orientados por Objetos

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Orientação a Objetos e a Linguagem Java

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Módulo 06 Desenho de Classes

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos (DPADF 0063)

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Módulo 07 Características Avançadas de Classes

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Reuso com Herança a e Composiçã

Guia de Fatores de Qualidade de OO e Java

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

FACULDADE PITÁGORAS DE UBERLÂNDIA PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA LISTA DE EXERCÍCIOS (Compilação) Versão 2.0

Exercícios de Revisão Java Básico

Algoritmos e Programação II. Sobrecarga

Capítulo 4. Packages e interfaces

Programação de Computadores - I. Profª Beatriz Profº Israel

Java 2 Standard Edition Como criar classes e objetos

3 Classes e instanciação de objectos (em Java)

Estrutura em Camadas. Estrutura em Camadas. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Programação com Acesso a BD. Programação com OO Acesso em Java

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

Padrão Arquitetura em Camadas

Rafael Santos. Instituto Nacional de Pesquisas Espaciais rafael.santos. Rafael Santos - rafael.

Modificador static e Pacotes. Alberto Costa Neto DComp - UFS

Classes Abstratas e Interfaces

Programação por Objectos. Java

Programação por Objectos. Java

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

Capítulo 8. Introdução UML

UML Aspectos de projetos em Diagramas de classes

Projeto de sistemas em Java. Algoritmos e Programação I. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario

UNIVERSIDADE FEDERAL DO PARANÁ

Programação Orientada a Objetos em java. Polimorfismo

Noções sobre Objetos e Classes

Programação Orientada a Objetos C++

Linguagem de Programação III

HERANÇA. Prog. Orientada a Objetos em Java

Java. Marcio de Carvalho Victorino

UML: Diagrama de Casos de Uso, Diagrama de Classes

A classe ArrayList. IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

Tópicos da Aula. Classes e Objetos. Classe Pública em Java. Classes em Java. Assinatura de Métodos. Corpo de Classes e Métodos. Conceitos de classe

BSI UFRPE Prof. Gustavo Callou

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

Programação Orientada por Objetos

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

1. Herança. Sobrescrevem métodos - redefinem métodos herdados. Subclasse herda de uma superclasse

Computação II Orientação a Objetos

ORIENTAÇÃO A OBJETOS. Professora Lucélia Oliveira

Conversão de Tipos e Arrays

insfcanceof new public switch transient while byte continue extends for int null

Introdução à Programação Orientada a Objetos

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2

Programação Java Aula 04

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Polimorfismo. Prof. Leonardo Barreto Campos 1

Curso Java Starter. 1

Revisão OO Básico. Orientação a Objetos em Java

Transcrição:

Programação Orientada a Objetos Encapsulamento

de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção

Minimiza as interdependências entre módulos, através da definição de interfaces externas (serviços). Classe como caixa preta. Não se conhece seu funcionamento internamente, apenas se sabe como utilizar. A interface (métodos públicos) de uma classe declara todas as operações acessíveis a outras classes.

Todo o acesso aos dados é feito através de chamada a serviços conhecidos como getters (Recuperadores de atributos) e setters (modificadores de atributos). As mudanças na implementação interna do objeto (que preservem a sua interface externa) não afetam o resto do Sistema.

Benefícios Segurança: protege os objetos de terem seus atributos corrompidos por outros objetos. Independência: escondendo seus detalhes de implementação, uma classe evita que outras fiquem dependentes de sua estrutura interna

Elevado grau de abstração Abstração esconder e não se preocupar com detalhes! Resultado: uma maior facilidade na: Compreensão; Correção; Manutenção; Reutilização Extensão.

Tipos de Visibilidade: Em sistemas orientados a objetos, ha diferentes tipos de visibilidade de atributos e métodos. Os principais são: Publico objetos de outras classes possuem acesso direto. Privado o acesso e restrito ao interior da classe. Protegido o acesso e restrito as classes do mesmo pacote, e as subclasses em qualquer pacote. Pacote o acesso e restrito as classes do mesmo pacote.

Em Java: publico: palavra reservada public privado: palavra reservada private protegido: palavra reservada protected package: (default) sem modificador Em UML: Publico: + Privado: - Protegido: # pacote: ~

Exercício: teste a diferença entre as quatro formas de visibilidade.

Para inserir uma classe em um pacote (existente ou não): package teste; import java.util.*; class Teste {... }

Para importar as classes do pacote: package Teste2; import teste.*; OU import teste.teste; class Horario {... }

Exemplo de uso de visibilidade na UML

Getters & Setters (interface de acesso) public class Funcionario extends Pessoa{ private float salario; private int horasextras; public boolean setsalario(float salario) { if (salario > 0) { return true; } this.salario = salario; else return false; } public float getsalario() { return this.salario; } }

Utilização dos getters & setters... Funcionario f; f = new Funcionario(); f.setsalario(1000); System.out.println(f.getSalario());

Os atributos private não são visíveis na subclasse, apesar de serem herdados. Eles devem ser acessados através de getters e setters herdados.

A visibilidade dos métodos sobrescritos pode mudar, mas, apenas para dar mais acesso. Por exemplo: um método declarado na superclasse como protected pode ser redefinido protected ou public, mas não private ou com visibilidade de pacote.

Implementação de relações com encapsulamento Exemplo:Considere a seguinte relação de 1 para 1.

Relacao unidirecional

Utilização em uma suposta classe cliente class Principal{ public static void main(string args[]){ A a = new A(); B b1 = new B(); B b2 = new B();... a.setb1(b1); a.setb2(b2);... b1.seta(a); b2.seta(a); } }

Exercício: Modifique a classe A para que as referências a classe B passem a ser armazenadas em um vetor de duas posições. Analise qual o impacto desta modificação na classe cliente, neste caso, a classe Principal.

Exemplo: Relações de 1 para n : Diagrama de classes UML

Relações de 1 para n : implementação

Utilização em uma classe cliente: class Principal{ public static void main(string args[]){ A a = new A(); B b1 = new B(a); B b2 = new B(a); B bn = new B(a); a.addb(b1);... a.addb(bn); } }

A classe ArrayList implementa a noção de array de capacidade variável e "ilimitada". Índice começa no zero! Importar import java.util.arraylist; import java.util.*;

Classe ArrayList Métodos principais: void add(int index, Object element) coloca o elemento na posição indicada void add (Object element) coloca o elemento no fim do Vector void clear() remove todos os elementos boolean contains(object element)retorna true se o Vector contém o elemento indicado Object elementat(int index) ou Object get(int index) retorna o elemento que esta na posição indicada Object firstelement() retorna o elemento que esta na primeira posição (index=0) do Vector object remove(int index) remove o elemento que esta na posição indicada boolean remove(object element) remove a primeira ocorrência do elemento Object set(int index, Object elelement) substitui o elemento na posição indicada pelo elemento passado pelo argumento int size() retorna a dimensão atual do Vector

Alteração da implementação usando a classe ArrayList class A { private ArrayList<B> bs = new ArrayList<B>(); public void addb(b b); bs.add(b); } }

Qual o impacto desta mudança na classe cliente (neste caso, a classe Principal)?

Exercício Implemente corretamente, e utilizando encapsulamento, a seguinte relação: (obs.: unidirecional de produto para matéria prima)