Smalltalk Artur Lira Diego Lemos Lucas Figueiredo Thiago Rocha.
-
Upload
yuri-cantara -
Category
Documents
-
view
217 -
download
2
Transcript of Smalltalk Artur Lira Diego Lemos Lucas Figueiredo Thiago Rocha.
Smalltalk
Artur LiraDiego LemosLucas FigueiredoThiago 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 16rA00036rSMALLTALK = 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 decompilação e armazenada na variávelvogais.
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
1. 3 recebe a mensagem "fatorial" e retorna 62. 4 recebe a mensagem "fatorial" e retorna 243. 6 recebe a mensagem "+" e 24 como argumento e por
fim retorna 304. 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?