paradigmas de linguagens de programacao - aula #6

Post on 25-May-2015

1.633 Views

Category:

Education

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Paradigmas de Linguagens de Programação

Paradigma Orientado a ObjetosAula #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

- F

unda

men

tos

http://whysm

alltalk.com/

O.O

- F

unda

men

tos

http://whysm

alltalk.com/

O.O

- F

unda

men

tos

http://whysm

alltalk.com/

O.O

- F

unda

men

tos

http://whysm

alltalk.com/

O.O

- F

unda

men

tos

http://whysm

alltalk.com/

O.O

- F

unda

men

tos

http://whysm

alltalk.com/

Categorias de polimorfismo

Cardelli e Wegner

Πολλοί + μορφή

Polimorfismo UniversalParamé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çãoOperaçã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 + 43.0 + 43 + 4.03.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.

top related