Suporte ` Programa¸˜o Orientada a Objetos        a         ca              Suporte ` Programa¸˜o Orientada a Objetos      ...
Suporte ` Programa¸˜o Orientada a Objetos        a         caT´picos o       1 Introdu¸˜o                ca       2 Quest˜...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Introdu¸˜o         caIntrodu¸˜o       ca               Uma ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       oQuest˜es de projeto     o       ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Exclusividade de objetosExc...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Exclusividade de objetosExc...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Exclusividade de objetosExc...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Exclusividade de objetosExc...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Exclusividade de objetosExc...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Exclusividade de objetosExc...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Subclasses s˜o subtipos?   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Checagem de tipo e polimorfi...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Checagem de tipo e polimorfi...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Checagem de tipo e polimorfi...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Checagem de tipo e polimorfi...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Checagem de tipo e polimorfi...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Checagem de tipo e polimorfi...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Checagem de tipo e polimorfi...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Heran¸a unica e m´ltipla   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Heran¸a unica e m´ltipla   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Heran¸a unica e m´ltipla   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Heran¸a unica e m´ltipla   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Heran¸a unica e m´ltipla   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Heran¸a unica e m´ltipla   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Heran¸a unica e m´ltipla   ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Quest˜es de projeto       o     Aloca¸˜o e desaloca¸˜o de o...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Implementa¸˜o de Contru¸oes Orientadas a Objeto            ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Implementa¸˜o de Contru¸oes Orientadas a Objeto            ...
Suporte ` Programa¸˜o Orientada a Objetos        a         ca  Implementa¸˜o de Contru¸oes Orientadas a Objeto            ...
Próximos SlideShares
Carregando em…5
×

Suporte à Programação Orientada a Objetos

