poo padadigmas

27
PARADIGMAS DA PROGRAMAÇÃO POO rafanonato @rafanonato [email protected] Link apresentação no SlideShare: rafanonato

Upload: rafa-nonato

Post on 04-Jul-2015

278 views

Category:

Education


0 download

DESCRIPTION

Paradigmas da Orientação Objetos. Linguagem de Programação

TRANSCRIPT

Page 1: Poo padadigmas

PARADIGMAS  DA  PROGRAMAÇÃO   POO  

rafanonato

@rafanonato  [email protected]  Link  apresentação  no  SlideShare:  

rafanonato  

Page 2: Poo padadigmas

Introdução  a  POO  Classe  e  Objeto  Método  Herança  Encapsulamento  Abstração  Polimorfismo  Interface  Coesão  /  Acoplamento  

Page 3: Poo padadigmas

INTRODUÇÃO

Page 4: Poo padadigmas

Programação Orientada a Objetos?

Page 5: Poo padadigmas

Programação Orientada a Objetos?

É  UM  PARADIGMA    DE  PROGRAMAÇÃO  

Page 6: Poo padadigmas

Programação Orientada a Objetos?

UM  ESTILO  DE  PROGRAMAÇÃO  

Page 7: Poo padadigmas

Programação Orientada a Objetos?

EXISTEM    OUTRAS  

E muito mais... Orientada a Teste, Escalar, Restritiva, Genérica....

Lógico

Prolog – Popler - QLISP

Imperativo/Procedural Pascal – Fortran -

Basic

Funcional/Descritiva

ML – F# - Haskell

Page 8: Poo padadigmas

Programação Orientada a Objetos?

•   Mais  fácil  descrever  o  mundo  real  através  dos  objetos  •   O  encapsulamento  facilita  a  manutenção  do  código  •   Maior  facilidade  para  reuKlização  de  código  

•   Complexidade  no  aprendizado  em  comparação  com  a  programação  estruturada  •   Seus  conceitos  são  de  diOcil  compreensão  

Page 9: Poo padadigmas

Programação Orientada a Objetos?

RESUMO  POO  é  um  paradigma  de  programação  que  usa  "objetos"  compostos  por  campos  e  métodos,  justamente  com  suas  interações  -­‐  para  projetar  programas  de  computadores.  h"p://en.wikipedia.org/wiki/Object-­‐oriented_programming  

POO  é  uma  forma  especial  de  programar,  mais  próximo  de  como  expressaríamos  as  coisas  na  vida  real  do  que  outros  Vpos  de  programação.  h"p://www.criarweb.com/ar:gos/215.php  

POO  é  organizar    o  mundo  real  como  uma  coleção  de  objetos  que  incorporam  estrutura  de  dados  e  um  conjunto  de  operações  que  manipulam  estes  dados  e  trocam  mensagens  entre  si.  h"p://www.macora?.net/oo_conc2.htm  

Page 10: Poo padadigmas

CLASSE Uma  classe  é  uma  estrutura  que  abstrai  um  conjunto  de  objetos  com  caracterísVcas  similares.  É  como  um  projeto,  a  parVr  dela  que  criamos  os  objetos  uVlizados  em  nossos  programas.  h"p://en.wikipedia.org/wiki/Object-­‐oriented_programming  

Page 11: Poo padadigmas

Classe: Atributos

Os  Atributos  em  Programação  Orientada  a  Objetos  são  os  elementos  que  definem  a  estrutura  de  uma  classe,  ou  seja  suas  caracterísVcas.  h"p://en.wikipedia.org/wiki/Object-­‐oriented_programming  

Page 12: Poo padadigmas

Classe: Construtores

Um  construtor  é  uma  estrutura  especial  da  classe,  um  método,  que  tem  como  objeVvo  definir  a  configuração  inicial  de  uma  classe.  É  uVlizado  quando  existem  atributos  da  classe  que  são  essenciais  para  o  funcionamento  do  objeto,  porém,  são  atributos  de  instância,  e,  assim,  variam  de  acordo  com  cada  objeto.  h"p://www.webartz.com.br/php/php-­‐orientado-­‐a-­‐objetos-­‐conceitos-­‐construtores-­‐e-­‐destrutores  

