A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Smalltalk Artur Lira Diego Lemos Lucas Figueiredo Thiago Rocha.

Apresentações semelhantes


Apresentação em tema: "Smalltalk Artur Lira Diego Lemos Lucas Figueiredo Thiago Rocha."— Transcrição da apresentação:

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?


Carregar ppt "Smalltalk Artur Lira Diego Lemos Lucas Figueiredo Thiago Rocha."

Apresentações semelhantes


Anúncios Google