Buscar

14 - Abstração de Dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Abstração	
  de	
  Dados	
  
Renata	
  Carvalho	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Pacotes	
  
•  Grupo	
  de	
  componentes	
  nomeados	
  e	
  
declarados	
  com	
  um	
  propósito	
  comum	
  
•  Tipos,	
  constantes,	
  variáveis,	
  procedimentos	
  etc.	
  
•  Estruturam	
  sistemas	
  de	
  grande	
  porte,	
  
facilitando	
  a	
  localização	
  dos	
  componentes	
  
•  Oferece	
  um	
  nível	
  mais	
  alto	
  de	
  abstração	
   Pacotes	
  Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Pacotes	
  
•  Em	
  Java	
  
package br.unicap;	
	
import br.unicap.util.Endereco;	
	
public class Pessoa {	
	
	private Endereco endereco;	
	private String nome;	
		
	public Pessoa (String nome) {	
	 	this.nome = nome;	
	}	
		
}	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Encapsulamento	
  
•  Encapsulamento	
  significa	
  tornar	
  alguns	
  
componentes	
  de	
  uma	
  unidade	
  de	
  programa	
  
(pacote,	
  Rpo	
  abstrato	
  ou	
  classe)	
  privado	
  
•  Níveis	
  de	
  privacidade	
  
•  Um	
  componente	
  privado	
  é	
  visível	
  apenas	
  dentro	
  da	
  
unidade	
  de	
  programa	
  
•  Um	
  componente	
  protegido	
  é	
  visível	
  apenas	
  dentro	
  da	
  
unidade	
  de	
  programa	
  e	
  em	
  unidades	
  relacionadas	
  
•  Um	
  componente	
  público	
  é	
  visível	
  ao	
  código	
  da	
  aplicação	
  
fora	
  da	
  unidade	
  de	
  programa	
  
•  A	
  API	
  (applica.on	
  program	
  interface)	
  de	
  uma	
  
unidade	
  de	
  programa	
  consiste	
  apenas	
  dos	
  
bindings	
  públicos	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Tipos	
  Abstratos	
  
•  Um	
  Rpo	
  abstrato	
  possui	
  representação	
  
privada,	
  mas	
  as	
  operações	
  são	
  públicas	
  
•  Suportado	
  diretamente	
  por	
  algumas	
  
linguagens	
  de	
  programação	
  
•  Incluindo	
  Java	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Classes	
  
•  Um	
  objeto	
  é	
  uma	
  tupla	
  de	
  variáveis	
  
componente	
  (variáveis	
  de	
  instância)	
  e	
  um	
  
grupo	
  de	
  operações	
  que	
  acessam	
  estas	
  
variáveis	
  
•  Uma	
  classe	
  é	
  um	
  conjunto	
  de	
  objetos	
  similares	
  
•  Um	
  construtor	
  é	
  uma	
  operação	
  que	
  cria	
  e	
  
inicializa	
  um	
  novo	
  objeto	
  da	
  classe	
  
•  Um	
  método	
  é	
  uma	
  operação	
  que	
  inspeciona	
  
ou	
  atualiza	
  (ou	
  ambos)	
  um	
  objeto	
  existente	
  de	
  
uma	
  classe	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Classes	
  
•  Uma	
  declaração	
  de	
  classe	
  em	
  Java	
  
•  Declara	
  todas	
  as	
  variáveis	
  de	
  instância	
  
•  Define	
  todos	
  os	
  construtores	
  
•  Define	
  todos	
  os	
  métodos	
  
•  Especifica	
  quais	
  são	
  privados,	
  protegidos	
  ou	
  públicos	
  
•  Em	
  Java,	
  uma	
  chamada	
  de	
  método	
  da	
  forma	
  
“o.m(...)”:	
  
•  A	
  expressão	
  o	
  determina	
  o	
  objeto	
  alvo	
  
•  m	
  é	
  o	
  nome	
  do	
  método	
  a	
  ser	
  chamado	
  
•  A	
  chamada	
  executa	
  o	
  corpo	
  do	
  método,	
  com	
  this	
  