Page 13: Poo padadigmas

Classe: Destrutores

Semelhante  aos  construtores,  o  destrutor  também  é  uma  estrutura,  outro  método,  da  classe,  porém  este  é  responsável  por  limpar  a  memória  ou  atributos  uVlizados  na  execução  da  classe.  h"p://www.webartz.com.br/php/php-­‐orientado-­‐a-­‐objetos-­‐conceitos-­‐construtores-­‐e-­‐destrutores  

Page 14: Poo padadigmas

Classe: Visibilidade

Quem  tem  acesso  à  classe  tem  acesso  também  a  qualquer  membro  com  visibilidade  public,  é  raro  ter  atributos  públicos,  mas  é  comum  ter  métodos  públicos.  h"p://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/visibilidade.htm  

+  Public  

O  membro  private  não  é  acessível  fora  da  classe,  a  intenção  é  que  apenas  quem  escreve  a  classe  possa  usar  esses  membros.  h"p://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/visibilidade.htm  

-­‐  Private  

O  membro  protected  é  acessível  à  classe  e  a  suas  subclasses,  a  intenção  é  dar  acesso  aos  programadores  que  estenderão  sua  classe.  h"p://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/visibilidade.htm  

#  Protected  

Page 15: Poo padadigmas

Classe: Objeto

Objetos  são  instâncias  de  classes.  É  através  deles  que  (praVcamente)  todo  o  processamento  ocorre  em  sistemas  implementados  com  linguagens  de  programação  orientadas  a  objetos.  Programação  orientada  a  objetos  uma  abordagem  com  Java.  

No  paradigma  de  orientação  a  objetos,  tudo  pode  ser  potencialmente  representado  como  um  objeto.  Sob  o  ponto  de  vista  da  programação  orientada  a  objetos,  um  objeto  não  é  muito  diferente  de  uma  variável  normal.  Programação  orientada  a  objetos  uma  abordagem  com  Java.  

Page 16: Poo padadigmas

MÉTODO Um  método  é  uma  subroVna  que  é  executada  por  um  objeto  ao  receber  uma  mensagem.  Os  métodos  determinam  o  comportamento  dos  objetos  de  uma  classe.  h"p://en.wikipedia.org/wiki/Object-­‐oriented_programming  

Page 17: Poo padadigmas

Método: Assinatura

Cada  método  é  especificado  por  uma  assinatura,  composta  por  um  idenVficador  para  o  método  (o  nome  do  método),  o  Vpo  para  o  valor  de  retorno  e  sua  lista  de  argumentos,  sendo  cada  argumento  idenVficado  por  seu  Vpo  e  nome.  Programação  orientada  a  objetos  uma  abordagem  com  Java.  

[modificador]  Kpo  nome  (argumentos)    {            corpo  do  método    }  

Através  do  mecanismo  de  sobrecarga  (overloading),  dois  métodos  de  uma  classe  podem  ter  o  mesmo  nome,  desde  que  suas  assinaturas  de  argumentos  sejam  diferentes.  Programação  orientada  a  objetos  uma  abordagem  com  Java.  

Page 18: Poo padadigmas

Método: Sobrecarga

São  métodos  que  tem  o  mesmo  nome,  mas  com  argumentos  diferentes.  h"p://www.devmedia.com.br/post-­‐5124-­‐Orientacao-­‐a-­‐objetos-­‐parte-­‐ll.html  

Lista de Argumentos diferentes

Podem alterar o tipo de retorno

Podem alterar o modificador de acesso

Declarar exceções novas ou mais abrangentes CaracterísVcas  

Page 19: Poo padadigmas

Método: Mensagens

Um  programa  orientado  a  objetos  é  composto  por  um  conjunto  de  objetos  que  interagem  através  de  “trocas  de  mensagens”.  Na  práVca,  essa  troca  de  mensagem  traduz-­‐se  na  aplicação  de  métodos  a  objetos.  Programação  orientada  a  objetos  uma  abordagem  com  Java.  

Page 20: Poo padadigmas

Método: Estáticos

