Voltando aos primórdios da programação OO
24th May 2008
Depois de um tempo parado, queria falar sobre uma linguagem responsável por roubar meu tempo todos esses dias em um trabalho da disciplina de “Linguagens de Programação” no meu curso… Smalltalk, ou mais precisamente o ambiente Gnu-Smalltalk!
Assim como Python, Smalltalk é uma linguagem em que tudo é objeto! Bem mais velha que Python, criada na década de 60 pelo pessoal do MIT, essa linguagem possui vários ambientes como Squeak, Gnu-Smalltalk, etc na qual é dependente, mudando um pouco sua sintaxe para cada um deles.
O proveito que tirei dessa linguagem, foi trabalhar em cima do paradigma OO de forma mais consistente e intuitiva. Sem dúvida aumentei meus conhecimentos em programação OO e uma boa prática será aplicar esses conhecimentos em outras linguagens que também carregam esse paradigma (Python :)).
A seguir, um exemplo simples da um série matemática que eu gosto, a série de fibonacci:
1º começo declarando uma classe:
Object subclass: #Fibonacci
instanceVariableNames: ”
classVariableNames: ”
poolDictionaries: ”
!
Depois documento os métodos que irei utilizar e escrevo o método chamado “calcula”:
! Fibonacci methodsFor: ’série de fibonacci’ !
calcula: n
| conj |
n < 2
ifTrue: [^n]
ifFalse: [conj := Array new: n.
____conj at: 1 put: 0.
____conj at: 2 put: 1.
____ 3 to: n do: [:i |
____ conj at: i put: ((conj at: (i - 2)) + (conj at: (i - 1)))].
____ ^conj
].
!!
Repare que cada expressão é terminada com um ponto “.”, exceto a última expressão do método que pode vir ou não um ponto.
Definimos o fim do método com uma exclamação “!”, ou se for o último método da classe como no meu exemplo, é colocado duas exclamações, a primeira finalizando o método e a segunda finalizando a classe.
O sinal de circunflexo “^” antes de um objeto, define o retorno de um valor. De acordo com o exemplo, se o parâmetro “n” for menor que 2, retorna o valor dele mesmo, senão é feito o algoritmo depositando a sequência dentro de um array declarado com o tamanho do “n” passado.
Por fim, pegamos um número passado como parâmetro no terminal e instanciamos a classe “Fibonacci” para o objeto “x”:
args := Smalltalk arguments.
x := Fibonacci new.
Com o objeto “x” instanciado, chamamos o método calcula passando como parâmetro, o número digitado pelo usuário no terminal:
(x calcula: (args at: 1) asInteger) printNl.
Agora é só salvar o código e executá-lo da seguinte forma na linha de comando (Baixe-o aqui se preferir):
gst fibonacci.st -a 7
Onde “gst” é o compilador, “fibonacci.st” é o nome do fonte, “-a” diz que queremos passar um parâmetro logo a frente e 7 é a quantidade de números da sequência que queremos imprimir.
No Ubuntu, o pacote chama-se “gnu-smalltalk”. Para instalar é só usar o aptitude ou outro gerenciador de pacotes que estão acostumados e sair brincando!
Posted in Smalltalk | 3 Comments »