paradigmas de linguagens de programacao - aula #6
DESCRIPTION
Paradigmas de Linguagens de Programacao Aula #6 Prof. Ismar FrangoTRANSCRIPT
Paradigmas de Linguagens de Programação
Paradigma Orientado a ObjetosAula #6
(CopyLeft)2009 - Ismar Frango [email protected]
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.