Upload
internet
View
104
Download
0
Tags:
Embed Size (px)
Citation preview
1
MAC 413/5715 – SeminárioProf. Fabio Kon
Self: The Power of SimplicityDavid Ungar and Randall B. Smith
OOPSLA 1987
Cristina Fang Eduardo Miyoshi Kasa
2
MAC 413/5715 – SeminárioProf. Fabio Kon
O problema
3
MAC 413/5715 – SeminárioProf. Fabio Kon
4
MAC 413/5715 – SeminárioProf. Fabio Kon
5
Self: The Power of Simplicit
A solução?
6
Self: The Power of Simplicit
Self
7
Self: The Power of Simplicity
● Linguagem Orientada a Objetos Tudo é objeto (herdado de Smalltalk)
● Idéias utilizadas no desenho: Protótipos Slots Comportamento
8
Self: The Power of Simplicity
● Protótipos: Objetos base que serão clonados Não utiliza classes Mais simples e flexível do que a maioria das
linguagens orientada a objetos
9
Self: The Power of Simplicity
● Slots Protótipos contêm Slots Slots podem conter qualquer coisa (objetos,
procedures ou closures)
● Comportamento Não existe diferença entre comportamento e
estado.
10
Self: The Power of Simplicity
11
Self: The Power of Simplicity
Protótipos vs. Classes
12
Self: The Power of Simplicity
Desvantagens de Linguagens OO baseada em classes:
- É necessário criar uma nova classe para criarmos um novo tipo de objeto
- Para alterar a estrutura do objeto precisamos alterar a classe.
13
Self: The Power of Simplicity
Self combina herança, protótipos e objetos para eliminar a necessidade de
classes
14
Self: The Power of Simplicity
• Classes– Contém comportamento– Herda de outra classe– Pode ser instanciada
• Objetos– Contém estado– São instâncias de Classes
• Protótipos– Contém comportamento– Delega a outros objetos– Pode ser clonado– Contém estados
15
Self: The Power of Simplicity
16
Self: The Power of Simplicity
Simples
17
Self: The Power of Simplicity
● Relações simples "is a" e "kind of" são substituídos por
"inherits from" Fica mais fácil de entender a linguagem e
criar hierarquia de herança● Criação por cópia
Criar novos objetos é fácil: basta clonar
18
Self: The Power of Simplicity
● Exemplos de módulos já existentes Protótipos são mais concretos que classes Exemplos (protótipos) são mais fáceis de
entender do que descrições (classes)
● Objetos únicos (one-of-a-kind) Objetos do tipo Singleton são mais fáceis de
se criar, pois cada objeto tem suas próprias características
19
Self: The Power of Simplicity
● Meta-regressão Baseada em classes
● Nenhum objeto é auto-suficiente● Classes são necessárias para expressar sua
estrutura e comportamento
Baseada em protótipos● O objeto pode incluir o seu próprio
comportamento● Não tem meta-regressão
20
Self: The Power of Simplicity
● Princípios no desenho de Self Messages-at-the-bottom Occam's Razor Concreto
21
Self: The Power of Simplicity
● Messages-at-the-bottom Mensagens são a operação fundamental da
linguagem Acessos são feitos através de mensagens Não existem variáveis, apenas objetos que se
devolvem
22
Self: The Power of Simplicity
● Occam's razor Self omite Classes e Variáveis Não existe diferença entre acessar variáveis ou
enviar uma mensagem.
● Concreto Os elementos são o mais concreto possível Para um objeto ser criado, ele é clonado Qualquer objeto pode ser clonado
23
Self: The Power of Simplicity
Poderoso
24
Self: The Power of Simplicity
● Herança dinâmica● Objetos Singleton● Adicionar/remover métodos em tempo de
execução● Compartilha estados entre objetos● Herança múltipla
25
Self: The Power of Simplicity
Conclusão:
- Novo paradigma para linguagens OO
- Simplicidade por não precisar de classes e variáveis (eliminando meta-regressão)
- Em Self é possível criar estruturas com Classes e variáveis através de protótipos.
26
Self: The Power of Simplicity
http://research.sun.com/self/
27
Self: The Power of Simplicity
Dúvidas?