230 likes | 417 Views
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.
E N D
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.