denotando	
  o	
  objeto	
  alvo	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Subclasses	
  
•  Uma	
  subclasse	
  de	
  C,	
  S,	
  é	
  um	
  conjunto	
  de	
  
objetos	
  que	
  são	
  similares	
  uns	
  aos	
  outros,	
  
porém	
  mais	
  ricos	
  que	
  os	
  objetos	
  de	
  C	
  
•  Um	
  objeto	
  de	
  S	
  possui	
  todas	
  as	
  variáveis	
  de	
  
instância	
  de	
  um	
  objeto	
  de	
  C,	
  mas	
  pode	
  ter	
  variáveis	
  
de	
  instância	
  extras	
  
•  De	
  forma	
  semelhante,	
  um	
  objeto	
  da	
  classe	
  S	
  é	
  
equipado	
  com	
  todos	
  os	
  métodos	
  da	
  classe	
  C,	
  porém	
  
pode	
  ter	
  métodos	
  extras	
  
•  Se	
  S	
  é	
  uma	
  subclasse	
  de	
  C,	
  dizemos	
  que	
  C	
  é	
  
uma	
  superclasse	
  de	
  S	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Subclasses	
  
•  Comportamento	
  
•  Objetos	
  da	
  subclasse	
  comportam-­‐se	
  como	
  os	
  
objetos	
  da	
  superclasse	
  
•  SubsRtuição	
  
•  Objetos	
  da	
  subclasse	
  podem	
  ser	
  usados	
  no	
  lugar	
  de	
  
objetos	
  da	
  superclasse	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Superclasses	
  
•  Reuso	
  de	
  código	
  
•  A	
  descrição	
  da	
  superclasse	
  pode	
  ser	
  usada	
  para	
  
definir	
  a	
  subclasse	
  
•  Extensibilidade	
  
•  Algumas	
  operações	
  da	
  superclasse	
  podem	
  ser	
  
redefinidas	
  na	
  subclasse	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Herança	
  
•  Dizemos	
  que	
  uma	
  subclasse	
  herda	
  variáveis	
  de	
  
instância	
  e	
  métodos	
  de	
  uma	
  superclasse	
  
•  Uma	
  subclasse	
  pode	
  sobrescrever	
  (override)alguns	
  dos	
  métodos	
  de	
  sua	
  superclasse,	
  
provendo	
  versões	
  mais	
  especializadas	
  destes	
  
métodos	
   Pacotes	
  Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Sobrescrita	
  
•  Cada	
  método	
  de	
  uma	
  classe	
  C	
  é	
  herdado	
  pela	
  
subclasse	
  S,	
  a	
  menos	
  que	
  tenha	
  sido	
  
sobrescrito	
  por	
  S	
  
•  O	
  método	
  na	
  classe	
  S	
  (que	
  que	
  sobrescreve)	
  
tem	
  o	
  mesmo	
  nome	
  e	
  Rpo	
  que	
  o	
  método	
  
original	
  da	
  classe	
  C	
  
•  Algumas	
  LPs	
  OO	
  permitem	
  a	
  programadores	
  
especificar	
  se	
  um	
  método	
  pode	
  ser	
  sobrescrito	
  
ou	
  não	
  
•  Java:	
  final,	
  não	
  pode	
  ser	
  sobrescrito	
  
•  C++:	
  virtual,	
  pode	
  ser	
  sobrescrito	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Dynamic	
  Dispatch	
  
•  Se	
  métodos	
  são	
  sobrescritos	
  e	
  se	
  uma	
  LP	
  permite	
  
a	
  uma	
  variável	
  de	
  uma	
  classe	
  se	
  referir	
  a	
  um	
  
objeto	
  de	
  uma	
  subclasse,	
  então	
  uma	
  chamada	
  
leva	
  a	
  dynamic	
  dispatch	
  
•  Considere	
  a	
  chamada	
  de	
  método	
  “o.m(e1,...,en)”	
  
em	
  Java:	
  
