smalltalk - usp · smalltalk nuryarosquipa julissavillanueva marcostejada departamento de ciência...

28
Smalltalk Nury Arosquipa Julissa Villanueva Marcos Tejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1 / 28

Upload: others

Post on 03-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/28

Smalltalk

Nury Arosquipa Julissa Villanueva Marcos Tejada

Departamento de Ciência da ComputaçãoUniversidade de São Paulo

2016

1 / 28

Page 2: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade 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

Page 3: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/28

O Dynabook

3 / 28

Page 4: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/28

Um pouco de história

4 / 28

Page 5: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/28

O que é Smalltalk?

SmalltalkLinguagem + Bibliotecas + Ferramentas + Metodologia

5 / 28

Page 6: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 7: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 8: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 9: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/28

A Metodologia

I OO A/D Métodos (OBA)I Padrões de Desenho OOI Linguagens de Domínio-Específico

9 / 28

Page 10: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 11: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 12: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 13: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/28

O Repositório

O repositório no Pharo refere-se ao projeto Monticello.

13 / 28

Page 14: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 15: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/28

15 / 28

Page 16: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/28

Mensagens

I Mensagens Unarias

I1 class

SmallInteger

IDate today

2 June 2016

I Mensagens Binarias

I1 + 2

3

I2 > 3

false

16 / 28

Page 17: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 18: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 19: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 20: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 21: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 22: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 23: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/28

Booleanos e Condicionais

As condicionais tradicionais (if, else, while) são mensagens enviadaspara tipos booleanos.

23 / 28

Page 24: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 25: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/28

Ambiente Pharo - Demo

25 / 28

Page 26: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/28

Ambiente Pharo - Demo

26 / 28

Page 27: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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

Page 28: Smalltalk - USP · Smalltalk NuryArosquipa JulissaVillanueva MarcosTejada Departamento de Ciência da Computação Universidade de São Paulo 2016 1/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