Paradigmas de Linguagens de Programacao- Aula #8

9
Paradigmas de Linguagens de Programação Paradigma Orientado a Objetos Aula #8 (CopyLeft)2010 - Ismar Frango [email protected]

description

Paradigmas de Linguagens de Programacao Aula #8 - Prof. Ismar Frango

Transcript of Paradigmas de Linguagens de Programacao- Aula #8

Page 1: Paradigmas de Linguagens de Programacao- Aula #8

Paradigmas de Linguagens de Programação

Paradigma Orientado a ObjetosAula #8

(CopyLeft)2010 - Ismar Frango [email protected]

Page 2: Paradigmas de Linguagens de Programacao- Aula #8

(More) Small talk ‘bout polymorphism...

PUI

Um objeto pode ser visto como pertencendo a diferentes classes que não precisam ser disjuntas

Animal

Polimorfismo Universal por Inclusão

Consequências: necessidade de herança, possibilidade de sobreposição, late binding...

Page 3: Paradigmas de Linguagens de Programacao- Aula #8

Vtables

http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/

Page 4: Paradigmas de Linguagens de Programacao- Aula #8

Vtables (cont.)

cClass obj (D1)

__vptr

pClass ptr (Base)

Page 5: Paradigmas de Linguagens de Programacao- Aula #8

“People think of security as a noun, something you go buy. In reality, it's an abstract concept like happiness. Openness is unbelievably helpful to security.”

James Gosling

Polimorfismo Universal Paramétrico

P.U.P.

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.

List < >

Page 6: Paradigmas de Linguagens de Programacao- Aula #8

C++: template function members

Definição da template pelo programador

Chamada de função

Instanciação de função pelo pré-processador

Algo que, neste caso, uma macro faria

Page 7: Paradigmas de Linguagens de Programacao- Aula #8

Java: Template methods

?

?

Page 8: Paradigmas de Linguagens de Programacao- Aula #8

Java: Generics e autoboxing

?

Page 9: Paradigmas de Linguagens de Programacao- Aula #8

Java: Generics & Type Erasure

?

?