1 / 23

Smalltalk

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.

aden
Download Presentation

Smalltalk

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Smalltalk Artur Lira Diego Lemos Lucas Figueiredo Thiago Rocha

  2. 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

  3. 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);

  4. 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

  5. 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

  6. 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

  7. Sintaxe • Literais • Variáveis • Atribuições • Mensagens • Expressões

  8. Sintaxe: Literais 42 -42 123.45 1.2345e2 2r10010010 16rA000 36rSMALLTALK = 80738163270632

  9. Sintaxe: Literais • Caracteres: $A • Strings: ‘Hello, world!’ • Symbols: #foo • Array de Symbols: #(1 2 3 4) • Blocos: [... Escopo ...]

  10. 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 |

  11. Sintaxe: Atribuições • Operador := • vogais := 'aeiou‘ A string ‘aeiou’ é criada na etapa de compilação e armazenada na variável vogais.

  12. Sintaxe: Mensagens • Receiver • Selector • Arguments • receptor := 42 fatorial • 2 raisedTo: 4 • 'hello world' indexOf: $o startingAt: 6 • 3 + 4

  13. 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 ...?

  14. Sintaxe: Expresões | window | window := Window new. window label: 'Hello'. window open.

  15. 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]

  16. Estruturas de Controle • Repetição • C++: for(int i = 0; i < 3; i++) n *= n; • Smalltalk: 3 timesRepeat: [n := n * n]

  17. 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 ]

  18. 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

  19. Implementação • Modificações em tempo de execução(interpretada) • Utilização de classes já existentes, na própria linguagem(reuso) • Tudo é modificável

  20. Vantagens • Puramente orientada a objetos • Polimorfismo e binding dinâmico • Flexibilidade • Reutilização • Dados abstratos e encapsulamento • Modificabilidade • Confiabilidade • Herança • Facilmente extensível

  21. 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

  22. 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.

  23. Dúvidas?

More Related