MAC 413/5715 – Seminário
Prof. Fabio Kon
Self: The Power of Simplicity
David Ungar and Randall B. Smith
OOPSLA 1987
Cristina Fang
Eduardo Miyoshi Kasa
1
MAC 413/5715 – Seminário
Prof. Fabio Kon
O problema
2
MAC 413/5715 – Seminário
Prof. Fabio Kon
3
MAC 413/5715 – Seminário
Prof. Fabio Kon
4
Self: The Power of Simplicit
A solução?
5
Self: The Power of Simplicit
Self 
6
Self: The Power of Simplicity
●
Linguagem Orientada a Objetos

●
Tudo é objeto (herdado de Smalltalk)
Idéias utilizadas no desenho:

Protótipos

Slots

Comportamento
7
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
8
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.
9
Self: The Power of Simplicity
10
Self: The Power of Simplicity
Protótipos vs. Classes
11
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.
12
Self: The Power of Simplicity
Self combina herança, protótipos e objetos
para eliminar a necessidade de classes
13
Self: The Power of Simplicity
• Classes
• Protótipos
– Contém comportamento
– Herda de outra classe
– Pode ser instanciada
• Objetos
– Contém estado
– São instâncias de Classes
14
–
–
–
–
Contém comportamento
Delega a outros objetos
Pode ser clonado
Contém estados
Self: The Power of Simplicity
15
Self: The Power of Simplicity
Simples
16
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
17
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
18
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
19
Self: The Power of Simplicity
●
Princípios no desenho de Self

Messages-at-the-bottom

Occam's Razor

Concreto
20
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
21
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
22
Self: The Power of Simplicity
Poderoso
23
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
24
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.
25
Self: The Power of Simplicity
http://research.sun.com/self/
26
Self: The Power of Simplicity
Dúvidas?
27
Download

A linguagem Self - IME-USP