Smalltalk Grupo Anderson Bistafa 419980-4 Hugo Carlos 279453-5 Danilo Hideki Saito 339646-0 Paulo...

28
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

Transcript of Smalltalk Grupo Anderson Bistafa 419980-4 Hugo Carlos 279453-5 Danilo Hideki Saito 339646-0 Paulo...

Page 1: 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.

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

Page 2: 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.

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.

Page 3: 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.

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.

Page 4: 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.

Domínios de Aplicação

Smalltalk é uma linguagem muito versátil e suporta todos os tipos de domínios. (Ex. Didático, Comercial, etc.)

Page 5: 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.

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'.

Page 6: 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.

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

Page 7: 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.

Interface Visual Works

Page 8: 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.

Interface Visual Works

Page 9: 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.

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.

Page 10: 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.

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)

Page 11: 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.

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)

Page 12: 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.

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.

Page 13: 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.

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"

Page 14: 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.

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’

Page 15: 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.

Tipos

Smalltalk tem somente um tipo– objeto

Tudo no sistema são objetos

Portanto variáveis são referencias para objetos

Page 16: 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.

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'

]

Page 17: 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.

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.

Page 18: 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.

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.

Page 19: 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.

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

Page 20: 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.

Linguagem

Sobrecarga só existe em linguagens com herança múltipla.

Smalltalk é herança única

Page 21: 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.

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.

Page 22: 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.

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.

Page 23: 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.

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;

};

Page 24: 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.

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.

Page 25: 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.

Exemplo de Programas

1º Programa 

Page 26: 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.

Exemplo de Programas

2º Programa 

Page 27: 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.

Exemplo de Programas

3º Programa 

Page 28: 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.

Conclusão

Smalltalk é uma linguagem de programação completa e uma das mais puras linguagens orientadas a objeto existentes atualmente.