Paradigmas de Linguagens de Programacao - Aula #6

1.963 visualizações

Publicada em

Paradigmas de Linguagens de Programacao
Aula #6
Prof. Ismar Frango

Publicada em: Educação, Tecnologia

Paradigmas de Linguagens de Programacao - Aula #6

  1. 1. Paradigmas de Linguagens de Programação Paradigma Orientado a Objetos Aula #6 (CopyLeft)2009 - Ismar Frango ismar@mackenzie.br
  2. 2. Paradigma Orientado a Objetos try { web.throw( );} catch (RunOutOfWebFluidException e) { e.sendMessage(UncleMay.getInstance()); this.fall(); System.exit(-1); }
  3. 3. <ul><li>Simula I (1962-65) e Simula 67 (1967) foram as duas primeiras linguagens a implementarem boa parte dos conceitos que viriam a ser conhecidos posteriormente como Orientação a Objetos (objetos, classes, subclasses, late binding). (Norwegian Computing Center, Oslo, Noruega - Ole-Johan Dahl e Kristen Nygaard </li></ul>Origens The best way to predict the future is to invent it. Alan Kay
  4. 4. <ul><li>Alan Kay, Adele Goldberg e colegas na Xerox PARC estenderam as idéias de Simula com Smalltalk (1970’s) </li></ul><ul><ul><li>Kay cunha o termo ”orientação a objetos” </li></ul></ul><ul><ul><li>Smalltalk é a primeira linguagem totalmente orientada a objetos . </li></ul></ul>Origens
  5. 6. O.O - Fundamentos http://whysmalltalk.com/
  6. 7. O.O - Fundamentos http://whysmalltalk.com/
  7. 8. O.O - Fundamentos http://whysmalltalk.com/
  8. 9. O.O - Fundamentos http://whysmalltalk.com/
  9. 10. O.O - Fundamentos http://whysmalltalk.com/
  10. 11. O.O - Fundamentos http://whysmalltalk.com/
  11. 12. Categorias de polimorfismo Cardelli e Wegner Πολλοί + μορφή
  12. 13. Polimorfismo Universal Paramétrico Uma função ou uma classe que siga o polimorfismo universal paramétrico tem um parâmetro de tipo (implícito ou explícito), que determina o tipo de argumento para cada aplicação dessa função/classe. Inclusão Um objeto pode ser visto como pertencendo a diferentes classes que não precisam ser disjuntas List < > Animal
  13. 14. Polimorfismo ad-hoc Um mesmo nome é utilizado para designar diferentes funções e o contexto é usado para decidir qual função é denotada por uma instância específica do nome. Sobrecarga Coerção Operação semântica que é necessária para converter um argumento para um tipo esperado por uma função, em uma situação que de outra forma resultaria em um erro de tipo. fugirDe( ) fugirDe( ) + = = ?
  14. 15. Sobrecarga ou coerção? 3 + 4 3.0 + 4 3 + 4.0 3.0 + 4.0 <ul><li>O operador + tem quatro significados sobrecarregados, uma para cada uma das quatro combinações de tipos de argumentos. </li></ul><ul><li>O operador + tem dois significados sobrecarregados, correspondentes à adição de inteiros e reais. Quando um dos argumentos é do tipo inteiro e o outro é do tipo real, então o argumento inteiro é convertido para o tipo real. </li></ul><ul><li>O operador + é definido apenas para adições reais, e os argumentos inteiros são sempre convertidos em reais. </li></ul>

×