MAC 441/5714 - Tópicos de Programação
Orientada a Objetos
Aula 6 - 29/03/2005
Um exemplinho para recordarmos a Sintaxe de Smalltalk:
| umArray umIndice umValor |
umValor := 2.
umArray := Array new: 10.
1 to: 10 do:
[:indice
| umArray at: indice put: (umValor * indice * indice)].
umIndice := 1.
[umIndice <= umArray size]
whileTrue:
[Transcript show: 'O valor na posição: ',
(umIndice printString), ' é ',
(umArray at: umIndice) printString ; cr.
umIndice := umIndice + 1.]
Um bom jeito de aprendermos o estilo de programação em
Smalltalk é vermos como são implementadas as
funções da própria biblioteca. Veja, por exemplo,
como é implementado o método Number>>to:do:
to: stop do: aBlock
"Normally
compiled in-line, and therefore not overridable.
Evaluate
aBlock for each element of the interval (self to: stop by: 1)."
| nextValue |
nextValue :=
self.
[nextValue
<= stop]
whileTrue:
[aBlock value: nextValue.
nextValue := nextValue + 1]
Mais sobre Smalltalk
Expressões Literais
Em Smalltalk temos 5 tipos de literais:
- Números
- 3
30.498
-28
0.0000001
8r457 (octal)
2r0100010110 (binário)
16rAF3D0 (hexa)
1.78e-3 (notação científica)
1/3 (é uma fração que é guardada como tal,
sem perder precisão)
129871234/23948723
- Caracteres
- Strings
- 'óuauêaíó'
'Eu adoro o Smalltalk-80'
'Que carinha chato!'
'Vamos jantar no Alan''s esta noite?'
- Símbolos
- #eu
- um símbolo é um identificador único; eles
se parecem com strings mas cada símbolo é único.
- Arrays
- #(1 2 3)
#(('um' 1) ('dois' 2))
- #[ 2 03 230 95 3 0] (esse é um ByteArray, um tipo
específico de Array)
Arrays são muito utilizadas para muitas coisas em Smalltalk, por
exemplo, para passarmos mais do que 3 argumentos para um bloco:
- bloco := [:a :b :c :d :e |
a + b + c + d]
bloco valueWithArguments: #(1 2 3 4 5)
bloco valueWithPossibleArgs: #(1 2 3 4 5 6 7 8 9 10)
Exercício
- Escrever classes TemperaturaFahrenheit e TemperaturaCelsius que permitam conversão de tipos entre
elas.
- Usar convenção Smalltalk para escrever
métodos no papel:
- NomeDaClasse>>nomeDeMétodoSemParâmetros
- NomeDaClasse>>seletor1:seletor2:seletor3:
Bibliografia
- Smalltalk-80 - The Language and Its Implementation. Adele
Goldberg e David Robson.
Próxima Aula
Aula Anterior
Página de MAC 441/5714
Página do Fabio
Página do DCC