Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouMárcio Barroso Fartaria Alterado mais de 8 anos atrás
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 pelo 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
4
História Smalltalk-80 Voltado para o mercado ( HP,IBM, Apple) Programas rodavam 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 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 Virtuais Editores de Texto Bancos de Dados Genéricos
7
Sintaxe Literais Variáveis Atribuições Mensagens Expressões Blocos de Código
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: [... Some smalltalk code...]
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. | index | | index vowels |
11
Sintaxe: Atribuições Operador := vowels := 'aeiou‘ A string ‘aeiou’ é criada na etapa de compilação e armazenada na variável vowels.
12
Sintaxe: Mensagens Receiver Selector Arguments aRatherBigNumber := 42 factorial 2 raisedTo: 4 'hello world' indexOf: $o startingAt: 6 3 + 4
13
Sintaxe: Expresões 3 factorial + 4 factorial between: 10 and: 100 1. 3 recebe a mensagem "factorial" e retorna 6 2. 4 recebe a mensagem "factorial" e retorna 24 3. 6 recebe a mensagem "+" e 24 como argumento e por fim retorna 30 4. 30 recebe a mensagem "between:and:" com 10 e 100 como argumentos e retorna true. 3 factorial factorial log 3 + 4 * 5 = (3 + 4) * 5...?
14
Sintaxe: Expresões | window | window := Window new. window label: 'Hello'. window open.
15
Sintaxe: Blocos de Código [ :params | ] [:x | x + 1] Matematicamente: f(x) = x + 1
16
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]
17
Estruturas de Controle Repetição C++: for(int i = 0; i < 3; i++) n *= n; Smalltalk: 3 timesRepeat: [n := n * n]
18
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 ]
19
Classes Definição de classe: Object subclass: #MessagePublisher instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Smalltalk Examples‘ Objetos de primeira ordem Recebem mensagens
20
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
21
Instanciando Classes New -> retorna uma instância da classe MessagePublisher new Retorno atribuido a uma variável publisher := MessagePublisher new
22
Implementação Inexistência de código fonte Utilização de objetos já existentes, na própria linguagem Tudo é modificável
23
Ambiente de desenvolvimento Smalltalk não é padronizado, existindo varias versões com pequenas diferenças de sintaxe. Express Smalltalk/X GNU Smalltalk
24
Vantagens Puramente orientada a objetos Polimorfismo e binding dinâmico Flexibilidade Reutilização Dados abstratos e encapsulamento Modificabilidade Confiabilidade Herança Extensível
25
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, devido a um objeto não entender uma mensagem
26
Dúvidas?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.