Artur Lira Diego Lemos Lucas Figueiredo Thiago Rocha Smalltalk Artur Lira Diego Lemos Lucas Figueiredo Thiago Rocha
Introdução Surgiu em meados da década de 70 Visava atingir grande número de pessoas de faixas etárias distintas Orientada a objetos Fracamente tipada Simples implementação Não há tipos primitivos
História Começou a ser desenvolvida no final dos anos 60 por um grupo de pesquisa da Xerox Várias evoluções: - Smalltalk-71 ( parecido com o Logo) - Smalltalk-72 (adicionadas funcionalidades multimídia) - Smalltalk-76 (versão mais robusta) - Smalltalk-80 (estável) - Squeak(pra crianças); Strongtalk(Sun); GNU Smalltalk(Script);
História Smalltalk-80 Voltado para o mercado ( HP,IBM, Apple) Programas rodam sobre uma Máquina Virtual Tornou-se padrão para as diversas versões do Smalltalk
Paradigma de Programação Paradigma Orientado a Objetos Classes definem os objetos Comportamento (definido nos métodos) Estados Possíveis(atributos) Instâncias (objetos) Envio de mensagens a objetos Objetos responderão a mensagens conhecidas por ele Fim de programa todas as mensagens enviadas foram respondidas
Utilização Simulação de modelos de sistemas Automação de escritórios Animação Gráfica Informática Educativa Instrumentos Musicais Virtuais Editores de Texto Bancos de Dados Genéricos
Sintaxe Literais Variáveis Atribuições Mensagens Expressões
Sintaxe: Literais 42 -42 123.45 1.2345e2 2r10010010 16rA000 36rSMALLTALK = 80738163270632
Sintaxe: Literais Caracteres: $A Strings: ‘Hello, world!’ Symbols: #foo Array de Symbols: #(1 2 3 4) Blocos: [... Escopo ...]
Sintaxe: Variáveis Variáveis temporárias: No topo dos métodos Escritas entre barras verticais Uma ou mais variáveis por espaço. | indice | | indice vogais |
Sintaxe: Atribuições Operador := vogais := 'aeiou‘ A string ‘aeiou’ é criada na etapa de compilação e armazenada na variável vogais.
Sintaxe: Mensagens Receiver Selector Arguments receptor := 42 fatorial 2 raisedTo: 4 'hello world' indexOf: $o startingAt: 6 3 + 4
Sintaxe: Expresões 3 fatorial + 4 fatorial between: 10 and: 100 3 recebe a mensagem "fatorial" e retorna 6 4 recebe a mensagem "fatorial" e retorna 24 6 recebe a mensagem "+" e 24 como argumento e por fim retorna 30 30 recebe a mensagem "between:and:" com 10 e 100 como argumentos e retorna true. 3 fatorial fatorial log 3 + 4 * 5 = (3 + 4) * 5 ...?
Sintaxe: Expresões | window | window := Window new. window label: 'Hello'. window open.
Estruturas de Controle Seleção condicional C++: if((numero % 2) == 0) paridade = 1; else paridade = 0; paridade = ((numero % 2) == 0))?1:0; Smalltalk: (numero \\ 2) = 0 ifTrue: [ paridade :=1 ] ifFalse: [ paridade := 0 ] paridade := numero \\ 2 = 0 ifTrue: [1] ifFalse: [0]
Estruturas de Controle Repetição C++: for(int i = 0; i < 3; i++) n *= n; Smalltalk: 3 timesRepeat: [n := n * n]
Estruturas de Controle Repetição C++: int i = 0; while(i < tamanhoArray){ array[i++] = 0; } Smalltalk: i := 1. [i <= array size] whileTrue: [ array at: i put: 0. i := i + 1 ]
Métodos Definição de método publico publish Transcript show: 'Hello, World!' Objeto recebe mensagem método com nome da mensagem é invocado Objetos determinam em tempo de execução qual método a ser executado
Implementação Modificações em tempo de execução(interpretada) Utilização de classes já existentes, na própria linguagem(reuso) Tudo é modificável
Vantagens Puramente orientada a objetos Polimorfismo e binding dinâmico Flexibilidade Reutilização Dados abstratos e encapsulamento Modificabilidade Confiabilidade Herança Facilmente extensível
Desvantagens Não possui ordem de precedência para operações binárias Devido a “fraca tipagem” pode ocorrer erros em tempo de execução, já que existe o risco de um objeto não entender uma mensagem
Referências [1] SHARP, A. Smalltalk by Example: the Developer’s Guide. McGraw Hill Text, 1997. Disponível em: http://www.iam.unibe.ch/~ducasse/FreeBooks/ByExample/ . Acesso em: 26 mai 2007. [2] Smalltalk: site oficial. Disponível em: http://www.smalltalk.org/. Acesso em: 26 mai 2007. [3] Wikipedia Smalltalk. Disponível em: http://en.wikipedia.org/wiki/Smalltalk. Acesso em: 23 mai 2007. [4] Vista Smalltalk. Disponivel em: http://vistascript.net/vistascript/docuwiki/doku.php. Acesso em: 26 mai 2007.
Dúvidas?