UTFPR – Campus Curitiba - DAELN
Cursos de Eng. Eletrônica/Eng. da Computação
IF62C - Fundamentos de Programação
Semana 11 – Parte I: Encapsulamento
Prof.a Tânia Preto / Prof. Robinson Vida
Encapsulamento – Características (i/iii)





Consiste na divisão de um programa em várias partes
menores, onde cada parte possui implementação e
realiza seu trabalho de forma independentemente das
outras partes;
A independência é obtida através da ocultação de
detalhes internos, ou seja, da implementação de cada
parte, através de uma interface externa.
Cada parte pode ser vista como uma caixa preta, onde
apenas a sua função (propósito) e sua forma de
comunicação é conhecida;
A interface (assinatura) permite a comunicação de cada
parte
com outros objetos através do envio de
mensagens;
Esses outros objetos não necessitam de conhecer
detalhes da implementação, por isso a comparação com
a caixa preta;
Encapsulamento – Características (ii/iii)
A interface contém a descrição de todos os métodos e
argumentos que compõe o objeto;
 Ex.: Caixa preta se comunicando com outras entidades
através da interface, responsável por executar a troca de
mensagens:

Encapsulamento – Características (iii/iii)

Exemplo de interface em Java:
◦
◦
◦
◦

public void verErro( String message )
public int somaDois( int x, int y )
public float funcaoX( float a, float b, float c )
public boolean testaRaiz(float a, float b, float c )
Vantagens do encapsulamento:
◦ Independência: O objeto pode ser reutilizado em qualquer lugar pois
eles não estão vinculados a algum programa particular;
◦ Transparência: As atualizações, correções e alterações não são
conhecidas para as entidades que usam o objeto, apenas o seu efeito,
desde que a interface não seja alterada;
◦ Não altera outros objetos e programas: Como o objeto tem
implementação independente, sua única interação com o restante do
programa é a interface, não causando efeitos colaterais inesperados ;

Encapsulamento – Abstração

Características do encapsulamento eficaz:
◦ Abstração;
◦ Ocultação da implementação;
◦ Divisão da responsabilidade;

Abstração:
◦ Abstração é o processo de extrair as características
essenciais de um objeto real;
◦ Consiste em apresentar uma solução mais simples para um
problema difícil, não se preocupa com detalhes;
◦ Seu uso deve permitir um modelo conceitual (orientação a
objetos) que seja utilizado em todas as fases de
desenvolvimento de um sistema, desde a análise até a
documentação.
Encapsulamento – Abstração

Abstração - continuação:
◦ O conjunto de características resultante da abstração
forma um tipo de dados abstrato com informações sobre
seu estado e comportamento;
◦ Concentra-se em definir o que é o objeto e o que ele faz
antes de decidir como ele será implementado;
◦ TADs (tipo abstratos de dados): É uma abstração que
consiste na definição de um conjunto de dados e um
conjunto de operações sobre esses dados;
◦ Classes abstratas:
 São classes estruturais, servem de base para outras classes, não
necessariamente são instanciadas;
 Podem ser vistas como um modelo comum, possuindo alguns
métodos (comuns) implementados e outros apenas definidos;
Encapsulamento – Características

Abstração – Exemplo UML


O mecanismo de herança estruturar a relação, onde a partir das classes
abstratas, novas classes concretas são definidas;
Ex.: As característica (atributos) e comportamentos (métodos) comum
a todos os mamíferos estão abstraídos na classe abstrata Mamífero.
Encapsulamento – Ocultação

Ocultação da implementação:
◦ É necessário ocultar as implementações internas de seus
objetos;
◦ Vantagens de ocultar a implementação:
 Proteger
o objeto de seus usuários;
 Proteger os usuários do próprio objeto;
◦ Os TADs permitem a definição de novas classes, ocultando
dados internos e o estado desses dados, através de uma
interface bem definida;
◦ A definição correta de um tipo protege o objeto de forma
que a qualquer entidade qie interaja com o tipo, o faça de
maneira correta, consistente e segura;
◦ Um procedimento interessante é estabelecer que somente
os métodos da classe podem alterar os dados dessa mesma
classe;
Encapsulamento – Ocultação

Ocultação da implementação – Exemplo em Java:
private double saldo=0;
private String nome;
// para alterar/consultar os atributos é necessário o uso de métodos:
public void retiraValor(double Valor){
this.saldo = this.saldo - Valor;
}
public double getSaldo(){
return this.saldo;
}
public void setNome(String N){
this.nome = N;
}
public String getNome(){
return this.nome;
}
Encapsulamento – Divisão Responsab.

Divisão de responsabilidades:
◦ A medida que um sistema cresce, a tarefa de identificar e dividir
responsabilidades viabiliza o desempenho e a simplicidade do código;
◦ Dividir responsabilidades permite que sejam feitas alterações e adições
de módulos de uma forma coesa e organizada;
◦ Um objeto deve executar apenas uma função – sua responsabilidade –
e executá-la bem;
◦ A responsabilidade de uma classe representa o conjunto de ações que
ela pode desempenhar e o conjunto de informações que ela pode ser
solicitada a fornecer;
◦ O usuário do objeto não deve ter dúvidas quanto a sua utilização;
◦ Responsabilidades podem ser vistas como obrigações de um tipo ou
de uma classe;
Encapsulamento – Divisão Responsab.

Divisão de responsabilidades (continuação):
◦ Obrigações de fazer algo:
 Fazer algo a si mesmo;
 Iniciar ações em outros objetos;
 Controlar ou coordenar atividades em outros objetos;
◦ Obrigações de conhecer algo:
 Conhecer dados encapsulados;
 Conhecer objetos relacionados;
 Conhecer coisas que ele pode calcular;
◦ Exemplos
 Uma Conta bancária tem a responsabilidade de registrar as transações
(fazer algo);
 Uma Conta bancária tem a responsabilidade de saber sua data de
criação (conhecer algo).
Download

IF62C - Fundamentos de Programação