Paradigmas de Linguagens de Programação Paradigma Orientado a Objetos Aula #6 (CopyLeft)2009 - Ismar Frango ismar@mackenzie.br
Paradigma Orientado a Objetos try { web.throw( );} catch  (RunOutOfWebFluidException e) { e.sendMessage(UncleMay.getInstance()); this.fall();  System.exit(-1); }
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  Origens The best way to predict the future is to invent it. Alan Kay
Alan Kay, Adele Goldberg e colegas na Xerox PARC estenderam as idéias de Simula com  Smalltalk  (1970’s) Kay cunha o termo ”orientação a objetos” Smalltalk é a primeira linguagem totalmente orientada a objetos . Origens
 
O.O - Fundamentos http://whysmalltalk.com/
O.O - Fundamentos http://whysmalltalk.com/
O.O - Fundamentos http://whysmalltalk.com/
O.O - Fundamentos http://whysmalltalk.com/
O.O - Fundamentos http://whysmalltalk.com/
O.O - Fundamentos http://whysmalltalk.com/
Categorias de polimorfismo Cardelli e Wegner Πολλοί  +  μορφή
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
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(  ) + = = ?
Sobrecarga ou coerção? 3 + 4 3.0 + 4 3 + 4.0 3.0 + 4.0 O operador + tem quatro significados sobrecarregados, uma para cada uma das quatro combinações de tipos de argumentos. 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.  O operador + é definido apenas para adições reais, e os argumentos inteiros são sempre convertidos em reais.

Paradigmas de Linguagens de Programacao - Aula #6

  • 1.
    Paradigmas de Linguagensde Programação Paradigma Orientado a Objetos Aula #6 (CopyLeft)2009 - Ismar Frango ismar@mackenzie.br
  • 2.
    Paradigma Orientado aObjetos try { web.throw( );} catch (RunOutOfWebFluidException e) { e.sendMessage(UncleMay.getInstance()); this.fall(); System.exit(-1); }
  • 3.
    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 Origens The best way to predict the future is to invent it. Alan Kay
  • 4.
    Alan Kay, AdeleGoldberg e colegas na Xerox PARC estenderam as idéias de Simula com Smalltalk (1970’s) Kay cunha o termo ”orientação a objetos” Smalltalk é a primeira linguagem totalmente orientada a objetos . Origens
  • 5.
  • 6.
    O.O - Fundamentoshttp://whysmalltalk.com/
  • 7.
    O.O - Fundamentoshttp://whysmalltalk.com/
  • 8.
    O.O - Fundamentoshttp://whysmalltalk.com/
  • 9.
    O.O - Fundamentoshttp://whysmalltalk.com/
  • 10.
    O.O - Fundamentoshttp://whysmalltalk.com/
  • 11.
    O.O - Fundamentoshttp://whysmalltalk.com/
  • 12.
    Categorias de polimorfismoCardelli e Wegner Πολλοί + μορφή
  • 13.
    Polimorfismo Universal ParamétricoUma 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
  • 14.
    Polimorfismo ad-hoc Ummesmo 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( ) + = = ?
  • 15.
    Sobrecarga ou coerção?3 + 4 3.0 + 4 3 + 4.0 3.0 + 4.0 O operador + tem quatro significados sobrecarregados, uma para cada uma das quatro combinações de tipos de argumentos. 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. O operador + é definido apenas para adições reais, e os argumentos inteiros são sempre convertidos em reais.