•  O	
  compilador	
  infere	
  o	
  Rpo	
  de	
  o,	
  digamos	
  classe	
  C	
  
•  O	
  compilador	
  verifica	
  se	
  a	
  classe	
  C	
  possui	
  um	
  método	
  
nomeado	
  m,	
  com	
  Rpo	
  adequado	
  
•  Em	
  tempo	
  de	
  execução	
  o	
  alvo	
  da	
  chamada	
  pode	
  ser	
  da	
  
classe	
  S,	
  subclasse	
  de	
  C	
  
•  Se	
  o	
  método	
  for	
  sobrescrito	
  por	
  qualquer	
  subclasse	
  de	
  C,	
  
um	
  teste	
  em	
  tempo	
  de	
  execução	
  vai	
  determinar	
  a	
  classe	
  
à	
  qual	
  o	
  objeto	
  pertence	
  e	
  qual	
  dos	
  métodos	
  com	
  nome	
  
m	
  será	
  chamado	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Herança	
  Simples	
  
•  Herança	
  simples	
  permite	
  que	
  cada	
  classe	
  
tenha	
  no	
  máximo	
  uma	
  superclasse	
  
•  Determinar	
  uma	
  hierarquia	
  de	
  classes	
  
•  Tem	
  suporte	
  na	
  maioria	
  das	
  linguagens	
  de	
  
programação	
  OO,	
  incluindo	
  Java	
  e	
  Ada95	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Herança	
  Múltipla	
  
•  Permite	
  que	
  cada	
  classe	
  tenha	
  mais	
  de	
  uma	
  
superclasse	
  
•  Surgem	
  problemas	
  conceituais	
  e	
  de	
  
implementação	
  
•  C++	
  oferece	
  suporte	
  linguísRco	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Herança	
  Múltipla	
  
•  Exemplo	
  
•  Suponha	
  
•  Classe	
  Animal	
  define	
  um	
  método	
  chamado	
  mover	
  
•  Classes	
  Mamifero	
  e	
  Voador	
  sobrescrevem	
  esse	
  método	
  
•  Classe	
  Morcego	
  herda	
  de	
  Mamifero	
  e	
  de	
  Voador	
  
•  Que	
  método	
  a	
  classe	
  Morcego	
  herda?	
  
Morcego	
  m;	
  
m.mover();	
  
•  Respostas	
  
•  Chamada	
  ao	
  método	
  de	
  Mamifero	
  (Mamifero	
  é	
  a	
  primeira	
  
superclasse	
  nomeada	
  de	
  Morcego)	
  
•  Forçar	
  o	
  programador	
  a	
  escolher	
  
•  Proibir	
  esta	
  chamada	
  de	
  método	
  (ambígua)	
  
Que	
  método	
  será	
  chamado?	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Exercício	
  
•  Suponha	
  
•  Classe	
  Conta	
  com	
  métodos	
  creditar	
  e	
  debitar	
  
•  Classe	
  Poupanca	
  que	
  herda	
  de	
  Conta,	
  sobrescreve	
  o	
  
método	
  creditar	
  e	
  adiciona	
  um	
  método	
  renderJuros	
  
•  O	
  que	
  acontece	
  em	
  cada	
  uma	
  dos	
  códigos	
  abaixo:	
  
•  Conta	
  c	
  =	
  new	
  Poupanca();	
  
	
  	
  	
  c.creditar(10);	
  
	
  	
  	
  c.renderJuros(0.01);	
  
•  Poupanca	
  p	
  =	
  new	
  Conta();	
  
	
  	
  	
  p.renderJuros(0.01);	
  
•  Conta	
  c	
  =	
  (Conta)	
  new	
  Poupanca();	
  
	
  	
  	
  c.creditar(10);	
  
Pacotes	
  
Encapsulamento	
  
Tipos	
  Abstratos	
  
Classes	
  
Subclasses	
  
Superclasses	
  
Herança	
  
Sobrescrita	
  
Dynamic	
  
Dispatch	
  
Herança	
  Simples	
  
Herança	
  
MúlRpla	
  
Exercício

Outros materiais