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

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

SmallTalk Caio Cezar Rodrigues Quirino - 63182 Daniel Mário Adamis - 66373 Fabio Venicius Oliveira - 55934 Rafael Barbosa Januzi - 55951 Roger Wellington.

Apresentações semelhantes


Apresentação em tema: "SmallTalk Caio Cezar Rodrigues Quirino - 63182 Daniel Mário Adamis - 66373 Fabio Venicius Oliveira - 55934 Rafael Barbosa Januzi - 55951 Roger Wellington."— Transcrição da apresentação:

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 :

41

42

43

44 Exemplo QuickSort Matriz Fatorial

45

46

47

48

49

50

51

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.


Carregar ppt "SmallTalk Caio Cezar Rodrigues Quirino - 63182 Daniel Mário Adamis - 66373 Fabio Venicius Oliveira - 55934 Rafael Barbosa Januzi - 55951 Roger Wellington."

Apresentações semelhantes


Anúncios Google