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