Usualmente,  métodos  definidos  em  uma  classe  são  aplicados  a  objetos  daquela  classe.  Há  no  entanto  situações  nas  quais  um  método  pode  fazer  uso  dos  recursos  de  uma  classe  para  realizar  sua  tarefa  sem  necessariamente  estar  associado  a  um  objeto  individualmente.  Programação  orientada  a  objetos  uma  abordagem  com  Java.  

Para  lidar  com  tais  situações,  define  os  métodos  da  classe,  cuja  declaração  deve  conter  o  modificador  sta$c.  Um  método  estáVco  pode  ser  aplicado  à  classe  e  não  necessariamente  a  um  objeto.  Programação  orientada  a  objetos  uma  abordagem  com  Java.  

Page 21: Poo padadigmas

HERANÇA Herança  é  um  mecanismo  que  permite  que  caracterísVcas  comuns  a  diversas  classes  sejam  fatoradas  em  uma  classe  base,  ou  superclasse.  A  parVr  de  uma  classe  base,  outras  classes  podem  ser  especificadas.  Programação  orientada  a  objetos  uma  abordagem  com  Java.  

Page 22: Poo padadigmas

Herança: Sobreposição

A  sobreposição  refere-­‐se  à  redefinição  de  métodos  na  hierarquia  da  herança,  de  forma  que  estes  métodos  implementam  definições  diferentes  (mais  especializadas)  nos  subVpos.  h"p://arquiteturaemobilidade.blogspot.com/2008/07/conceitos-­‐da-­‐orientao-­‐objetos-­‐com-­‐uml_08.html  

Page 23: Poo padadigmas

ENCAPSULAMENTO

É  o  princípio  pelo  qual  cada  componente  de  um  programa  deve  agregar  toda  a  informação  relevante  para  sua  manipulação  como  uma  unidade  (uma  cápsula).  Aliado  ao  conceito  de  ocultamento  de  informação.  Programação  orientada  a  objetos  uma  abordagem  com  Java.  

Page 24: Poo padadigmas

ABSTRAÇÃO Abstração  é  o  processo  de  extrair  as  caracterísVcas  essenciais  de  um  objeto  real.  A  abstração  é  necessária  para  se  ter  um  modelo  fiel  da  realidade  sobre  a  qual  se  possa  operar.  h"p://www.slideshare.net/danielrpgj30/curso-­‐de-­‐programao-­‐orientada-­‐a-­‐objetos  

O  conjunto  de  caracterísVcas  resultante  da  abstração  forma  um  Vpo  de  dado  abstrato  com  informações  sobre  seu  estado  e  comportamento.  h"p://www.slideshare.net/danielrpgj30/curso-­‐de-­‐programao-­‐orientada-­‐a-­‐objetos  

Page 25: Poo padadigmas

POLIMORFISMO O  polimorfismo  permite  que  referências  de  Vpos  de  classes  mais  abstratas  representem  o  comportamento  das  classes  concretas  que  referenciam.  Assim,  um  mesmo  método  pode  apresentar  várias  formas,  de  acordo  com  o  seu  contexto.  h"p://www.slideshare.net/danielrpgj30/curso-­‐de-­‐programao-­‐orientada-­‐a-­‐objetos  

Page 26: Poo padadigmas

INTERFACE É  um  conjunto  de  métodos  que  um  objeto  deve  suportar,  mas  contendo  apenas  a  especificação  da  funcionalidade  que  uma  classe  deve  conter,  sem  determinar  como  essa  funcionalidade  deve  ser  implementadas.    Programação  orientada  a  objetos  uma  abordagem  com  Java.  

Page 27: Poo padadigmas

COESÃO / ACOPLAMENTO

Acoplamento  é  o  grau  que  uma  classe  depende,  interage  com  outra  classe.  Coesão  refere  a  finalidade  que  a  classe  foi  criada.  h"p://www.devmedia.com.br/post-­‐5124-­‐Orientacao-­‐a-­‐objetos-­‐parte-­‐ll.html  

Quanto  menos  uma  classe  depende  da  outra,  menor  o  acoplamento,  e  maior  a  especialização  dela,  isso  significa  alta  coesão.  h"p://www.devmedia.com.br/post-­‐5124-­‐Orientacao-­‐a-­‐objetos-­‐parte-­‐ll.html