Smalltalk Grupo
• Anderson Bistafa 419980-4• Hugo Carlos 279453-5• Danilo Hideki Saito 339646-0• Paulo Mattos 391515-8• Paulo Rossi 280888-9• Robson Vilarouca 279530-2• Silas Lima Duarte 275870-9• Thiago Emilio 276470-9
História
Smalltalk começou a ser desenvolvido no final dos anos 60, pelo Alan Kay que era integrante do Learning Reserch Group da Xerox.
A linguagem é simples e ideal para iniciantes.
História
SmallTalk 71 SmallTalk 72 SmallTalk 76, adicionado funcionalidades
multimídia SmallTalk 80, desenvolvido pro mercado,
utilizado por diversas companhias (HP, Apple, IBM).
Xerox desenvolveu novas versões do Smalltalk, ObjectWorks e depois VisualWorks.
Domínios de Aplicação
Smalltalk é uma linguagem muito versátil e suporta todos os tipos de domínios. (Ex. Didático, Comercial, etc.)
Compilação
No Smalltalk pode mudar um método da "imagem" e todas as aplicações que usam esse método serão alteradas pois o que temos é uma espécie de máquina virtual que faz uma compilação do script "just in time". Cuidado então quando mudar uma Classe da sua imagem. Se preferência não faça isso: crie uma subClass.
É usual que o nome de uma Classe comece com maiúscula. Nomes de métodos começam com minúscula e podem ter maiúsculas no meio.
Se um parâmetro de um método é um string, é colocado entre apóstrofos
st Student new.
st name:'Carlos Silva'.
Versões
Versões existentes: Versões Open Source & Livres
- Visual Works e ObjectStudio- GsTools for VA 7.0- GsTools for VW5i- GsTools for VA 5.0, 4.0 e 3.0 and beyond- GsTools for Smalltalk Express- Squeak Emulation for VA 5.0
Versões Comerciais– Dolphin Smalltalk– Object Connect's Smalltalk MT – Cincom's VisualWorks Smalltalk
Interface Visual Works
Interface Visual Works
Aprendizado
Smalltalk é relativamente fácil de aprender comparada a linguagem como C++ e ADA. O código-fonte Smalltalk é fácil de ler, o que o torna a linguagem de programação mais simples e pratica. Pois o Smalltalk foi desenvolvido para que iniciantes pudessem programar.
Manuais A Grande maioria dos manuais são em inglês e dificilmente são
achados em português.
Os programadores vão descobrindo erros em SmallTalk em desenvolvimento de softwares. A linguagem Smalltalk é totalmente explicada, bem como a biblioteca de classes e do ambiente de programação.
Não existe manual de erro para Smalltalk ,mas geralmente em provas e teste ocorrem muitas pegadinhas.
Exemplo
Uma diz: 23. Object [] myObjects = { 24. new integer(12), 25. new String(?foo?), 26. new integer(5), 27. new Boolean(true)
Tipos de Dados Caracteres
Um caracter é uma letra individual do alfabeto. É representado por um símbolo alfanumérico precedido do sinal $: $D $+ $9 $x $%
Strings
Uma string é uma sequência de caracteres limitada por plicas: 'string de exemplo'
Símbolos
Um símbolo é um objecto que representa uma string usada para um nome em Smalltalk. O símbolo é único. É representado pelo sinal # e pode ser limitado por plicas, opcionalmente.
Arrays de literais
São rodeados por ( ) e precedidos do sinal #. Um array embutido noutro pode evitar o uso do sinal #: #(40 41 42)
Tipos de Expressões
Literais
O que descrevem objetos constantes (números, caracteres, strings, símbolos ou arrays).
Nomes de variáveis
Mensagens
O valor da expressão é determinado pelo método que irá ser invocado no objecto que vai receber a mensagem.
Blocos Muito usados para as estruturas de controlo.
Operadores Para comparações, usamos:
> "greater than"
< "less than"
= "igual em valor"
~= "não igual em valor"
>= "greater than ou igual“
<= "less than ou igual
Os sinais de operações aritméticas são:
+ "adição"
- "subtração"
* "multiplicação"
/ "divisão"
// "divisão com truncagem"
\\ "resto da divisão"
Entrada e saída de dados Entrada de dados:
Dialog request: 'Introduza um número'
Saída de dados:
Transcript show: ‘Texto a ser exibido’
Tipos
Smalltalk tem somente um tipo– objeto
Tudo no sistema são objetos
Portanto variáveis são referencias para objetos
Comandos condicionais
IfTrue: ifFalse É utilizada quando desejamos selecionar qual,entre
duas seqüência de expressões, será executada, dependendo de uma condição ser verdadeira ou falsa.
Sintaxe:
(numero \\ 2) = 0 ifTrue: [
paridade := 'par'
] ifFalse:[
paridade := 'impar'
]
Repetição simples - timesRepeat:
Para repetir um número determinado de vezes uma
sequência de expressões, onde o argumento é um bloco que contém a sequência de expressões a repetir.
Sintaxe:
3 timesRepeat: [n := n * n]
faz com que o valor de n seja elevado à quarta potência.
Comandos condicionais
WhileTrue: WhileFalse: Smalltalk implementa a repetição condicional de um bloco de
expressões através do envio da mensagem whileTrue: (ou whileFalse:) .
i := 1.
[i <= lista size] whileTrue: [
lista at: i put: 0.
i := i + 1
] A mensagem whileFalse: produz efeito inverso, fazendo com que as
expressões do bloco argumento sejam repetidas enquanto o valor do receptor for igual a false.
Linguagem
Na programação estruturada não se utiliza os comandos de desvio incondicional e Variantes
EX. (GOTO <label>)
A execução de um programa estruturado é feita sempre para adiante, sem desvios e sem retornos, pois a seqüência lógica das instruções coincide com a ordem física em que elas são escritas
Características de um programa estruturado:
Facilidade de manutenção
Fácil entendimento
Linguagem
Sobrecarga só existe em linguagens com herança múltipla.
Smalltalk é herança única
Declaração e Definição
Sub-RotinasAssim com o C# a linguagem Smalltalk não faz diferença entre métodos e subrotinas. Portanto usam-se as mesmas sintaxes para declarar os métodos e as subrotinas.
Abstrato de Dados
• Tipo composto por dados simples e agregados.
• Abstrai a implementação através de interface funcional e controle dos acessos
• Permite a separação entre interface e implementação
• Melhor a legibilidade dos tipos compostos.
Abstrato de Dados
Tipo de abstrato de dado para o ponto.
Class point {
Public:
Point(int a, in b){x=a; x=b; }//Inicializa as coordenadas de um novo ponto
Void move X (int a) {x+=a;}// Move o ponto horizontalmente
Void moveY (int+b) {y+=b;}//Move o ponto verticalmente
Void rest() {x=0; y=0;}//Move o ponto para a origem
Private;
Int x, y;
};
Escopos Permitidos
Variável – Identificador de zona de memória que contém ou referencia um objeto de determinado tipo.
Normalmente as variáveis têm o tempo de vida definido pelo seu escopo;
Exemplo:
Chamadas de funções dentro de funções;
Variáveis static .
O tempo de vida dos objetos pode ou não estar definido pelo escopo que o criou.
Exemplo de Programas
1º Programa
Exemplo de Programas
2º Programa
Exemplo de Programas
3º Programa
Conclusão
Smalltalk é uma linguagem de programação completa e uma das mais puras linguagens orientadas a objeto existentes atualmente.