smalltalk - usp · smalltalk nuryarosquipa julissavillanueva marcostejada departamento de ciência...
TRANSCRIPT
Smalltalk
Nury Arosquipa Julissa Villanueva Marcos Tejada
Departamento de Ciência da ComputaçãoUniversidade de São Paulo
2016
1 / 28
Agenda
Um pouco de história
Então, o que é Smalltalk?
Componentes
Conceitos Básicos do Ambiente
Mensagens
Blocos, Laços, Coleções
Booleanos e Condicionais
Ambiente Pharo
2 / 28
O Dynabook
3 / 28
Um pouco de história
4 / 28
O que é Smalltalk?
SmalltalkLinguagem + Bibliotecas + Ferramentas + Metodologia
5 / 28
A linguagem
I Concisa, expressiva, legívelI Tudo é um objeto (realmente tudo)I Toda a atividade é message-passingI Trivial syntaxI As estruturas de controle escritas em Smalltalk
I Mensagens aos Booleans, Blocks, etc.I Significa que eles são extensíveis (!)
I Totalmente Reflexivo
6 / 28
As Bibliotecas
I Polimorfismo (muito utilizado)I Padrões de Desenho OOI Gráficos e janelasI Todas as classes são extensíveis (!)
7 / 28
As Ferramentas
I Window-based GUI e FerramentasI Browsers, Inspectors e EditorsI Regras de Reúso (Programador como Reader project)I Pluggable look-and-feelI Ferramentas Open-source
8 / 28
A Metodologia
I OO A/D Métodos (OBA)I Padrões de Desenho OOI Linguagens de Domínio-Específico
9 / 28
Então, o que é Smalltalk?
I “ The Smalltalk Programming Language”I A linguagemI (Class) As BibliotecasI (Integrado) Ambiente de DesenvolvimentoI Série de livrosI Sistema operacional?I Look-and-feel?
10 / 28
Componentes
SmalltalkSistema baseado em imagem (Image-Based)O sistema Smalltalk Pharo é composto pelos seguintescomponentes principais:
I Virtual Machine (VM): é a única parte que é dependente tantodo hardware quanto do sistema operacional
I Sources: arquivo que contém o código-fonte de todas as partesdo sistema Smalltalk e que não muda
I Image: é todo o sistema Smalltalk
11 / 28
O que é um sistema baseado em imagem?
A imagem fica armazenada em dois arquivos:I Arquivo ".image": contém todas as classes e métodos, mas
também os estados de todos os objetos.I Arquivo ".changes": contém um log de todas as mudanças no
código-fonte do sistema.
12 / 28
O Repositório
O repositório no Pharo refere-se ao projeto Monticello.
13 / 28
Conceitos Básicos do Ambiente
I Navigator, Widgets, SuppliesI Workspace
I menu do botão da direita: explain, do it, print it, inspect it,debug it
I TranscriptI Message NamesI Method FinderI System Browser
I pacotes, hierarquia, classes, protocólos, métodos, atributos,variáveis compartilhadas
I File List
14 / 28
15 / 28
Mensagens
I Mensagens Unarias
I1 class
SmallInteger
IDate today
2 June 2016
I Mensagens Binarias
I1 + 2
3
I2 > 3
false
16 / 28
Mensagens
I Mensagens de Palavra-chave
I 1 to: 5
I Transcript show:’hello world’
I ’hello world’ copyFrom: 2 to: 7
17 / 28
Precedência de Mensagens
(Mensagen) > Unario > Binario > Palavra-chaveDa esquerda para direita
I 1 + ’hola’ size
I Transcript show:(’hello world’ copyFrom: 2 to: 7 )
18 / 28
Envio de múltiplas mensagens (Cascata)
Com o símbolo ";"podemos enviar múltiplas mensagens para ummesmo objeto.
I
aCollection := OrderedCollection new .aCollection add: 1.aCollection add: 2
I
aCollection := OrderedCollection new add: 1;add: 2;yourself
19 / 28
Blocos
São tipos de métodos anônimos.
I [ 2 + 6 ]
I Podem ter argumentos
[ :x | x + 2 ]
I Podem ser guardados em variáveis
| add2 |add2 := [ :x | x + 2 ].add2 value:5
20 / 28
Laços
Os laços são expressados como mensagens para números, coleções.
4 timesRepeat: [Transcript show: ’hello’; cr] –
20 to: 25 do: [:i |Transcript show:i ;cr]
21 / 28
Coleções
I#(15 10 19 68) do: [ :i | Transcript show: i ; cr ]
I #(2 3 4 5 6) includes: 6
Ibloco := [:array | array do:[ :i | i+1] ].v := bloco value: #(1 2 3 4 5)
22 / 28
Booleanos e Condicionais
As condicionais tradicionais (if, else, while) são mensagens enviadaspara tipos booleanos.
23 / 28
Condicionais e Repetição Condicional
I
(n < 20)ifTrue: [n := n+1]ifFalse: [n := n+2]
I [ a >= 10] whileFalse: [a := a+1]
I [ a <= 10] whileTrue: [a := a+1]
24 / 28
Ambiente Pharo - Demo
25 / 28
Ambiente Pharo - Demo
26 / 28
Exemplo LightsOut
Código exemplo em http://smalltalkhub.com
MCHttpRepositorylocation: ’http://smalltalkhub.com/mc/ademirtc/poo2016lightsout/main’user: ’’password: ’’
I Download pharoI Go Monticello BrowserI Add MCHttpRepositoryI Open Playground, type: LOGame new openInWorld.I Play :), classes LOCell and LOGame
27 / 28
Referências I
Andrew P. Black Stéphane Ducasse Oscar NierstraszPharo By Example 2013http://pharo.org
Stephen Travis Pope - Why I Still Use Smalltalk http://heaveneverywhere.com/STP_ST80_Talk_Slides.pdf
Programmation objet immersive en Pharohttps://www.fun-mooc.fr/courses/inria/41010/session01/b116d12e24ec484c984831440227ac15
Fabio Konhttp://www.ime.usp.br/~kon/MAC441/notasDeAula.html
28 / 28