Smalltalk. Grupo 8 Diogo Krejci Frederico Argolo Vitor Macedo. História. Criada por Alan Kay da Xerox - Palo Alto no início dos anos 70. Apresenta um ambiente de programação com menus pop-up, windows e mouse (modelo para Apple Macintosh). História.
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
História • Criada por Alan Kay da Xerox - Palo Alto no início dos anos 70. Apresenta um ambiente de programação com menus pop-up, windows e mouse (modelo para Apple Macintosh).
História • Alan Kay criou Smalltalk na tentativa de desenvolver uma linguagem na qual as crianças pudessem programar
História • SmallTalk foi baseada na linguagem Silmula (1966), a qual introduziu o conceito de objeto
História • Mas foi em Smalltalk que os objetos deixam de ser • meros "dados" manipulados por "programas" • E passam a ser: • "processadores idealizados" individuais e independentes, aos quais podem ser transmitidos comandos em forma de "mensagens".
Versão Escolhida • Cincom's VisualWorks Smalltalk • Razões: • Site do fabricante com muitas informações • Possibilidade de baixar uma versão não comercial • Bibliografia baseada nessa versão
Versões • Quais são as diferenças entre as versões existentes?
Diferenças • A Xerox, criou a ParcPlace Systems para comercializar Smalltalk-80 • Cada fabricante tem nesta versão uma base para desenvolver as suas próprias versões
Diferenças • Não ficam especificados: • Detalhes de implementação • Possíveis extensões • “Sintaxe”
Diferenças - Exemplos • Uma operação de potência no VisualWorks: • 3**2 • Nas demais versões: • 3e2
Diferenças - Exemplos • O VisualWorks não aceita que números em ponto flutuante sejam definidos em uma base que não seja a decimal • Tal restrição não existe nas demais versões
Características de Smalltalk • Compatilibildade: • Solaris SPARC • HPUX HPPA • IRIX MIPS • AIX RS6000 • Compaq Unix AXP • Linux Intel, Windows Intel, MacOS 9
Compatibilidade • Cada versão já incorpora centenas de métodos que juntos formam a: • Imagem Virtual (Virtual Image)
Compatibilidade • Por questões de performance existem implementações específicas para cada máquina • Operações aritméticas • Entrada e Saída • Em conjunto formam a Máquina Virtual
Compatibilidade • Em Eiffel para se desenvolver implementações portáveis deve-se usar: • EiffelVision • EiffelVision2
Compatibilidade • Para se desenvolver implementações específicas, e usar os recursos de janelas particulares de cada sistema deve-se usar: • WEL (Windows Eiffel Library) • Unix, Linux e VMS (GTK Eiffel Library)
Tipos • Smalltalk tem somente um tipo • objeto • Tudo no sistema são objetos • Portanto variáveis são referencias para objetos
Tipos • Eiffel apresenta tipificação estática. • O compilador restringe as possíveis atribuições a uma variável • Vantagens • Segura • Eficiente • Desvantagem • Menos flexível
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
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.
Self e Super • Self retorna a referência para o objeto que recebe essa mensagem • O seu equivalente em Eiffel é current
Self e Super • 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.
Colisão de Nomes devido à herança • Em Eiffel, no caso geral, a colisão de nomes obriga que se utilize uma cláusula especial de renomeação (rename) para mudar pelo menos um dos designadores do atributo ou operação em colisão. • Em Smalltalk esse problema não ocorre porque a herança múltipla não é suportada.
Polimorfismo de Operação • Em Smalltalk e Eiffel a implementação de uma operação pode ser alterada nos descendentes. • Porém em Eiffel existe a possibilidade adicional de mudar o nome a um membro herdado (operação ou atributo), ou mesmo cancelá-lo.
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.
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
Métodos de Classe • Em Smalltalk pode-se definir métodos de classe • Eiffel não tem suporte a esse tipo de recurso
Mensagens • Não existem operadores em Smalltalk • Todos os objetos são ativados por meio de mensagens • Toda mensagem retorna algum objeto
Tipos de Mensagens • Existem 3 tipos de mensagens: • Unárias • Não têm parâmetros • Exemplo • 345 sin • ‘abcd’ size
Tipos de Mensagens • Binárias • Recebem apenas um parâmetro • Exemplos: • 3+2 • X>= 2
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
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
Resultado • Portanto 1+2*3 = 9 em Smalltalk • Para gerar o resultado normalmente esperado devemos usar: 1+(2*3)
Regras de Precedência em Eiffel • Operadores Especiais. (O ponto (“.”) na chamada de expressões) • Operadores Unários • old strip not • Operadores Binários • ^* / // \\+ • Operadores Relacionais • = /= < > <= >= • Operadores Logicos • and nor or
Controle de Erro (Eiffel) • Em Eiffel sempre que existe um contrato e este é quebrado, uma exceção é gerada. Esta pode ser originada basicamente devido a duas razões: • 1- violação das asserções, caso estas estejam sendo monitoradas. • 2– Devido um sinal de hardware alertando sobre alguma operação ilegal.
Controle de Erro (Eiffel) • Uma rotina pode tratar uma exceção através de sua cláusula rescue. Podendo terminar em: • retry o que faz com que rotina seja a executada desde o início. • Ou não apresentar o retry no final, com isso o método retorna para o quem o invocou.
Controle de Erro (Smalltalk) • Smalltalk apresenta um sistema de controle de erro similar ao existente em Eiffel
Controle de Erro (Smalltalk) • Seqüência de acontecimentos: • Gera-se uma exceção • Repassada sucessivamente a cada um dos objetos • Caso nenhum objeto esteja preparado para lidar com a exceção uma mensagem noHandlerSignal é enviada ao objeto Object • Caso esta exceção não seja tratada o EmergencyHandler é invocado