Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouGiulia Montalto Alterado mais de 9 anos atrás
1
SmallTalk Caio Cezar Rodrigues Quirino - 63182 Daniel Mário Adamis - 66373 Fabio Venicius Oliveira - 55934 Rafael Barbosa Januzi - 55951 Roger Wellington dos Santos - 63608 Vinicius Fonseca Melo - 59985
2
SmallTalk – História Smalltalk foi desenvolvido no inicio dos anos 70, na PARC (Palo Alto Research Center), um centro de pesquisas da XEROX na Califórnia. As principais idéias do Smalltalk são creditadas a Alan Kay, muitas delas baseadas no Simula, LISP e SketchPad.
3
Uma Segunda versão do Smalltalk (Smalltalk/V) foi desenvolvida pela Digitalk em Los Angeles, Califórnia, com fundadores da Ollivetti. A IBM desenvolveu o VisualAge Smalltalk em colaboração com a Object Technology International Inc. Atualmente, ObjectShare e a IBM continuam sendo os principais distribuidores do ambiente de desenvolvimento Smalltalk. SmallTalk – História
4
Introdução O Smalltalk é uma linguagem Object-Oriented (pura) ; Os objetos são instâncias de determinada classe; As mensagens a que um objecto é capaz de responder são especificadas na classe a que ele pertence; Os métodos de uma classe definem a forma como os objectos dessa classe respondem às mensagens; O programador trabalha para encontrar uma sequência de mensagens entre objetos que forneça a solução desejada;
5
Regras básicas da linguagem Tudo é representado como objetos. (De longe, a regra mais importante em Smalltalk). Toda computação é disparada pelo envio de mensagens. Quase todas as expressões são da forma. Mensagens fazem com que métodos sejam executados. Os métodos são as unidades de código em Smalltalk, equivalente a funções ou procedimentos em outras linguagens.
6
Regras básicas da linguagem Todo objeto é uma instância de alguma classe. 12 é uma instância da classe SmallInteger. 'abc' é uma instância da classe String. A classe determina o comportamento e os dados de suas instâncias. Toda classe tem uma classe mãe, exceto a classe Object. A classe mãe define os dados e comportamento que são herdados por suas classes filhas.
7
Paradigma Linguagem de programação orientada a objeto. Fracamente tipada. Linguagens fracamente tipadas ou Dinamicamente tipadas são aquelas em que durante a execução do programa uma variável pode conter objetos de qualquer tipo, e durante seu ciclo de vida podem referenciar objetos de diversos tipos. Permitem que o programador não tenha de fazer conversões de tipos (cast).
8
Instrução Uma instrução é composta por uma ou mais expressões. Uma expressão válida pode ser: Uma variável; Um literal; O envio de uma mensagem; bloco de instruções (Ex: [x:=5. y:=3*x] ) As instruções são separadas por “.”
9
Variáveis As variáveis não contêm os objetos mas sim os seus identificadores (referenciam os objetos). Em Smalltalk nil é um objecto que significa “nada” e é a única instância da classe UndefinedObject. Inicialmente todas as variáveis referem o objecto nil. Durante o seu tempo de vida as variáveis podem referir objetos distintos, incluindo nil. Todas as classes (tipos) derivam de Object.
10
Literais São suportados literais para os seguintes tipos: Character Ex: $c String Ex: ‘Isto é uma string’ Number Integer Ex: 19 Fraction Ex: 2/5 Float Ex: 134.62 Array Ex: #(1 ‘dois’ $3) Symbol Ex: #ClasseXpto
11
Mensagens Não existem operadores em Smalltalk Todos os objetos são ativados por meio de mensagens Toda mensagem retorna algum objeto
12
Tipos de Mensagens Existem 3 tipos de mensagens: Unárias Não têm parâmetros Exemplo 345 sin ‘abcd’ size
13
Tipos de Mensagens Binárias Recebem apenas um parâmetro Exemplos: 3+2 X>= 2
14
Tipos de Mensagens Palavras Chave são mensagens com um ou mais argumentos nas quais o seletor é composto por uma sequência de uma ou mais palavras-chave, cada uma delas terminando com o caracter ":“ Exemplos: 'vitor' copyFrom:2 to:5 O resultado é itor
15
Precedência de Mensagens A avaliação é feita da esquerda para a direita Mensagens unárias Mensagens binárias Mensagens com palavras chave Pode-se alterar a precedência usando parênteses
16
Mensagens Uma mensagem consiste do nome do objeto que a recebe seguido do nome da mensagem; Ex: Ex: alpha sin “enviar a alpha a mensagem sin” Existem três tipos de mensagens: Unárias - Correspondem a métodos sem argumentos; Keyword - Correspondem a métodos com um ou mais argumentos; Binárias - São usadas para operações de comparação, aritméticas e lógicas.
17
Exemplo Mensagens Mensagem unária obj msg“Mensagem ‘msg’ ao objecto ‘obj’ ” Mensagem Binária “Mensagem binária ‘+’ com o parâmetro ‘2’ ao inteiro ‘1’ ” 1 + 2 Mensagem Keyword “Mensagem keyword param1:param2: a ‘obj’ com os parâmetros ‘5’ e ‘6’ ” obj param1: 5 param2: 6
18
Mensagens Qual é o resultado da operação: 1+2*3
19
Resultado Portanto 1+2*3 = 9 em Smalltalk Para gerar o resultado normalmente esperado devemos usar: 1+(2*3)
20
Operações Aritméticas As operações aritméticas são suportadas através de mensagens binárias: Sintaxe: As operações são: + “soma” - “subtracção” * “multiplicação” / “divisão” // “divisão inteira” \\ “resto da divisão inteira”
21
Bloco de Instruções Um bloco contém zero ou mais expressões delimitadas por colchetes. Ex: [x:=5. y:=x*3] O resultado da avaliação de um bloco é o resultado da última expressão nele avaliada. Um bloco pode receber argumentos, separados por ‘|’ : Ex: [:aNumber | aNumber*aNumber]
22
Definição de Classes A criação de novo tipo é realizado através do envio de uma mensagem ao tipo base pretendido. Ex: Object subClass: #Account instanceVariableNames: ‘number balance’ classVariableNames: ‘NextNumber’ poolDictionaries: ‘ ’ O exemplo envia uma mensagem keyword ao tipo Object e o resultado é a criação do tipo Account que deriva de Object e tem as variáveis de instância number e balance e a variável de tipo NextNumber.
23
Classes Em Smalltalk classes são objetos Uma metaclasse é uma instância da classe Metaclasse. Cada classe é uma instância de uma instância da Metaclasse.
24
Classes - Diagrama
25
Self e Super Self retorna a referência para o objeto que recebe essa mensagem Super não se refere na verdade a superclasse do objeto que está recebendo essa mensagem, mas se refere ao objeto que definiu o código que está sendo executado.
26
Self e Super
27
Visibilidade de Médotos Em Smalltalk não existe o conceito de métodos públicos e privados, todos os métodos podem ser acessados por todos os objetos do sistema.
28
Visibilidade de Médotos Tentativa de simular esse comportamento: Acrescentar um prefixo “my” antes de todos os métodos que teriam que ser privados Nada impede porém que um programador chame esse método
29
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]
30
Estruturas de Controle Repetição C++: for(int i = 0; i < 3; i++) n *= n; Smalltalk: 3 timesRepeat: [n := n * n]
31
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 ]
32
Garbage Collector Assim como Eiffel, Smalltalk faz uso desse recurso Vantagens: O risco de vazamento de memória é extremamente reduzido O programador pode se concentrar no problema de aplicação Desvantagens: Perda de eficiência
33
Ambientes de Desenvolvimento No começo da década, todo compilador era baseado no pcc de Johnson; por volta de 1985 havia muitos produtores independentes de compiladores. Como até hoje Smalltalk não foi padronizada, existem pequenas diferenças de sintaxe para os diversos compiladores:
34
Express Ele inclui Smalltalk/V Win16 e WindowBuilder Pro/V. É conhecido pelo bom desempenho e utiliza pouco espaço em disco, além de ser gratuito. Possui uma simples, mas poderosa biblioteca de classe.
35
Smalltalk/X É uma implementação completa da linguagem de programação Smalltalk e ambiente de desenvolvimento, incluindo: ambiente de desenvolvimento gráfico com editores, browsers, compilador e interpretador byte code, um compilador Smalltalk para C, extensa biblioteca de classes e documentação on-line com muitos exemplos. Disponível apenas para Linux.
36
GNU Smalltalk É uma implementação gratuita (ou com código aberto) que se aproxima muito da linguagem Smalltalk-80. Existem versões para os sistemas Unix ou baseados em Unix (Linux, FreeBSD, etc) e sistemas comerciais como o Microsoft Windows.
37
Squeak É uma implementação com código aberto do Smalltalk-80, com a máquina virtual escrita totalmente em Smalltalk, tornando-o fácil as operações de debug, análise e mudança. Disponível para Windows e Linux.
38
Squeak Squeak é a continuação do projeto original do Smalltalk e tem contribuições de vários dos desenvolvedores originais dos anos 70, incluindo Alan Kay, Dan Ingalls, Ted Kaehler, etc. A comunidade de desenvolvedores e usuários squeak se estende por todo o mundo e abrange uma vasta gama de usos, incluindo: educação, desenvolvimento multimídia, desenvolvimento de web e etc.
39
Máquina Virtual - VM A máquina virtual (Virtual machine – VM) está escrita em Squeak. O truque consiste em uma utilização de um subconjunto da linguagem Smalltalk que pode ser traduzido para lingugem C e compilado para a plataforma necessária. Isso permite, entre outras coisas, um nível de portabilidade muito alta que converte a Squeak em um dos softwares mais portáveis encontrados. Todo o processo de depuração da VM pode ser feita no Squeak, isto facilita muito a investigação com arquiteturas de VM diferentes. A máquina virtual do Squeak é de 32 bits e pode ser encontrada também em 64 bits.
40
Squeak Nos próximos slides serão apresentadas algumas telas do Squeak :
44
Exemplo QuickSort Matriz Fatorial
52
Vantagens Puramente orientada a objetos Polimorfismo e binding dinâmico Flexibilidade Reutilização Dados abstratos e encapsulamento Modificabilidade Confiabilidade Herança Extensível
53
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
54
Conclusão Smalltalk é uma linguagem de programação completa e uma das mais puras linguagens orientadas a objeto existentes atualmente.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.