834 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
834
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
20
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Suporte à Programação Orientada a Objetos

  1. 1. Suporte ` Programa¸˜o Orientada a Objetos a ca Suporte ` Programa¸˜o Orientada a Objetos a ca Cap´ ıtulo 12 - Livro do Sebesta Helio Henrique L. C. Monte-Alto Disciplina: Paradigma de Programa¸˜o Imperativa e Orientada ca a Objetos 2012
  2. 2. Suporte ` Programa¸˜o Orientada a Objetos a caT´picos o 1 Introdu¸˜o ca 2 Quest˜es de projeto o Exclusividade de objetos Subclasses s˜o subtipos? a Checagem de tipo e polimorfismo Heran¸a unica e m´ltipla c ´ u Aloca¸˜o e desaloca¸˜o de objetos ca ca 3 Implementa¸˜o de Contru¸˜es Orientadas a Objeto ca co
  3. 3. Suporte ` Programa¸˜o Orientada a Objetos a ca Introdu¸˜o caIntrodu¸˜o ca Uma linguagem OO deve prover suporte a trˆs caracter´ e ısticas: Tipos abstratos de dados Heran¸a c Vincula¸˜o dinˆmica de chamadas de m´todos ca a e Primeira linguagem com suporte a OO: SIMULA 67 Linguagem base para uma linguagem puramente orientada a objetos: Smalltalk
  4. 4. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto oQuest˜es de projeto o Exclusividade de objetos Subclasses s˜o subtipos? a Checagem de tipo e Polimorfismo Heran¸a unica e m´ltipla c ´ u Aloca¸˜o e desaloca¸˜o de objetos ca ca Vincula¸˜o dinˆmica e est´tica ca a a Classes aninhadas Inicializa¸˜o de objetos ca
  5. 5. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Exclusividade de objetosExclusividade de objetos Vantagem Elegˆncia e uniformidade da linguagem e seu uso. a
  6. 6. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Exclusividade de objetosExclusividade de objetos Vantagem Elegˆncia e uniformidade da linguagem e seu uso. a Desvantagem Opera¸˜es simples s˜o feitas por meio do processo de troca de co a mensagens Mais lento do que no modelo imperativo
  7. 7. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Exclusividade de objetosExclusividade de objetos Vantagem Elegˆncia e uniformidade da linguagem e seu uso. a Desvantagem Opera¸˜es simples s˜o feitas por meio do processo de troca de co a mensagens Mais lento do que no modelo imperativo Alternativa Manter o modelo imperativo e adicionar o modelo OO Pode deixar a linguagem confusa =⇒ Objetos e literais misturados Necessidade de wrapper classes
  8. 8. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Exclusividade de objetosExclusividade de objetos - Exemplos Smalltalk e Ruby Tudo ´ objeto. e As vari´veis n˜o tˆm tipo (typeless): todas s˜o referˆncias a a a e a e objetos.
  9. 9. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Exclusividade de objetosExclusividade de objetos - Exemplos Smalltalk e Ruby Tudo ´ objeto. e As vari´veis n˜o tˆm tipo (typeless): todas s˜o referˆncias a a a e a e objetos. C++ Mant´m todas as constru¸˜es e tipos do C e co Retrocompatibilidade com C ⇒ Linguagem multiparadigma
  10. 10. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Exclusividade de objetosExclusividade de objetos - Exemplos Java Mant´m tipos escalares primitivos (int, boolean, char, etc) e Motivo: eficiˆncia e Problema: muitas classes, como ArrayList, podem conter apenas objetos Necess´rio o uso de wrappers a
  11. 11. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? a A rela¸˜o entre uma classe filha e uma classe m˜e sempre ´ ca a e a ca ´ equivalente ` rela¸˜o ”E-UM”?
  12. 12. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? a A rela¸˜o entre uma classe filha e uma classe m˜e sempre ´ ca a e a ca ´ equivalente ` rela¸˜o ”E-UM”? Objetos da classe filha devem possuir a interface da classe m˜e a
  13. 13. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? a A rela¸˜o entre uma classe filha e uma classe m˜e sempre ´ ca a e a ca ´ equivalente ` rela¸˜o ”E-UM”? Objetos da classe filha devem possuir a interface da classe m˜e a Um objeto da classe filha sempre pode ser substitu´ por um ıdo objeto da classe m˜e sem causar um erro de tipo a
  14. 14. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? a Rela¸˜o dos modos como uma subclasse pode diferir de sua ca superclasse: Mudan¸a c Deixa de ser sub- tipo? M´todos p´blicos adicionais e u ˜ NAO Menos m´todos (oculta¸˜o de e ca SIM m´todos p´blicos da superclasse) e u Tipos dos parˆmetros de m´todos a e SIM p´blicos diferentes u Tipo do retorno de m´todos p´blicos e u SIM diferentes Corpo (implementa¸˜o) de m´todos ca e ˜ NAO diferentes
  15. 15. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? - Exemplos a Smalltalk Subclasses herdam todos os membros da superclasse, e n˜o a podem ocultar membros da superclasse
  16. 16. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? - Exemplos a Smalltalk Subclasses herdam todos os membros da superclasse, e n˜o a podem ocultar membros da superclasse Logo, toda subclasse ´ subtipo e
  17. 17. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? - Exemplos a Smalltalk Subclasses herdam todos os membros da superclasse, e n˜o a podem ocultar membros da superclasse Logo, toda subclasse ´ subtipo e C++ Dois modos de deriva¸˜o: public e private ca Deriva¸˜o privada esconde membros p´blicos da superclasse ca u
  18. 18. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? - Exemplos a Smalltalk Subclasses herdam todos os membros da superclasse, e n˜o a podem ocultar membros da superclasse Logo, toda subclasse ´ subtipo e C++ Dois modos de deriva¸˜o: public e private ca Deriva¸˜o privada esconde membros p´blicos da superclasse ca u Logo, nem toda subclasse ´ subtipo e
  19. 19. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? - Exemplos a Java N˜o ´ poss´ ocultar membros da superclasse a e ıvel
  20. 20. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? - Exemplos a Java N˜o ´ poss´ ocultar membros da superclasse a e ıvel M´todos com mesmo nome mas tipos dos parˆmetros e tipo e a de retorno diferentes ⇒ m´todos sobrecarregados e
  21. 21. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? - Exemplos a Java N˜o ´ poss´ ocultar membros da superclasse a e ıvel M´todos com mesmo nome mas tipos dos parˆmetros e tipo e a de retorno diferentes ⇒ m´todos sobrecarregados e Logo, toda subclasse ´ subtipo e
  22. 22. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? - Exemplos a Java N˜o ´ poss´ ocultar membros da superclasse a e ıvel M´todos com mesmo nome mas tipos dos parˆmetros e tipo e a de retorno diferentes ⇒ m´todos sobrecarregados e Logo, toda subclasse ´ subtipo e Ruby ´ E poss´ mudar controles de acesso de membros da ıvel superclasse
  23. 23. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Subclasses s˜o subtipos? aSubclasses s˜o subtipos? - Exemplos a Java N˜o ´ poss´ ocultar membros da superclasse a e ıvel M´todos com mesmo nome mas tipos dos parˆmetros e tipo e a de retorno diferentes ⇒ m´todos sobrecarregados e Logo, toda subclasse ´ subtipo e Ruby ´ E poss´ mudar controles de acesso de membros da ıvel superclasse Logo ´ poss´ ocultar membros da superclasse, e portanto e ıvel subclasses nem sempre s˜o subtipos a
  24. 24. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Checagem de tipo e polimorfismoChecagem de tipo e polimorfismo Polimorfismo Vari´vel polim´rfica: pode referenciar objetos da classe m˜e a o a e das classes descendentes
  25. 25. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Checagem de tipo e polimorfismoChecagem de tipo e polimorfismo Polimorfismo Vari´vel polim´rfica: pode referenciar objetos da classe m˜e a o a e das classes descendentes Polimorfismo requer vincula¸˜o dinˆmica de m´todos ca a e
  26. 26. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Checagem de tipo e polimorfismoChecagem de tipo e polimorfismo Polimorfismo Vari´vel polim´rfica: pode referenciar objetos da classe m˜e a o a e das classes descendentes Polimorfismo requer vincula¸˜o dinˆmica de m´todos ca a e Vincula¸˜o dinˆmica ⇒ Custo adicional em tempo de ca a execu¸˜o ca
  27. 27. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Checagem de tipo e polimorfismoChecagem de tipo e polimorfismo Polimorfismo Vari´vel polim´rfica: pode referenciar objetos da classe m˜e a o a e das classes descendentes Polimorfismo requer vincula¸˜o dinˆmica de m´todos ca a e Vincula¸˜o dinˆmica ⇒ Custo adicional em tempo de ca a execu¸˜o ca Checagem dinˆmica de tipo a A classe real do objeto apontado pela vari´vel n˜o pode ser a a determinada em tempo de compila¸˜oca Problemas: Custo da checagem em tempo de execu¸˜o ca Atrasos na detec¸˜o de erros ca
  28. 28. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Checagem de tipo e polimorfismoChecagem de tipo e polimorfismo - Exemplos Smalltalk e Ruby Somente vincula¸˜o dinˆmica de m´todos ca a e ´ Unica checagem de tipo: garantir que uma mensagem encontra o m´todo correspondente e
  29. 29. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Checagem de tipo e polimorfismoChecagem de tipo e polimorfismo - Exemplos Smalltalk e Ruby Somente vincula¸˜o dinˆmica de m´todos ca a e ´ Unica checagem de tipo: garantir que uma mensagem encontra o m´todo correspondente e C++ Permite vincula¸˜o dinˆmica e est´tica ca a a M´todos definidos com virtual ⇒ vincula¸˜o dinˆmica e ca a
  30. 30. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Checagem de tipo e polimorfismoChecagem de tipo e polimorfismo - Exemplos Smalltalk e Ruby Somente vincula¸˜o dinˆmica de m´todos ca a e ´ Unica checagem de tipo: garantir que uma mensagem encontra o m´todo correspondente e C++ Permite vincula¸˜o dinˆmica e est´tica ca a a M´todos definidos com virtual ⇒ vincula¸˜o dinˆmica e ca a Java Permite vincula¸˜o dinˆmica e est´tica ca a a M´todos definidos com final, static ou private ⇒ e vincula¸˜o est´tica ca a
  31. 31. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Heran¸a unica e m´ltipla c ´ uHeran¸a unica e m´ltipla c ´ u Heran¸a m´ltipla: uma classe pode herdar de mais de uma c u classe?
  32. 32. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Heran¸a unica e m´ltipla c ´ uHeran¸a unica e m´ltipla c ´ u Heran¸a m´ltipla: uma classe pode herdar de mais de uma c u classe? Problemas Complexidade Se duas superclasses definem o mesmo m´todo, qual deles deve ser e chamado? Heran¸a compartilhada (diamante) c Torna o projeto do programa mais complexo: muitas dependˆncias e no c´digo ⇒ manuten¸˜o mais dif´ o ca ıcil
  33. 33. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Heran¸a unica e m´ltipla c ´ uHeran¸a unica e m´ltipla c ´ u Heran¸a m´ltipla: uma classe pode herdar de mais de uma c u classe? Problemas Complexidade Se duas superclasses definem o mesmo m´todo, qual deles deve ser e chamado? Heran¸a compartilhada (diamante) c Torna o projeto do programa mais complexo: muitas dependˆncias e no c´digo ⇒ manuten¸˜o mais dif´ o ca ıcil Eficiˆncia e Requer uma opera¸˜o a mais a cada chamada de m´todo ca e Custo adicional n˜o muito alto a
  34. 34. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Heran¸a unica e m´ltipla c ´ uHeran¸a unica e m´ltipla c ´ u
  35. 35. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Heran¸a unica e m´ltipla c ´ uHeran¸a unica e m´ltipla - Exemplos c ´ u Smalltalk Somente heran¸a unica c ´
  36. 36. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Heran¸a unica e m´ltipla c ´ uHeran¸a unica e m´ltipla - Exemplos c ´ u Smalltalk Somente heran¸a unica c ´ C++ Permite heran¸a m´ltipla c u Desambigua¸˜o de membros com mesmo nome ⇒ Operador ca de resolu¸˜o de escopo (::) ca
  37. 37. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Heran¸a unica e m´ltipla c ´ uHeran¸a unica e m´ltipla - Exemplos c ´ u Java Somente heran¸a unica c ´ Interfaces Podem ser usadas para simular heran¸a m´ltipla c u Proveem um tipo de polimorfismo (interfaces podem ser tratadas como tipos) A classe deve implementar todos os m´todos da interface ⇒ e Evita os problemas de m´ltipla heran¸a u c Ruby Somente heran¸a unica c ´ M´dulos o Permite que uma classe herde todas as fun¸oes de um m´dulo c˜ o
  38. 38. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caAloca¸˜o e desaloca¸˜o de objetos ca ca A aloca¸˜o deve ser apenas dinˆmica na heap (new), ou deve ca a permitir dinˆmica na pilha? a
  39. 39. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caAloca¸˜o e desaloca¸˜o de objetos ca ca A aloca¸˜o deve ser apenas dinˆmica na heap (new), ou deve ca a permitir dinˆmica na pilha? a Apenas dinˆmica na heap a M´todo uniforme de cria¸˜o e acesso por meio de ponteiros e ca ou vari´veis de referˆncia a e Simplifica opera¸˜es de atribui¸˜o co ca Permite desreferenciamento impl´ ıcito
  40. 40. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caAloca¸˜o e desaloca¸˜o de objetos ca ca A aloca¸˜o deve ser apenas dinˆmica na heap (new), ou deve ca a permitir dinˆmica na pilha? a Apenas dinˆmica na heap a M´todo uniforme de cria¸˜o e acesso por meio de ponteiros e ca ou vari´veis de referˆncia a e Simplifica opera¸˜es de atribui¸˜o co ca Permite desreferenciamento impl´ ıcito Com aloca¸˜o na pilha ca Dificulta atribui¸˜o de subtipos ca O espa¸o alocado na pilha para um tipo pode ser insuficiente c para um subtipo.
  41. 41. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caAloca¸˜o de objetos - Exemplos ca Smalltalk, Java e Ruby Aloca¸˜o na heap apenas ca Desreferenciamento impl´ ıcito
  42. 42. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caAloca¸˜o de objetos - Exemplos ca Smalltalk, Java e Ruby Aloca¸˜o na heap apenas ca Desreferenciamento impl´ ıcito C++ Permite aloca¸˜o na pilha ca Desrefenciamento expl´ ıcito
  43. 43. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caDesaloca¸˜o de objetos ca Desaloca¸˜o expl´ ca ıcita O programador deve se preocupar com a desaloca¸˜o ca (delete) Pode criar ponteiros / referˆncias pendurados e
  44. 44. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caDesaloca¸˜o de objetos ca Desaloca¸˜o expl´ ca ıcita O programador deve se preocupar com a desaloca¸˜o ca (delete) Pode criar ponteiros / referˆncias pendurados e Desaloca¸˜o impl´ ca ıcita Requer algum mecanismo para desalocar automaticamente
  45. 45. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caDesaloca¸˜o de objetos - Exemplos ca Smalltalk, Java e Ruby Desaloca¸˜o impl´ ca ıcita Coletor de lixo (garbage collector )
  46. 46. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caDesaloca¸˜o de objetos - Exemplos ca Smalltalk, Java e Ruby Desaloca¸˜o impl´ ca ıcita Coletor de lixo (garbage collector ) Java M´todo finalize(): permite destravar acesso a outros e recursos al´m da mem´ria quando coletor de lixo desaloca a e o mem´ria (Ex: arquivos em disco) o
  47. 47. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caDesaloca¸˜o de objetos - Exemplos ca Smalltalk, Java e Ruby Desaloca¸˜o impl´ ca ıcita Coletor de lixo (garbage collector ) Java M´todo finalize(): permite destravar acesso a outros e recursos al´m da mem´ria quando coletor de lixo desaloca a e o mem´ria (Ex: arquivos em disco) o C++ Desaloca¸˜o expl´ ca ıcita Permite defini¸˜o de destruidor ca Comando delete
  48. 48. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caClasses aninhadas Motiva¸˜o ca Oculta¸˜o de informa¸˜o ca ca Classe vis´ apenas dentro de outra classe ıvel
  49. 49. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caClasses aninhadas Motiva¸˜o ca Oculta¸˜o de informa¸˜o ca ca Classe vis´ apenas dentro de outra classe ıvel Quest˜es o Quais membros da classe externa s˜o vis´ a ıveis ` classe a aninhada? Quais membros da classe aninhada s˜o vis´ a ıveis ` classe a externa?
  50. 50. Suporte ` Programa¸˜o Orientada a Objetos a ca Quest˜es de projeto o Aloca¸˜o e desaloca¸˜o de objetos ca caClasses aninhadas - Exemplos Java Inner classes: classes aninhadas n˜o-est´ticas a a Classes aninhadas est´ticas a Classes anˆnimas o Classes aninhadas locais (dentro de um m´todo) e Tem acesso aos membros da classe externa e `s vari´veis locais a a declaradas com final Membros da classe aninhada vis´ ıveis apenas dentro do m´todo e
  51. 51. Suporte ` Programa¸˜o Orientada a Objetos a ca Implementa¸˜o de Contru¸oes Orientadas a Objeto ca c˜Implementa¸˜o de Contru¸oes Orientadas a Objeto ca c˜ Estrutura dos dados Class instance record (CIR): similar aos registros (structs em C, record em Pascal, etc.) Constru´ em tempo de compila¸˜o ıda ca Subclasses: ´ a CIR da superclasse com as entradas para os e novos atributos anexadas ao final
  52. 52. Suporte ` Programa¸˜o Orientada a Objetos a ca Implementa¸˜o de Contru¸oes Orientadas a Objeto ca c˜Implementa¸˜o de Contru¸oes Orientadas a Objeto ca c˜
  53. 53. Suporte ` Programa¸˜o Orientada a Objetos a ca Implementa¸˜o de Contru¸oes Orientadas a Objeto ca c˜Tarefas 1 Considere as linguagens apresentadas como exemplo (Smalltalk, Java, C++ e Ruby). Enumere os pr´s e contras o de cada linguagem. Tome em considera¸˜o a forma como as ca quest˜es de projeto s˜o implementadas. Considere tamb´m o a e quest˜es como desempenho, legibilidade e confiabilidade. o

×